HRModuleDAL.cs 262 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:HRModuleDAL.cs
  5. * 2.功能描述:员工管理更新db逻辑处理
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 王鑫 2014/09/12 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Text;
  14. using Dongke.IBOSS.PRD.Basics.BaseResources;
  15. using Dongke.IBOSS.PRD.Basics.DataAccess;
  16. using Dongke.IBOSS.PRD.Service.DataModels;
  17. using Dongke.IBOSS.PRD.WCF.DataModels;
  18. using Oracle.DataAccess.Client;
  19. namespace Dongke.IBOSS.PRD.Service.HRModuleLogic
  20. {
  21. /// <summary>
  22. /// 员工管理更新db逻辑处理
  23. /// </summary>
  24. public static class HRModuleDAL
  25. {
  26. #region 员工档案
  27. /// <summary>
  28. /// 添加员工档案
  29. /// </summary>
  30. /// <param name="staffInfo">员工实体类</param>
  31. /// <param name="sUserInfo">用户基本信息</param>
  32. /// <param name="staffPhoto">员工图片集</param>
  33. /// <returns>HRResultEntity</returns>
  34. public static HRResultEntity AddStaffInfo(StaffEntity staffInfo, SUserInfo sUserInfo, List<StaffPhotoEntity> staffPhoto)
  35. {
  36. HRResultEntity resultEnity = new HRResultEntity();
  37. if (staffInfo == null)
  38. {
  39. resultEnity.OperateStatus = 0;
  40. return resultEnity;
  41. }
  42. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  43. try
  44. {
  45. oracleTrConn.Connect();
  46. string nextval = "select SEQ_HR_STAFF_STAFFID.nextval from dual";
  47. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(nextval));
  48. #region 向员工档案表插入数据
  49. string sqlString = " INSERT INTO TP_HR_STAFF "
  50. + "(StaffID,StaffCode"
  51. + ",StaffName"
  52. + ",IDCardNo"
  53. + ",Birthday"
  54. + ",Gender"
  55. + ",MaritalStatus"
  56. + ",HomeTown"
  57. + ",PolicitalStatus"
  58. + ",National"
  59. + ",Educational"
  60. + ",Graduated"
  61. + ",SpecialField"
  62. + ",Telephone"
  63. + ",Height"
  64. + ",BloodGroup"
  65. + ",Weight"
  66. + ",Address"
  67. + ",LaidOff"
  68. + ",Disability"
  69. + ",JoinPartyDate"
  70. + ",Email"
  71. + ",OpeningBank"
  72. + ",AccountNo"
  73. + ",Remarks"
  74. //+ ",UserID"
  75. + ",AccountID"
  76. + ",ValueFlag"
  77. + ",CreateUserID"
  78. + ",UpdateUserID"
  79. + ",CreateTime"
  80. + ",UpdateTime"
  81. + ",OPTimeStamp"
  82. + ",StaffStatus"
  83. + ",OrganizationID"
  84. + ",Jobs"
  85. + ",Post"
  86. + ")"
  87. + " VALUES"
  88. + " (:StaffID"
  89. + " ,:StaffCode"
  90. + ",:StaffName"
  91. + ",:IDCardNo"
  92. + ",:Birthday"
  93. + ",:Gender"
  94. + ",:MaritalStatus"
  95. + ",:HomeTown"
  96. + ",:PolicitalStatus"
  97. + ",:National"
  98. + ",:Educational"
  99. + ",:Graduated"
  100. + ",:SpecialField"
  101. + ",:Telephone"
  102. + ",:Height"
  103. + ",:BloodGroup"
  104. + ",:Weight"
  105. + ",:Address"
  106. + ",:LaidOff"
  107. + ",:Disability"
  108. + ",:JoinPartyDate"
  109. + ",:Email"
  110. + ",:OpeningBank"
  111. + ",:AccountNo"
  112. + ",:Remarks"
  113. //+ ",:UserID"
  114. + ",:AccountID"
  115. + ",:ValueFlag"
  116. + ",:CreateUserID"
  117. + ",:UpdateUserID"
  118. + ",sysdate"
  119. + ",sysdate"
  120. + ",FUN_CMN_GetAccountDate(:AccountID)"
  121. + ",:StaffStatus"
  122. + ",:OrganizationID"
  123. + ",:Jobs"
  124. + ",:Post"
  125. + " )";
  126. OracleParameter[] parmeters = new OracleParameter[]
  127. {
  128. new OracleParameter(":StaffID",id),
  129. new OracleParameter(":StaffCode",staffInfo.StaffCode),
  130. new OracleParameter(":StaffName",staffInfo.StaffName),
  131. new OracleParameter(":IDCardNo",staffInfo.IDCardNo),
  132. new OracleParameter(":Birthday",staffInfo.Birthday),
  133. new OracleParameter(":Gender",staffInfo.Gender),
  134. new OracleParameter(":MaritalStatus",staffInfo.MaritalStatus),
  135. new OracleParameter(":HomeTown",staffInfo.HomeTown),
  136. new OracleParameter(":PolicitalStatus",staffInfo.PolicitalStatus),
  137. new OracleParameter(":National",staffInfo.National),
  138. new OracleParameter(":Educational",staffInfo.Educational),
  139. new OracleParameter(":Graduated",staffInfo.Graduated),
  140. new OracleParameter(":SpecialField",staffInfo.SpecialField),
  141. new OracleParameter(":Telephone",staffInfo.Telephone),
  142. new OracleParameter(":Height",staffInfo.Height),
  143. new OracleParameter(":BloodGroup",staffInfo.BloodGroup),
  144. new OracleParameter(":Weight",staffInfo.Weight),
  145. new OracleParameter(":Address",staffInfo.Address),
  146. new OracleParameter(":LaidOff",staffInfo.LaidOff?1:0),
  147. new OracleParameter(":Disability",staffInfo.Disability?1:0),
  148. new OracleParameter(":JoinPartyDate",staffInfo.JoinPartyDate),
  149. new OracleParameter(":Email",staffInfo.Email),
  150. new OracleParameter(":OpeningBank",staffInfo.OpeningBank),
  151. new OracleParameter(":AccountNo",staffInfo.AccountNo),
  152. new OracleParameter(":Remarks",staffInfo.Remarks),
  153. // new OracleParameter(":UserID",sUserInfo.UserID),
  154. new OracleParameter(":AccountID",sUserInfo.AccountID),
  155. new OracleParameter(":ValueFlag",staffInfo.ValueFlag?1:0),
  156. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  157. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  158. new OracleParameter(":StaffStatus",staffInfo.StaffStatus),
  159. new OracleParameter(":OrganizationID",OracleDbType.Int32, staffInfo.OrganizationID, ParameterDirection.Input ),
  160. new OracleParameter(":Jobs",OracleDbType.Int32, staffInfo.Jobs, ParameterDirection.Input ),
  161. new OracleParameter(":Post",OracleDbType.Int32, staffInfo.Post, ParameterDirection.Input ),
  162. };
  163. #endregion
  164. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  165. resultEnity.HRStaffID = id;
  166. #region 向TP_HR_STAFFPHOTO插入数据
  167. StringBuilder sbSql = new StringBuilder();
  168. //此处添加图片信息
  169. foreach (StaffPhotoEntity img in staffPhoto)
  170. {
  171. // 缩略图
  172. img.Thumbnail = CommonModuleLogic.CommonModuleLogic.ConvertThumbnail(img.Photo);
  173. sbSql.Clear();
  174. sbSql.Append("Insert into TP_HR_STAFFPHOTO");
  175. sbSql.Append("( StaffID,Thumbnail,Photo,AccountID,");
  176. sbSql.Append("CreateUserID,UpdateUserID)");
  177. sbSql.Append(" VALUES(:StaffID,:Thumbnail,:Photo,:AccountID,");
  178. sbSql.Append(":CreateUserID,:UpdateUserID)");
  179. OracleParameter[] imgParas = new OracleParameter[] {
  180. new OracleParameter(":StaffID",OracleDbType.Int32,
  181. id,ParameterDirection.Input),
  182. new OracleParameter(":Thumbnail",OracleDbType.Blob,
  183. img.Thumbnail,ParameterDirection.Input),
  184. new OracleParameter(":Photo",OracleDbType.Blob,
  185. img.Photo,ParameterDirection.Input),
  186. new OracleParameter(":AccountID",OracleDbType.Int32,
  187. sUserInfo.AccountID,ParameterDirection.Input),
  188. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  189. sUserInfo.UserID,ParameterDirection.Input),
  190. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  191. sUserInfo.UserID,ParameterDirection.Input),
  192. };
  193. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
  194. }
  195. #endregion
  196. oracleTrConn.Commit();
  197. oracleTrConn.Disconnect();
  198. return resultEnity;
  199. }
  200. catch (Exception ex)
  201. {
  202. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  203. {
  204. oracleTrConn.Rollback();
  205. oracleTrConn.Disconnect();
  206. }
  207. throw ex;
  208. }
  209. finally
  210. {
  211. if (oracleTrConn.ConnState == ConnectionState.Open)
  212. {
  213. oracleTrConn.Rollback();
  214. oracleTrConn.Disconnect();
  215. }
  216. }
  217. }
  218. /// <summary>
  219. /// 导入员工档案
  220. /// </summary>
  221. /// <param name="staffInfo">员工信息</param>
  222. /// <param name="sUserInfo">用户基本信息</param>
  223. /// <returns>ServiceResultEntity</returns>
  224. public static ServiceResultEntity ImportStaffInfo(DataTable staffInfo, SUserInfo sUserInfo)
  225. {
  226. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  227. try
  228. {
  229. oracleTrConn.Connect();
  230. //StringBuilder staffCodes = new StringBuilder();
  231. //foreach (DataRow item in staffInfo.Rows)
  232. //{
  233. // staffCodes.Append("'" + item["员工编码"] + "',");
  234. //}
  235. //string sql = "select StaffCode from TP_HR_Staff where StaffCode in ("
  236. // + staffCodes.ToString(0, staffCodes.Length - 1) + ")";
  237. //DataTable existsCode = oracleTrConn.GetSqlResultToDt(sql);
  238. // if (existsCode != null && existsCode.Rows.Count > 0)
  239. // {
  240. // ServiceResultEntity sre = new ServiceResultEntity();
  241. // sre.Status = Constant.ServiceResultStatus.Other;
  242. // staffCodes.Clear();
  243. // staffCodes = new StringBuilder();
  244. // foreach (DataRow item in existsCode.Rows)
  245. // {
  246. // staffCodes.Append(item["StaffCode"] + ",");
  247. // }
  248. // sre.Message = "系统中已存在以下员工编码:" + System.Environment.NewLine
  249. // + staffCodes.ToString(0, staffCodes.Length - 1);
  250. // return sre;
  251. // }
  252. string sql = "select StaffCode from TP_HR_Staff where StaffCode = '{0}'";
  253. List<string> staffCodes = new List<string>();
  254. string nextval = "select SEQ_HR_STAFF_STAFFID.nextval from dual";
  255. #region 向员工档案表插入数据
  256. string sqlString = " INSERT INTO TP_HR_STAFF "
  257. + "(StaffID,StaffCode"
  258. + ",StaffName"
  259. + ",IDCardNo"
  260. + ",Birthday"
  261. + ",Gender"
  262. + ",MaritalStatus"
  263. + ",HomeTown"
  264. + ",PolicitalStatus"
  265. + ",National"
  266. + ",Educational"
  267. + ",Graduated"
  268. + ",SpecialField"
  269. + ",Telephone"
  270. + ",Height"
  271. + ",BloodGroup"
  272. + ",Weight"
  273. + ",Address"
  274. + ",LaidOff"
  275. + ",Disability"
  276. + ",JoinPartyDate"
  277. + ",Email"
  278. + ",OpeningBank"
  279. + ",AccountNo"
  280. + ",Remarks"
  281. + ",AccountID"
  282. + ",ValueFlag"
  283. + ",CreateUserID"
  284. + ",UpdateUserID"
  285. + ",CreateTime"
  286. + ",UpdateTime"
  287. + ",OrganizationID"
  288. + ",Jobs"
  289. + ",Post"
  290. + ",StaffStatus"
  291. + ",EntryDate"
  292. + ")"
  293. + " VALUES"
  294. + " (:StaffID"
  295. + " ,:StaffCode"
  296. + ",:StaffName"
  297. + ",:IDCardNo"
  298. + ",:Birthday"
  299. + ",:Gender"
  300. + ",:MaritalStatus"
  301. + ",:HomeTown"
  302. + ",:PolicitalStatus"
  303. + ",:National"
  304. + ",:Educational"
  305. + ",:Graduated"
  306. + ",:SpecialField"
  307. + ",:Telephone"
  308. + ",:Height"
  309. + ",:BloodGroup"
  310. + ",:Weight"
  311. + ",:Address"
  312. + ",:LaidOff"
  313. + ",:Disability"
  314. + ",:JoinPartyDate"
  315. + ",:Email"
  316. + ",:OpeningBank"
  317. + ",:AccountNo"
  318. + ",:Remarks"
  319. + ",:AccountID"
  320. + ",'1'"
  321. + ",:CreateUserID"
  322. + ",:CreateUserID"
  323. + ",sysdate"
  324. + ",sysdate"
  325. + ",:OrganizationID"
  326. + ",:Jobs"
  327. + ",:Post"
  328. + ",:StaffStatus"
  329. + ",decode(:StaffStatus, 0, null, trunc(sysdate))"
  330. + " )";
  331. List<int> ids = new List<int>();
  332. foreach (DataRow item in staffInfo.Rows)
  333. {
  334. // 已存在不影响 其他导入 chenxy 2019-10-14
  335. object objCode = oracleTrConn.GetSqlResultToObj(string.Format(sql, item["员工编码"]));
  336. if (!string.IsNullOrEmpty(objCode + ""))
  337. {
  338. staffCodes.Add(objCode + "");
  339. continue;
  340. }
  341. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(nextval));
  342. ids.Add(id);
  343. OracleParameter[] parmeters = new OracleParameter[]
  344. {
  345. new OracleParameter(":StaffID",id),
  346. new OracleParameter(":StaffCode",item["员工编码"]),
  347. new OracleParameter(":StaffName",item["员工姓名"]),
  348. new OracleParameter(":IDCardNo",item["身份证号码"]),
  349. new OracleParameter(":Birthday", OracleDbType.Date, item["生日"], ParameterDirection.Input ),
  350. new OracleParameter(":Gender",OracleDbType.Char, item["性别"], ParameterDirection.Input ),
  351. new OracleParameter(":MaritalStatus",OracleDbType.Int32, int.Parse(item["婚姻状况"].ToString()), ParameterDirection.Input ),
  352. new OracleParameter(":HomeTown",OracleDbType.NVarchar2, item["籍贯"], ParameterDirection.Input ),
  353. new OracleParameter(":PolicitalStatus",OracleDbType.NVarchar2, item["政治面貌"], ParameterDirection.Input ),
  354. new OracleParameter(":National",OracleDbType.Int32, int.Parse(item["民族"].ToString()), ParameterDirection.Input ),
  355. new OracleParameter(":Educational",OracleDbType.Int32,int.Parse( item["学历"].ToString()), ParameterDirection.Input ),
  356. new OracleParameter(":Graduated",OracleDbType.NVarchar2, item["毕业学校"], ParameterDirection.Input ),
  357. new OracleParameter(":SpecialField",OracleDbType.NVarchar2, item["专业"], ParameterDirection.Input ),
  358. new OracleParameter(":Telephone",OracleDbType.NVarchar2, item["联系电话"], ParameterDirection.Input ),
  359. new OracleParameter(":Height",OracleDbType.Decimal, item["身高(CM)"], ParameterDirection.Input ),
  360. new OracleParameter(":BloodGroup",OracleDbType.NVarchar2, item["血型"], ParameterDirection.Input ),
  361. new OracleParameter(":Weight",OracleDbType.Decimal, item["体重(KG)"], ParameterDirection.Input ),
  362. new OracleParameter(":Address",OracleDbType.NVarchar2, item["家庭住址"], ParameterDirection.Input ),
  363. new OracleParameter(":LaidOff",OracleDbType.Char, item["下岗职工"], ParameterDirection.Input ),
  364. new OracleParameter(":Disability",OracleDbType.Char, item["残疾职工"], ParameterDirection.Input ),
  365. new OracleParameter(":JoinPartyDate",OracleDbType.Date, item["入党日期"], ParameterDirection.Input ),
  366. new OracleParameter(":Email",OracleDbType.NVarchar2, item["电子邮箱"], ParameterDirection.Input ),
  367. new OracleParameter(":OpeningBank",OracleDbType.NVarchar2, item["开户行"], ParameterDirection.Input ),
  368. new OracleParameter(":AccountNo",OracleDbType.NVarchar2, item["开户账号"], ParameterDirection.Input ),
  369. new OracleParameter(":Remarks",OracleDbType.NVarchar2, item["备注"], ParameterDirection.Input ),
  370. new OracleParameter(":AccountID",sUserInfo.AccountID),
  371. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  372. new OracleParameter(":OrganizationID",OracleDbType.Int32, item["部门(全称)"].ToString()==""?null:item["部门(全称)"], ParameterDirection.Input ),
  373. new OracleParameter(":Jobs",OracleDbType.Int32, item["工种"].ToString()==""?null:item["工种"], ParameterDirection.Input ),
  374. new OracleParameter(":Post",OracleDbType.Int32, item["职务"].ToString()==""?null:item["职务"], ParameterDirection.Input ),
  375. new OracleParameter(":StaffStatus",OracleDbType.Int32, item["StaffStatus"], ParameterDirection.Input ),
  376. };
  377. oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  378. }
  379. #endregion
  380. oracleTrConn.Commit();
  381. oracleTrConn.Disconnect();
  382. ServiceResultEntity result = new ServiceResultEntity();
  383. if (staffCodes.Count > 0)
  384. {
  385. result.Status = Constant.ServiceResultStatus.Other;
  386. result.Message = "系统中已存在以下员工编码(其他已导入):" + System.Environment.NewLine
  387. + string.Join(",", staffCodes);
  388. return result;
  389. }
  390. result.Status = Constant.ServiceResultStatus.Success;
  391. result.Result = string.Join(",", ids);
  392. return result;
  393. }
  394. catch (Exception ex)
  395. {
  396. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  397. {
  398. oracleTrConn.Rollback();
  399. oracleTrConn.Disconnect();
  400. }
  401. throw ex;
  402. }
  403. finally
  404. {
  405. if (oracleTrConn.ConnState == ConnectionState.Open)
  406. {
  407. oracleTrConn.Rollback();
  408. oracleTrConn.Disconnect();
  409. }
  410. }
  411. }
  412. /// <summary>
  413. /// 更新员工档案
  414. /// </summary>
  415. /// <param name="staffInfo">员工实体类</param>
  416. /// <param name="sUserInfo">用户基本信息</param>
  417. /// <param name="staffPhoto">员工图片集</param>
  418. /// <returns>HRResultEntity</returns>
  419. public static HRResultEntity EditStaffInfo(StaffEntity staffInfo, SUserInfo sUserInfo, List<StaffPhotoEntity> staffPhoto)
  420. {
  421. HRResultEntity resultEnity = new HRResultEntity();
  422. if (staffInfo == null)
  423. {
  424. resultEnity.OperateStatus = 0;
  425. return resultEnity;
  426. }
  427. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  428. try
  429. {
  430. oracleTrConn.Connect();
  431. #region 验证员工档案表时间戳
  432. string sql = "SELECT OPTimeStamp FROM tp_hr_staff"
  433. + " WHERE Staffid = " + staffInfo.StaffID + " and OPTimeStamp = :OPTimeStamp";
  434. OracleParameter[] parmetersSql = new OracleParameter[]
  435. {
  436. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffInfo.OPTimeStamp, ParameterDirection.Input),
  437. };
  438. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, parmetersSql);
  439. if (returnDataset != null
  440. && returnDataset.Tables[0].Rows.Count == 0)
  441. {
  442. oracleTrConn.Commit();
  443. oracleTrConn.Disconnect();
  444. resultEnity.OperateStatus = -3;
  445. return resultEnity;
  446. }
  447. #endregion
  448. #region 更新员工档案表中的数据
  449. string sqlString = " UPDATE TP_HR_STAFF SET"
  450. + " StaffCode=:StaffCode"
  451. + ",StaffName=:StaffName"
  452. + ",IDCardNo=:IDCardNo"
  453. + ",Birthday=:Birthday"
  454. + ",Gender=:Gender"
  455. + ",MaritalStatus=:MaritalStatus"
  456. + ",HomeTown=:HomeTown"
  457. + ",PolicitalStatus=:PolicitalStatus"
  458. + ",National=:National"
  459. + ",Educational=:Educational"
  460. + ",Graduated=:Graduated"
  461. + ",SpecialField=:SpecialField"
  462. + ",Telephone=:Telephone"
  463. + ",Height=:Height"
  464. + ",BloodGroup=:BloodGroup"
  465. + ",Weight=:Weight"
  466. + ",Address=:Address"
  467. + ",LaidOff=:LaidOff"
  468. + ",Disability=:Disability"
  469. + ",JoinPartyDate=:JoinPartyDate"
  470. + ",Email=:Email"
  471. + ",OpeningBank=:OpeningBank"
  472. + ",AccountNo=:AccountNo"
  473. + ",Remarks=:Remarks"
  474. + ",ValueFlag=:ValueFlag"
  475. + ",UpdateUserID=:UpdateUserID"
  476. + ",OrganizationID=:OrganizationID"
  477. + ",Post=:Post"
  478. + ",Jobs=:Jobs"
  479. + " where staffid=" + staffInfo.StaffID;
  480. OracleParameter[] parmeters = new OracleParameter[]
  481. {
  482. new OracleParameter(":StaffCode",staffInfo.StaffCode),
  483. new OracleParameter(":StaffName",staffInfo.StaffName),
  484. new OracleParameter(":IDCardNo",staffInfo.IDCardNo),
  485. new OracleParameter(":Birthday",staffInfo.Birthday),
  486. new OracleParameter(":Gender",staffInfo.Gender),
  487. new OracleParameter(":MaritalStatus",staffInfo.MaritalStatus),
  488. new OracleParameter(":HomeTown",staffInfo.HomeTown),
  489. new OracleParameter(":PolicitalStatus",staffInfo.PolicitalStatus),
  490. new OracleParameter(":National",staffInfo.National),
  491. new OracleParameter(":Educational",staffInfo.Educational),
  492. new OracleParameter(":Graduated",staffInfo.Graduated),
  493. new OracleParameter(":SpecialField",staffInfo.SpecialField),
  494. new OracleParameter(":Telephone",staffInfo.Telephone),
  495. new OracleParameter(":Height",staffInfo.Height),
  496. new OracleParameter(":BloodGroup",staffInfo.BloodGroup),
  497. new OracleParameter(":Weight",staffInfo.Weight),
  498. new OracleParameter(":Address",staffInfo.Address),
  499. new OracleParameter(":LaidOff",staffInfo.LaidOff?1:0),
  500. new OracleParameter(":Disability",staffInfo.Disability?1:0),
  501. new OracleParameter(":JoinPartyDate",staffInfo.JoinPartyDate),
  502. new OracleParameter(":Email",staffInfo.Email),
  503. new OracleParameter(":OpeningBank",staffInfo.OpeningBank),
  504. new OracleParameter(":AccountNo",staffInfo.AccountNo),
  505. new OracleParameter(":Remarks",staffInfo.Remarks),
  506. new OracleParameter(":ValueFlag",staffInfo.ValueFlag?1:0),
  507. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  508. new OracleParameter(":OrganizationID",staffInfo.OrganizationID),
  509. new OracleParameter(":Post",staffInfo.Post),
  510. new OracleParameter(":Jobs",staffInfo.Jobs),
  511. };
  512. #endregion
  513. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  514. resultEnity.HRStaffID = staffInfo.StaffID;
  515. #region 更新员工照片表数据 注释掉
  516. /*
  517. StringBuilder sbSql = new StringBuilder();
  518. foreach (StaffPhotoEntity img in staffPhoto)
  519. {
  520. sbSql.Clear();
  521. string sqlExist = "SELECT 1 FROM TP_HR_STAFFPHOTO"
  522. + " WHERE StaffPhotoID = " + img.StaffPhotoID + " and AccountID = :AccountID";
  523. OracleParameter[] parmetersExist = new OracleParameter[]
  524. {
  525. new OracleParameter(":AccountID",sUserInfo.AccountID),
  526. };
  527. DataSet returnDSexist = oracleTrConn.GetSqlResultToDs(sqlExist, parmetersExist);
  528. if (returnDSexist != null
  529. && returnDSexist.Tables[0].Rows.Count == 0)
  530. {
  531. string sqlExistStaff = "SELECT 1 FROM TP_HR_STAFFPHOTO"
  532. + " WHERE StaffID = " + staffInfo.StaffID + " and AccountID = :AccountID";
  533. OracleParameter[] parmetersExistStaff = new OracleParameter[]
  534. {
  535. new OracleParameter(":AccountID",sUserInfo.AccountID),
  536. };
  537. DataSet returnDSexistStaff = oracleTrConn.GetSqlResultToDs(sqlExistStaff, parmetersExistStaff);
  538. if (returnDSexistStaff != null
  539. && returnDSexistStaff.Tables[0].Rows.Count == 0)
  540. {
  541. sbSql.Append("Insert into TP_HR_STAFFPHOTO");
  542. sbSql.Append("(StaffID,Thumbnail,Photo,AccountID,ValueFlag,CreateTime,");
  543. sbSql.Append("CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  544. sbSql.Append(" VALUES(:StaffID,:Thumbnail,:Photo,:AccountID,:ValueFlag,:CreateTime,");
  545. sbSql.Append(":CreateUserID,:UpdateTime,:UpdateUserID,:OPTimeStamp)");
  546. OracleParameter[] imgParas = new OracleParameter[] {
  547. new OracleParameter(":StaffID",OracleDbType.Int32,
  548. staffInfo.StaffID,ParameterDirection.Input),
  549. new OracleParameter(":Thumbnail",OracleDbType.Blob,
  550. img.Thumbnail,ParameterDirection.Input),
  551. new OracleParameter(":Photo",OracleDbType.Blob,
  552. img.Photo,ParameterDirection.Input),
  553. new OracleParameter(":AccountID",OracleDbType.Int32,
  554. sUserInfo.AccountID,ParameterDirection.Input),
  555. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  556. img.ValueFlag,ParameterDirection.Input),
  557. new OracleParameter(":CreateTime",OracleDbType.Date,
  558. DateTime.Now,ParameterDirection.Input),
  559. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  560. sUserInfo.UserID,ParameterDirection.Input),
  561. new OracleParameter(":UpdateTime",OracleDbType.Date,
  562. DateTime.Now,ParameterDirection.Input),
  563. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  564. sUserInfo.UserID,ParameterDirection.Input),
  565. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  566. DateTime.Now,ParameterDirection.Input)
  567. };
  568. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
  569. }
  570. else
  571. {
  572. sbSql.Append(" update TP_HR_STAFFPHOTO");
  573. sbSql.Append(" set Thumbnail=:Thumbnail,Photo=:Photo,AccountID=:AccountID,ValueFlag=:ValueFlag,");
  574. sbSql.Append(" UpdateUserID=:UpdateUserID");
  575. sbSql.Append(" where StaffID=:StaffID");
  576. OracleParameter[] imgParasStaff = new OracleParameter[] {
  577. new OracleParameter(":Thumbnail",OracleDbType.Blob,
  578. img.Thumbnail,ParameterDirection.Input),
  579. new OracleParameter(":Photo",OracleDbType.Blob,
  580. img.Photo,ParameterDirection.Input),
  581. new OracleParameter(":AccountID",OracleDbType.Int32,
  582. sUserInfo.AccountID,ParameterDirection.Input),
  583. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  584. img.ValueFlag,ParameterDirection.Input),
  585. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  586. sUserInfo.UserID,ParameterDirection.Input),
  587. new OracleParameter(":StaffID",OracleDbType.Int32,
  588. staffInfo.StaffID,ParameterDirection.Input),};
  589. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParasStaff);
  590. }
  591. }
  592. else
  593. {
  594. sbSql.Clear();
  595. sbSql.Append(" update TP_HR_STAFFPHOTO");
  596. sbSql.Append(" set StaffID=:StaffID,Thumbnail=:Thumbnail,Photo=:Photo,AccountID=:AccountID,ValueFlag=:ValueFlag,");
  597. sbSql.Append(" UpdateUserID=:UpdateUserID");
  598. sbSql.Append(" where STAFFPHOTOID=:STAFFPHOTOID");
  599. OracleParameter[] imgParas = new OracleParameter[] {
  600. new OracleParameter(":StaffID",OracleDbType.Int32,
  601. staffInfo.StaffID,ParameterDirection.Input),
  602. new OracleParameter(":Thumbnail",OracleDbType.Blob,
  603. img.Thumbnail,ParameterDirection.Input),
  604. new OracleParameter(":Photo",OracleDbType.Blob,
  605. img.Photo,ParameterDirection.Input),
  606. new OracleParameter(":AccountID",OracleDbType.Int32,
  607. sUserInfo.AccountID,ParameterDirection.Input),
  608. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  609. img.ValueFlag,ParameterDirection.Input),
  610. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  611. sUserInfo.UserID,ParameterDirection.Input),
  612. new OracleParameter(":STAFFPHOTOID",OracleDbType.Int32,
  613. img.StaffPhotoID,ParameterDirection.Input)
  614. };
  615. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
  616. }
  617. }
  618. */
  619. #endregion
  620. #region 先删除图片
  621. string strDel = "delete TP_HR_STAFFPHOTO where StaffID=:staffID";
  622. OracleParameter[] imgParas = new OracleParameter[] {
  623. new OracleParameter(":staffID",OracleDbType.Int32,
  624. staffInfo.StaffID,ParameterDirection.Input),
  625. };
  626. oracleTrConn.ExecuteNonQuery(strDel, imgParas);
  627. #endregion
  628. #region 向TP_HR_STAFFPHOTO插入数据
  629. StringBuilder sbSql = new StringBuilder();
  630. //此处添加图片信息
  631. foreach (StaffPhotoEntity img in staffPhoto)
  632. {
  633. // 缩略图
  634. img.Thumbnail = CommonModuleLogic.CommonModuleLogic.ConvertThumbnail(img.Photo);
  635. sbSql.Clear();
  636. sbSql.Append("Insert into TP_HR_STAFFPHOTO");
  637. sbSql.Append("( StaffID,Thumbnail,Photo,AccountID,");
  638. sbSql.Append("CreateUserID,UpdateUserID)");
  639. sbSql.Append(" VALUES(:StaffID,:Thumbnail,:Photo,:AccountID,");
  640. sbSql.Append(":CreateUserID,:UpdateUserID)");
  641. imgParas = new OracleParameter[] {
  642. new OracleParameter(":StaffID",OracleDbType.Int32,
  643. staffInfo.StaffID,ParameterDirection.Input),
  644. new OracleParameter(":Thumbnail",OracleDbType.Blob,
  645. img.Thumbnail,ParameterDirection.Input),
  646. new OracleParameter(":Photo",OracleDbType.Blob,
  647. img.Photo,ParameterDirection.Input),
  648. new OracleParameter(":AccountID",OracleDbType.Int32,
  649. sUserInfo.AccountID,ParameterDirection.Input),
  650. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  651. sUserInfo.UserID,ParameterDirection.Input),
  652. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  653. sUserInfo.UserID,ParameterDirection.Input),
  654. };
  655. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), imgParas);
  656. }
  657. #endregion
  658. oracleTrConn.Commit();
  659. oracleTrConn.Disconnect();
  660. return resultEnity;
  661. }
  662. catch (Exception ex)
  663. {
  664. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  665. {
  666. oracleTrConn.Rollback();
  667. oracleTrConn.Disconnect();
  668. }
  669. throw ex;
  670. }
  671. finally
  672. {
  673. if (oracleTrConn.ConnState == ConnectionState.Open)
  674. {
  675. oracleTrConn.Rollback();
  676. oracleTrConn.Disconnect();
  677. }
  678. }
  679. }
  680. /// <summary>
  681. /// 设置禁用员工
  682. /// </summary>
  683. /// <param name="staffid">员工ID</param>
  684. /// <param name="sUserInfo">用户基本信息</param>
  685. /// <returns>HRResultEntity</returns>
  686. public static HRResultEntity SetValueFlag(int staffid, SUserInfo sUserInfo)
  687. {
  688. HRResultEntity resultEnity = new HRResultEntity();
  689. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  690. try
  691. {
  692. oracleTrConn.Connect();
  693. string sql = "SELECT Count(*) FROM TP_HR_STAFF WHERE staffid=" + staffid + " AND StaffStatus in(0,3) AND ValueFlag=1";
  694. string strCount = oracleTrConn.GetSqlResultToStr(sql);
  695. if (!"0".Equals(strCount))
  696. {
  697. string sqlString = "Update TP_HR_STAFF SET ValueFlag=0,UpdateUserID =" + sUserInfo.UserID
  698. + " WHERE staffid=" + staffid;
  699. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString);
  700. string sqlString2 = "Select StaffRecordID From TP_HR_StaffRecord "
  701. + " Where ApprovalStatus = 0 AND RecordType = 1 And ValueFlag = 1 And StaffID = " + staffid;
  702. string strStaffRecordID = oracleTrConn.GetSqlResultToStr(sqlString2);
  703. if (!string.IsNullOrEmpty(strStaffRecordID))
  704. {
  705. string sqlString3 = "Update TP_HR_StaffRecord Set ValueFlag = 0,UpdateUserID = " + sUserInfo.UserID
  706. + " Where ApprovalStatus = 0 AND RecordType = 1 And ValueFlag = 1 And StaffID = " + staffid;
  707. oracleTrConn.ExecuteNonQuery(sqlString3);
  708. }
  709. oracleTrConn.Commit();
  710. oracleTrConn.Disconnect();
  711. return resultEnity;
  712. }
  713. else
  714. {
  715. oracleTrConn.Rollback();
  716. oracleTrConn.Disconnect();
  717. resultEnity.OperateStatus = -4;
  718. return resultEnity;
  719. }
  720. }
  721. catch (Exception ex)
  722. {
  723. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  724. {
  725. oracleTrConn.Rollback();
  726. oracleTrConn.Disconnect();
  727. }
  728. throw ex;
  729. }
  730. }
  731. #endregion
  732. #region 员工入职
  733. /// <summary>
  734. /// 添加员工履历
  735. /// </summary>
  736. /// <param name="staffrecord">员工履历实体类</param>
  737. /// <param name="sUserInfo">用户基本信息</param>
  738. /// <returns>HRResultEntity</returns>
  739. public static HRResultEntity AddStaffRecord(StaffRecordEntity staffrecord, SUserInfo sUserInfo)
  740. {
  741. HRResultEntity resultEnity = new HRResultEntity();
  742. if (staffrecord == null)
  743. {
  744. resultEnity.OperateStatus = 0;
  745. return resultEnity;
  746. }
  747. if (staffrecord.ExProbationEndDate != null)
  748. {
  749. // 取得最近一次工资结算日
  750. DateTime wageDate = CommonModuleLogic.CommonModuleLogic.GetSystemDate(Constant.SystemDateType.WageSettlementDate, sUserInfo);
  751. if (staffrecord.ExProbationEndDate.Value <= wageDate)
  752. {
  753. resultEnity.OperateStatus = Constant.INT_IS_NEGATIE_FOUR;
  754. return resultEnity;
  755. }
  756. }
  757. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  758. try
  759. {
  760. oracleTrConn.Connect();
  761. //查询此员工是否有待审批的履历
  762. string sql = "SELECT 1 FROM TP_HR_STAFFRECORD"
  763. + " WHERE Staffid =:Staffid and RecordType = 1 And ValueFlag = 1 and ApprovalStatus=0";
  764. OracleParameter[] parmetersSql = new OracleParameter[]
  765. {
  766. new OracleParameter(":Staffid", OracleDbType.Int32, staffrecord.StaffID , ParameterDirection.Input),
  767. };
  768. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, parmetersSql);
  769. if (returnDataset != null && returnDataset.Tables[0].Rows.Count > 0)
  770. {
  771. oracleTrConn.Commit();
  772. oracleTrConn.Disconnect();
  773. resultEnity.OperateStatus = -1;
  774. return resultEnity;//不允许在添加,此员工有待审批的履历
  775. }
  776. // 查询新插入的生产数据ID
  777. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
  778. #region 插入员工履历数据
  779. string sqlString = " INSERT INTO TP_HR_STAFFRECORD "
  780. + "(StaffRecordID,StaffID"
  781. + ",StaffCode"
  782. + ",RecordDate"
  783. + ",RecordType"
  784. + ",ExProbationEndDate"
  785. + ",OriginalStaffStatus"
  786. + ",OriginalJobs"
  787. + ",OriginalOrganizationID"
  788. + ",OriginalPost"
  789. + ",TargetStaffStatus"
  790. + ",TargetJobs"
  791. + ",TargetOrganizationID"
  792. + ",TargetPost"
  793. + ",Applicant"
  794. + ",Reason"
  795. + ",Suggestion"
  796. + ",ApprovalStatus"
  797. + ",Approver"
  798. + ",ApprovalDate"
  799. + ",Remarks"
  800. + ",AccountID"
  801. + ",ValueFlag"
  802. + ",CreateUserID"
  803. + ",UpdateUserID"
  804. + ")"
  805. + " VALUES "
  806. + " (:StaffRecordID,:StaffID"
  807. + ",:StaffCode"
  808. + ",sysdate"
  809. + ",:RecordType"
  810. + ",:ExProbationEndDate"
  811. + ",:OriginalStaffStatus"
  812. + ",:OriginalJobs"
  813. + ",:OriginalOrganizationID"
  814. + ",:OriginalPost"
  815. + ",:TargetStaffStatus"
  816. + ",:TargetJobs"
  817. + ",:TargetOrganizationID"
  818. + ",:TargetPost"
  819. + ",:Applicant"
  820. + ",:Reason"
  821. + ",:Suggestion"
  822. + ",:ApprovalStatus"
  823. + ",:Approver"
  824. + ",FUN_CMN_GetAccountDate(:ACCOUNTID)"
  825. + ",:Remarks"
  826. + ",:AccountID"
  827. + ",:ValueFlag"
  828. + ",:CreateUserID"
  829. + ",:UpdateUserID"
  830. + " )";
  831. OracleParameter[] parmeters = new OracleParameter[]
  832. {
  833. new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
  834. new OracleParameter(":StaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
  835. new OracleParameter(":StaffCode",OracleDbType.Varchar2,staffrecord.StaffCode,ParameterDirection.Input),
  836. new OracleParameter(":RecordType",OracleDbType.Int32,staffrecord.RecordType,ParameterDirection.Input),
  837. new OracleParameter(":ExProbationEndDate",OracleDbType.Date,staffrecord.ExProbationEndDate,ParameterDirection.Input),
  838. new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,staffrecord.OriginalStaffStatus,ParameterDirection.Input),
  839. new OracleParameter(":OriginalJobs",OracleDbType.Int32,staffrecord.OriginalJobs,ParameterDirection.Input),
  840. new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,staffrecord.OriginalOrganizationID,ParameterDirection.Input),
  841. new OracleParameter(":OriginalPost",OracleDbType.Int32,staffrecord.OriginalPost,ParameterDirection.Input),
  842. new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,staffrecord.TargetStaffStatus,ParameterDirection.Input),
  843. new OracleParameter(":TargetJobs",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
  844. new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,staffrecord.TargetOrganizationID,ParameterDirection.Input),
  845. new OracleParameter(":TargetPost",OracleDbType.Int32,staffrecord.TargetPost,ParameterDirection.Input),
  846. new OracleParameter(":Applicant",OracleDbType.Int32,staffrecord.Applicant,ParameterDirection.Input),
  847. new OracleParameter(":Reason",OracleDbType.Varchar2,staffrecord.Reason,ParameterDirection.Input),
  848. new OracleParameter(":Suggestion",OracleDbType.Varchar2,staffrecord.Suggestion,ParameterDirection.Input),
  849. new OracleParameter(":ApprovalStatus",OracleDbType.Int32,staffrecord.ApprovalStatus,ParameterDirection.Input),
  850. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  851. new OracleParameter(":Remarks",OracleDbType.Varchar2,staffrecord.Remarks,ParameterDirection.Input),
  852. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  853. new OracleParameter(":ValueFlag",OracleDbType.Int32,staffrecord.ValueFlag,ParameterDirection.Input),
  854. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  855. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  856. };
  857. #endregion
  858. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  859. resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
  860. #region 更新员工档案的试用期时间
  861. string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
  862. OracleParameter[] parmetersSql2 = new OracleParameter[]
  863. {
  864. new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffrecord.ExProbationEndDate, ParameterDirection.Input),
  865. new OracleParameter(":pStaffID", OracleDbType.Int32, staffrecord.StaffID , ParameterDirection.Input)
  866. };
  867. foreach (var itemNull in parmetersSql2)
  868. {
  869. if (string.IsNullOrEmpty(itemNull.Value + ""))
  870. {
  871. itemNull.Value = DBNull.Value;
  872. }
  873. }
  874. oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  875. #endregion
  876. if (staffrecord.ApprovalStatus == 3) //审批通过
  877. {
  878. #region 更新数据到员工档案表
  879. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  880. + "StaffStatus=" + staffrecord.TargetStaffStatus //试用
  881. + ",EntryDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
  882. + ",UpdateUserID=:pUpdateUserID"
  883. + ",OrganizationID=:OrganizationID"
  884. + ",Post=:Post"
  885. + ",Jobs=:Jobs"
  886. + ",TurnoverDate=NULL"
  887. + " Where StaffID=:pStaffID";
  888. OracleParameter[] parmeters2 = new OracleParameter[]
  889. {
  890. new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  891. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  892. new OracleParameter(":pStaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
  893. new OracleParameter(":OrganizationID",OracleDbType.Int32,staffrecord.TargetOrganizationID,ParameterDirection.Input),
  894. new OracleParameter(":Post",OracleDbType.Int32,staffrecord.TargetPost,ParameterDirection.Input),
  895. new OracleParameter(":Jobs",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
  896. };
  897. #endregion
  898. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  899. if (staffrecord.TargetStaffStatus == 1)
  900. {
  901. #region 如果试用,往试用表里插入数据
  902. string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
  903. + "StaffID"
  904. + ",JobsID"
  905. + ",BeginDate"
  906. + ",AccountID"
  907. + ",CreateUserID"
  908. + ",UpdateUserID) VALUES ("
  909. + ":StaffID"
  910. + ",:JobsID"
  911. + ",sysdate"
  912. + ",:AccountID"
  913. + ",:CreateUserID"
  914. + ",:UpdateUserID)";
  915. OracleParameter[] parmeters3 = new OracleParameter[]
  916. {
  917. new OracleParameter(":StaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
  918. new OracleParameter(":JobsID",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
  919. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  920. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  921. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  922. };
  923. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
  924. #endregion
  925. }
  926. }
  927. oracleTrConn.Commit();
  928. oracleTrConn.Disconnect();
  929. return resultEnity;
  930. }
  931. catch (Exception ex)
  932. {
  933. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  934. {
  935. oracleTrConn.Rollback();
  936. oracleTrConn.Disconnect();
  937. }
  938. throw ex;
  939. }
  940. finally
  941. {
  942. if (oracleTrConn.ConnState == ConnectionState.Open)
  943. {
  944. oracleTrConn.Rollback();
  945. oracleTrConn.Disconnect();
  946. }
  947. }
  948. }
  949. /// <summary>
  950. /// 编辑员工履历
  951. /// </summary>
  952. /// <param name="staffrecord">员工履历实体类</param>
  953. /// <param name="sUserInfo">用户基本信息</param>
  954. /// <returns>HRResultEntity</returns>
  955. public static HRResultEntity EditStaffRecord(StaffRecordEntity staffrecord, SUserInfo sUserInfo)
  956. {
  957. HRResultEntity resultEnity = new HRResultEntity();
  958. if (staffrecord == null)
  959. {
  960. resultEnity.OperateStatus = 0;
  961. return resultEnity;
  962. }
  963. if (staffrecord.ExProbationEndDate != null)
  964. {
  965. // 取得最近一次工资结算日
  966. DateTime wageDate = CommonModuleLogic.CommonModuleLogic.GetSystemDate(Constant.SystemDateType.WageSettlementDate, sUserInfo);
  967. if (staffrecord.ExProbationEndDate.Value <= wageDate)
  968. {
  969. resultEnity.OperateStatus = Constant.INT_IS_NEGATIE_FOUR;
  970. return resultEnity;
  971. }
  972. }
  973. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  974. try
  975. {
  976. oracleTrConn.Connect();
  977. string sql = "SELECT OPTimeStamp FROM TP_HR_STAFFRECORD"
  978. + " WHERE StaffRecordID = " + staffrecord.StaffRecordID + " and OPTimeStamp = :OPTimeStamp";
  979. OracleParameter[] parmetersSql = new OracleParameter[]
  980. {
  981. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffrecord.OPTimeStamp, ParameterDirection.Input),
  982. };
  983. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, parmetersSql);
  984. if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  985. {
  986. oracleTrConn.Commit();
  987. oracleTrConn.Disconnect();
  988. resultEnity.OperateStatus = -2;
  989. return resultEnity;
  990. }
  991. #region 更新员工履历信息
  992. string sqlString = " UPDATE TP_HR_STAFFRECORD SET "
  993. + "StaffID=:StaffID"
  994. + ",StaffCode=:StaffCode"
  995. + ",ExProbationEndDate=:ExProbationEndDate"
  996. + ",OriginalStaffStatus=:OriginalStaffStatus"
  997. + ",OriginalJobs=:OriginalJobs"
  998. + ",OriginalOrganizationID=:OriginalOrganizationID"
  999. + ",OriginalPost=:OriginalPost"
  1000. + ",TargetStaffStatus=:TargetStaffStatus"
  1001. + ",TargetJobs=:TargetJobs"
  1002. + ",TargetOrganizationID=:TargetOrganizationID"
  1003. + ",TargetPost=:TargetPost"
  1004. + ",Reason=:Reason"
  1005. + ",Suggestion=:Suggestion"
  1006. + ",UpdateUserID=:UpdateUserID"
  1007. + ",Applicant=:Applicant"
  1008. + ",Remarks=:Remarks"
  1009. + " Where StaffRecordID=:StaffRecordID";
  1010. OracleParameter[] parmeters = new OracleParameter[]
  1011. {
  1012. new OracleParameter(":StaffID",OracleDbType.Int32,staffrecord.StaffID,ParameterDirection.Input),
  1013. new OracleParameter(":StaffCode",OracleDbType.Varchar2,staffrecord.StaffCode,ParameterDirection.Input),
  1014. new OracleParameter(":ExProbationEndDate",OracleDbType.Date,staffrecord.ExProbationEndDate,ParameterDirection.Input),
  1015. new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,staffrecord.OriginalStaffStatus,ParameterDirection.Input),
  1016. new OracleParameter(":OriginalJobs",OracleDbType.Int32,staffrecord.OriginalJobs,ParameterDirection.Input),
  1017. new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,staffrecord.OriginalOrganizationID,ParameterDirection.Input),
  1018. new OracleParameter(":OriginalPost",OracleDbType.Int32,staffrecord.OriginalPost,ParameterDirection.Input),
  1019. new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,staffrecord.TargetStaffStatus,ParameterDirection.Input),
  1020. new OracleParameter(":TargetJobs",OracleDbType.Int32,staffrecord.TargetJobs,ParameterDirection.Input),
  1021. new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,staffrecord.TargetOrganizationID,ParameterDirection.Input),
  1022. new OracleParameter(":TargetPost",OracleDbType.Int32,staffrecord.TargetPost,ParameterDirection.Input),
  1023. new OracleParameter(":Reason",OracleDbType.Varchar2,staffrecord.Reason,ParameterDirection.Input),
  1024. new OracleParameter(":Suggestion",OracleDbType.Varchar2,staffrecord.Suggestion,ParameterDirection.Input),
  1025. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1026. new OracleParameter(":StaffRecordID",OracleDbType.Int32,staffrecord.StaffRecordID,ParameterDirection.Input),
  1027. new OracleParameter(":Applicant",OracleDbType.Int32,staffrecord.Applicant,ParameterDirection.Input),
  1028. new OracleParameter(":Remarks",OracleDbType.Varchar2,staffrecord.Remarks,ParameterDirection.Input),
  1029. };
  1030. #endregion
  1031. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  1032. resultEnity.HRStaffRecordID = staffrecord.StaffRecordID;
  1033. #region 更新员工档案的试用期时间
  1034. string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
  1035. OracleParameter[] parmetersSql2 = new OracleParameter[]
  1036. {
  1037. new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffrecord.ExProbationEndDate, ParameterDirection.Input),
  1038. new OracleParameter(":pStaffID", OracleDbType.Int32, staffrecord.StaffID , ParameterDirection.Input)
  1039. };
  1040. foreach (var itemNull in parmetersSql2)
  1041. {
  1042. if (string.IsNullOrEmpty(itemNull.Value + ""))
  1043. {
  1044. itemNull.Value = DBNull.Value;
  1045. }
  1046. }
  1047. oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  1048. #endregion
  1049. oracleTrConn.Commit();
  1050. oracleTrConn.Disconnect();
  1051. return resultEnity;
  1052. }
  1053. catch (Exception ex)
  1054. {
  1055. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1056. {
  1057. oracleTrConn.Rollback();
  1058. oracleTrConn.Disconnect();
  1059. }
  1060. throw ex;
  1061. }
  1062. finally
  1063. {
  1064. if (oracleTrConn.ConnState == ConnectionState.Open)
  1065. {
  1066. oracleTrConn.Rollback();
  1067. oracleTrConn.Disconnect();
  1068. }
  1069. }
  1070. }
  1071. #endregion
  1072. #region 员工离职
  1073. /// <summary>
  1074. /// 保存员工离职履历信息
  1075. /// </summary>
  1076. /// <param name="pUserId">员工编号</param>
  1077. /// <param name="pOPTimeStamp">员工档案表时间戳</param>
  1078. /// <param name="pStaffRecord">员工履历表实体</param>
  1079. /// <param name="sUserInfo">用户基本信息</param>
  1080. /// <param name="pStatus">窗体是新增还是编辑</param>
  1081. /// <returns>0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改</returns>
  1082. public static HRResultEntity SaveStaffRecordDimission(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  1083. {
  1084. HRResultEntity resultEnity = new HRResultEntity();
  1085. if (pStaffRecord == null)
  1086. {
  1087. resultEnity.OperateStatus = 0;
  1088. return resultEnity;
  1089. }
  1090. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1091. try
  1092. {
  1093. oracleTrConn.Connect();
  1094. #region 员工档案被其他用户修改
  1095. string sql1 = "SELECT * FROM TP_HR_Staff"
  1096. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  1097. OracleParameter[] parmetersSql1 = new OracleParameter[]
  1098. {
  1099. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  1100. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  1101. };
  1102. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  1103. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  1104. {
  1105. oracleTrConn.Commit();
  1106. oracleTrConn.Disconnect();
  1107. resultEnity.OperateStatus = -3;
  1108. return resultEnity;// 员工档案被其他用户修改
  1109. }
  1110. #endregion
  1111. if (pStatus == WCFConstant.FormMode.Add)
  1112. {
  1113. #region 新增加记录
  1114. #region 查询此员工是否有待审批的履历
  1115. string sql2 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
  1116. + " WHERE Staffid =:Staffid And ApprovalStatus=0 And ValueFlag = 1";
  1117. OracleParameter[] parmetersSql2 = new OracleParameter[]
  1118. {
  1119. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  1120. };
  1121. string strCount = oracleTrConn.GetSqlResultToStr(sql2, parmetersSql2);
  1122. if (strCount != "0")
  1123. {
  1124. oracleTrConn.Commit();
  1125. oracleTrConn.Disconnect();
  1126. resultEnity.OperateStatus = -1;
  1127. return resultEnity;//不允许在添加,此员工有待审批的履历
  1128. }
  1129. #endregion
  1130. // 查询新插入的生产数据ID
  1131. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
  1132. #region 向员工履历表插入数据
  1133. string sqlString = " INSERT INTO TP_HR_STAFFRECORD "
  1134. + "(StaffRecordID,StaffID"
  1135. + ",StaffCode"
  1136. + ",RecordDate"
  1137. + ",RecordType"
  1138. + ",OriginalStaffStatus"
  1139. + ",OriginalJobs"
  1140. + ",OriginalOrganizationID"
  1141. + ",OriginalPost"
  1142. + ",TargetStaffStatus"
  1143. + ",TargetJobs"
  1144. + ",TargetOrganizationID"
  1145. + ",TargetPost"
  1146. + ",Applicant"
  1147. + ",Reason"
  1148. + ",Suggestion"
  1149. + ",ApprovalStatus"
  1150. + ",Approver"
  1151. + ",ApprovalDate"
  1152. + ",Remarks"
  1153. + ",AccountID"
  1154. + ",ValueFlag"
  1155. + ",CreateUserID"
  1156. + ",UpdateUserID"
  1157. + ")"
  1158. + " VALUES "
  1159. + " (:StaffRecordID,:StaffID"
  1160. + ",:StaffCode"
  1161. + ",:RecordDate"
  1162. + ",:RecordType"
  1163. + ",:OriginalStaffStatus"
  1164. + ",:OriginalJobs"
  1165. + ",:OriginalOrganizationID"
  1166. + ",:OriginalPost"
  1167. + ",:TargetStaffStatus"
  1168. + ",:TargetJobs"
  1169. + ",:TargetOrganizationID"
  1170. + ",:TargetPost"
  1171. + ",:Applicant"
  1172. + ",:Reason"
  1173. + ",:Suggestion"
  1174. + ",:ApprovalStatus"
  1175. + ",:Approver"
  1176. + ",FUN_CMN_GetAccountDate(:ACCOUNTID)"
  1177. + ",:Remarks"
  1178. + ",:AccountID"
  1179. + ",:ValueFlag"
  1180. + ",:CreateUserID"
  1181. + ",:UpdateUserID"
  1182. + " )";
  1183. OracleParameter[] parmeters = new OracleParameter[]
  1184. {
  1185. new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
  1186. new OracleParameter(":StaffID",OracleDbType.Int32,pStaffRecord.StaffID,ParameterDirection.Input),
  1187. new OracleParameter(":StaffCode",OracleDbType.Varchar2,dtStaff.Rows[0]["StaffCode"].ToString(),ParameterDirection.Input),
  1188. new OracleParameter(":RecordDate",OracleDbType.Date,pStaffRecord.RecordDate,ParameterDirection.Input),
  1189. new OracleParameter(":RecordType",OracleDbType.Int32,6,ParameterDirection.Input),
  1190. new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["StaffStatus"].ToString()),ParameterDirection.Input),
  1191. new OracleParameter(":OriginalJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
  1192. new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
  1193. new OracleParameter(":OriginalPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
  1194. new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["StaffStatus"].ToString()),ParameterDirection.Input),
  1195. new OracleParameter(":TargetJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
  1196. new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
  1197. new OracleParameter(":TargetPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
  1198. new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
  1199. new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
  1200. new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
  1201. new OracleParameter(":ApprovalStatus",OracleDbType.Int32,pStaffRecord.ApprovalStatus,ParameterDirection.Input),
  1202. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1203. //new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1204. new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
  1205. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1206. new OracleParameter(":ValueFlag",OracleDbType.Int32,1,ParameterDirection.Input),
  1207. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1208. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1209. };
  1210. #endregion
  1211. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  1212. #endregion
  1213. resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
  1214. }
  1215. else if (pStatus == WCFConstant.FormMode.Edit)
  1216. {
  1217. #region 编辑记录
  1218. #region 员工履历被其他用户修改
  1219. string sql2 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
  1220. + " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
  1221. OracleParameter[] parmetersSql2 = new OracleParameter[]
  1222. {
  1223. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  1224. };
  1225. string strCount = oracleTrConn.GetSqlResultToStr(sql2, parmetersSql2);
  1226. if ("0".Equals(strCount))
  1227. {
  1228. oracleTrConn.Commit();
  1229. oracleTrConn.Disconnect();
  1230. resultEnity.OperateStatus = -2;
  1231. return resultEnity; //员工履历被其他用户修改
  1232. }
  1233. #endregion
  1234. #region 更新数据到员工履历表
  1235. string sqlString = " UPDATE TP_HR_STAFFRECORD SET "
  1236. + "RecordDate=:RecordDate"
  1237. + ",Applicant=:Applicant"
  1238. + ",Reason=:Reason"
  1239. + ",Suggestion=:Suggestion"
  1240. + ",Remarks = :Remarks"
  1241. + ",UpdateUserID=:UpdateUserID"
  1242. + " Where StaffRecordID=:StaffRecordID";
  1243. OracleParameter[] parmeters = new OracleParameter[]
  1244. {
  1245. new OracleParameter(":RecordDate",OracleDbType.Date,pStaffRecord.RecordDate,ParameterDirection.Input),
  1246. new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
  1247. new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
  1248. new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
  1249. new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
  1250. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1251. new OracleParameter(":StaffRecordID",OracleDbType.Int32,pStaffRecord.StaffRecordID,ParameterDirection.Input),
  1252. };
  1253. #endregion
  1254. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  1255. resultEnity.HRStaffRecordID = pStaffRecord.StaffRecordID;
  1256. #endregion
  1257. }
  1258. #region 更新数据到员工档案表
  1259. // 如果审批通过,直接更新员工为离职状态
  1260. if (pStaffRecord.ApprovalStatus == 3)
  1261. {
  1262. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  1263. + "StaffStatus=3"
  1264. + ",TurnoverDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
  1265. + ",UpdateUserID=:pUpdateUserID"
  1266. + " Where StaffID=:pStaffID";
  1267. OracleParameter[] parmeters2 = new OracleParameter[]
  1268. {
  1269. new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1270. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1271. new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  1272. };
  1273. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  1274. }
  1275. #endregion
  1276. oracleTrConn.Commit();
  1277. oracleTrConn.Disconnect();
  1278. return resultEnity;
  1279. }
  1280. catch (Exception ex)
  1281. {
  1282. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1283. {
  1284. oracleTrConn.Rollback();
  1285. oracleTrConn.Disconnect();
  1286. }
  1287. throw ex;
  1288. }
  1289. }
  1290. /// <summary>
  1291. /// 员工离职操作
  1292. /// </summary>
  1293. /// <param name="cre"></param>
  1294. /// <param name="sUserInfo"></param>
  1295. /// <returns></returns>
  1296. public static ServiceResultEntity StaffTurnover(ClientRequestEntity cre, SUserInfo sUserInfo)
  1297. {
  1298. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1299. try
  1300. {
  1301. ServiceResultEntity sre = new ServiceResultEntity();
  1302. string staffIDs = cre.Properties["staffIDs"] + "";
  1303. if (staffIDs == null || staffIDs.Length == 0)
  1304. {
  1305. sre.Status = Constant.ServiceResultStatus.Other;
  1306. return sre;
  1307. }
  1308. if (cre.Data == null || cre.Data.Tables.Count == 0 || cre.Data.Tables[0].Rows.Count == 0)
  1309. {
  1310. sre.Message = "无员工信息";
  1311. return null;
  1312. }
  1313. DataTable dtStaff = cre.Data.Tables[0];
  1314. oracleTrConn.Connect();
  1315. #region 更新员工状态为离职
  1316. string sqlString = @" UPDATE TP_HR_Staff
  1317. SET StaffStatus = 3,
  1318. TurnoverDate = SYSDATE
  1319. WHERE StaffID IN ("+ staffIDs + ")";
  1320. int returnRows = oracleTrConn.ExecuteNonQuery(sqlString);
  1321. #endregion
  1322. #region 向员工履历表插入数据
  1323. // 新建个履历实体
  1324. StaffRecordEntity pStaffRecord = new StaffRecordEntity();
  1325. pStaffRecord.RecordDate = DateTime.Now; // 履历日期取今天
  1326. pStaffRecord.Applicant = sUserInfo.UserID; // 申请人取操作者
  1327. pStaffRecord.Reason = "-"; // 原因为空
  1328. pStaffRecord.Suggestion = "-"; // 意见为空
  1329. pStaffRecord.ApprovalStatus = 3; // 直接审批通过
  1330. pStaffRecord.Remarks = "一键离职"; // 备注一键离职
  1331. int returnStaffRecordRows = 0;
  1332. sqlString = " INSERT INTO TP_HR_STAFFRECORD "
  1333. + "(StaffRecordID,StaffID"
  1334. + ",StaffCode"
  1335. + ",RecordDate"
  1336. + ",RecordType"
  1337. + ",OriginalStaffStatus"
  1338. + ",OriginalJobs"
  1339. + ",OriginalOrganizationID"
  1340. + ",OriginalPost"
  1341. + ",TargetStaffStatus"
  1342. + ",TargetJobs"
  1343. + ",TargetOrganizationID"
  1344. + ",TargetPost"
  1345. + ",Applicant"
  1346. + ",Reason"
  1347. + ",Suggestion"
  1348. + ",ApprovalStatus"
  1349. + ",Approver"
  1350. + ",ApprovalDate"
  1351. + ",Remarks"
  1352. + ",AccountID"
  1353. + ",ValueFlag"
  1354. + ",CreateUserID"
  1355. + ",UpdateUserID"
  1356. + ")"
  1357. + " VALUES "
  1358. + " (:StaffRecordID,:StaffID"
  1359. + ",:StaffCode"
  1360. + ",:RecordDate"
  1361. + ",:RecordType"
  1362. + ",:OriginalStaffStatus"
  1363. + ",:OriginalJobs"
  1364. + ",:OriginalOrganizationID"
  1365. + ",:OriginalPost"
  1366. + ",:TargetStaffStatus"
  1367. + ",:TargetJobs"
  1368. + ",:TargetOrganizationID"
  1369. + ",:TargetPost"
  1370. + ",:Applicant"
  1371. + ",:Reason"
  1372. + ",:Suggestion"
  1373. + ",:ApprovalStatus"
  1374. + ",:Approver"
  1375. + ",FUN_CMN_GetAccountDate(:ACCOUNTID)"
  1376. + ",:Remarks"
  1377. + ",:AccountID"
  1378. + ",:ValueFlag"
  1379. + ",:CreateUserID"
  1380. + ",:UpdateUserID"
  1381. + " )";
  1382. foreach (DataRow row in dtStaff.Rows)
  1383. {
  1384. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
  1385. OracleParameter[] parmeters = new OracleParameter[]
  1386. {
  1387. new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
  1388. new OracleParameter(":StaffID",OracleDbType.Int32,Convert.ToInt32(row["staffID"]),ParameterDirection.Input),
  1389. new OracleParameter(":StaffCode",OracleDbType.Varchar2,dtStaff.Rows[0]["StaffCode"].ToString(),ParameterDirection.Input),
  1390. new OracleParameter(":RecordDate",OracleDbType.Date,pStaffRecord.RecordDate,ParameterDirection.Input),
  1391. new OracleParameter(":RecordType",OracleDbType.Int32,6,ParameterDirection.Input),
  1392. new OracleParameter(":OriginalStaffStatus",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["StaffStatus"].ToString()),ParameterDirection.Input),
  1393. new OracleParameter(":OriginalJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
  1394. new OracleParameter(":OriginalOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
  1395. new OracleParameter(":OriginalPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
  1396. new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,3,ParameterDirection.Input),
  1397. new OracleParameter(":TargetJobs",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Jobs"].ToString()),ParameterDirection.Input),
  1398. new OracleParameter(":TargetOrganizationID",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["OrganizationID"].ToString()),ParameterDirection.Input),
  1399. new OracleParameter(":TargetPost",OracleDbType.Int32,Convert.ToInt32(dtStaff.Rows[0]["Post"].ToString()),ParameterDirection.Input),
  1400. new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
  1401. new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
  1402. new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
  1403. new OracleParameter(":ApprovalStatus",OracleDbType.Int32,pStaffRecord.ApprovalStatus,ParameterDirection.Input),
  1404. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1405. //new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1406. new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
  1407. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1408. new OracleParameter(":ValueFlag",OracleDbType.Int32,1,ParameterDirection.Input),
  1409. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1410. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1411. };
  1412. returnStaffRecordRows = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  1413. }
  1414. #endregion
  1415. oracleTrConn.Commit();
  1416. oracleTrConn.Disconnect();
  1417. if (returnRows > 0 && returnStaffRecordRows > 0)
  1418. {
  1419. sre.Status = Constant.ServiceResultStatus.Success;
  1420. }
  1421. return sre;
  1422. }
  1423. catch (Exception ex)
  1424. {
  1425. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1426. {
  1427. oracleTrConn.Rollback();
  1428. oracleTrConn.Disconnect();
  1429. }
  1430. throw ex;
  1431. }
  1432. finally
  1433. {
  1434. if (oracleTrConn.ConnState == ConnectionState.Open)
  1435. {
  1436. oracleTrConn.Rollback();
  1437. oracleTrConn.Disconnect();
  1438. }
  1439. }
  1440. }
  1441. /// <summary>
  1442. /// 导入员工离职
  1443. /// </summary>
  1444. /// <param name="cre"></param>
  1445. /// <param name="sUserInfo"></param>
  1446. /// <returns></returns>
  1447. public static ServiceResultEntity ImportStaffTurnover(ClientRequestEntity cre, SUserInfo sUserInfo)
  1448. {
  1449. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1450. try
  1451. {
  1452. ServiceResultEntity sre = new ServiceResultEntity();
  1453. if (cre.Data == null || cre.Data.Tables.Count == 0 || cre.Data.Tables[0].Rows.Count == 0)
  1454. {
  1455. sre.Message = "无员工信息";
  1456. return null;
  1457. }
  1458. DataTable staffInfo = cre.Data.Tables[0];
  1459. staffInfo.Columns.Add("StaffID",typeof(int));
  1460. oracleTrConn.Connect();
  1461. #region 验证员工编码是否都存在
  1462. StringBuilder staffCodes = new StringBuilder();
  1463. foreach (DataRow item in staffInfo.Rows)
  1464. {
  1465. string sql = @"SELECT StaffID FROM TP_HR_Staff
  1466. WHERE StaffStatus <> 3 AND ValueFlag = 1
  1467. AND StaffCode = '" + item["员工编码"] + "'";
  1468. DataTable dtExistsID = oracleTrConn.GetSqlResultToDt(sql);
  1469. if (dtExistsID != null && dtExistsID.Rows.Count > 0)
  1470. {
  1471. item["StaffID"] = dtExistsID.Rows[0][0];
  1472. }
  1473. else
  1474. {
  1475. item["StaffID"] = DBNull.Value;
  1476. staffCodes.Append(item["员工编码"] + ",");
  1477. }
  1478. }
  1479. // 无效员工不处理 前台提示 chenxy 2019-10-14
  1480. //if (staffCodes != null && staffCodes.Length > 0)
  1481. //{
  1482. // sre.Status = Constant.ServiceResultStatus.Other;
  1483. // sre.Message = "以下员工编码在系统中不存在或已离职或停用:" + System.Environment.NewLine
  1484. // + staffCodes.ToString(0, staffCodes.Length - 1);
  1485. // return sre;
  1486. //}
  1487. #endregion
  1488. #region 更新员工状态为离职
  1489. int returnRows = 0;
  1490. DateTime turnoverDate;
  1491. string sqlString = string.Empty;
  1492. OracleParameter[] parmeters = null;
  1493. foreach (DataRow item in staffInfo.Rows)
  1494. {
  1495. // 无效员工不处理 前台提示 chenxy 2019-10-14
  1496. if (item["StaffID"] == DBNull.Value)
  1497. {
  1498. continue;
  1499. }
  1500. if (!DateTime.TryParse(item["离职日期"] + "", out turnoverDate))
  1501. {
  1502. turnoverDate = DateTime.Now;
  1503. }
  1504. sqlString = @" UPDATE TP_HR_Staff
  1505. SET StaffStatus = 3,
  1506. TurnoverDate = :TurnoverDate
  1507. WHERE StaffID = :StaffID";
  1508. parmeters = new OracleParameter[]
  1509. {
  1510. new OracleParameter(":TurnoverDate",OracleDbType.Date, turnoverDate, ParameterDirection.Input ),
  1511. new OracleParameter(":StaffID",OracleDbType.Int32,item["StaffID"], ParameterDirection.Input)
  1512. };
  1513. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  1514. sre.Result += item["StaffID"] + ",";
  1515. }
  1516. sre.Result = (sre.Result + "").Substring(0, (sre.Result + "").Length - 1);
  1517. #endregion
  1518. #region 向员工履历表插入数据
  1519. //// 新建个履历实体
  1520. StaffRecordEntity pStaffRecord = new StaffRecordEntity();
  1521. pStaffRecord.RecordDate = DateTime.Now; // 履历日期取今天
  1522. pStaffRecord.Applicant = sUserInfo.UserID; // 申请人取操作者
  1523. pStaffRecord.Reason = "-"; // 原因为空
  1524. pStaffRecord.Suggestion = "-"; // 意见为空
  1525. pStaffRecord.ApprovalStatus = 3; // 直接审批通过
  1526. pStaffRecord.Remarks = "一键导入离职"; // 备注一键离职
  1527. int returnStaffRecordRows = 0;
  1528. sqlString = "INSERT INTO TP_HR_STAFFRECORD(\n" +
  1529. " StaffRecordID\n" +
  1530. ",StaffID\n" +
  1531. ",StaffCode\n" +
  1532. ",RecordDate\n" +
  1533. ",RecordType\n" +
  1534. ",OriginalStaffStatus\n" +
  1535. ",OriginalJobs\n" +
  1536. ",OriginalOrganizationID\n" +
  1537. ",OriginalPost\n" +
  1538. ",TargetStaffStatus\n" +
  1539. ",TargetJobs\n" +
  1540. ",TargetOrganizationID\n" +
  1541. ",TargetPost\n" +
  1542. ",Applicant\n" +
  1543. ",Reason\n" +
  1544. ",Suggestion\n" +
  1545. ",ApprovalStatus\n" +
  1546. ",Approver\n" +
  1547. ",ApprovalDate\n" +
  1548. ",Remarks\n" +
  1549. ",AccountID\n" +
  1550. ",ValueFlag\n" +
  1551. ",CreateUserID\n" +
  1552. ",UpdateUserID)\n" +
  1553. " SELECT SEQ_HR_STAFFRECORD_ID.nextval\n" +
  1554. ",StaffID\n" +
  1555. ",StaffCode\n" +
  1556. ",SYSDATE\n" +
  1557. ",:RecordType\n" +
  1558. ",StaffStatus\n" +
  1559. ",Jobs\n" +
  1560. ",OrganizationID\n" +
  1561. ",POST\n" +
  1562. ",:TargetStaffStatus\n" +
  1563. ",Jobs\n" +
  1564. ",OrganizationID\n" +
  1565. ",POST\n" +
  1566. ",:Applicant\n" +
  1567. ",:Reason\n" +
  1568. ",:Suggestion\n" +
  1569. ",:ApprovalStatus\n" +
  1570. ",:Approver\n" +
  1571. ",SYSDATE\n" +
  1572. ",:Remarks\n" +
  1573. ",:AccountID\n" +
  1574. ",:ValueFlag\n" +
  1575. ",:CreateUserID\n" +
  1576. ",:UpdateUserID\n" +
  1577. " FROM TP_HR_STAFF\n" +
  1578. " WHERE StaffID IN ("+ sre.Result + ")";
  1579. parmeters = new OracleParameter[]
  1580. {
  1581. new OracleParameter(":RecordType",OracleDbType.Int32,6,ParameterDirection.Input),
  1582. new OracleParameter(":TargetStaffStatus",OracleDbType.Int32,3,ParameterDirection.Input),
  1583. new OracleParameter(":Applicant",OracleDbType.Int32,pStaffRecord.Applicant,ParameterDirection.Input),
  1584. new OracleParameter(":Reason",OracleDbType.Varchar2,pStaffRecord.Reason,ParameterDirection.Input),
  1585. new OracleParameter(":Suggestion",OracleDbType.Varchar2,pStaffRecord.Suggestion,ParameterDirection.Input),
  1586. new OracleParameter(":ApprovalStatus",OracleDbType.Int32,pStaffRecord.ApprovalStatus,ParameterDirection.Input),
  1587. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1588. new OracleParameter(":Remarks",OracleDbType.Varchar2,pStaffRecord.Remarks,ParameterDirection.Input),
  1589. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1590. new OracleParameter(":ValueFlag",OracleDbType.Int32,1,ParameterDirection.Input),
  1591. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1592. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
  1593. };
  1594. returnStaffRecordRows = oracleTrConn.ExecuteNonQuery(sqlString, parmeters);
  1595. #endregion
  1596. oracleTrConn.Commit();
  1597. oracleTrConn.Disconnect();
  1598. // 无效员工不处理 前台提示 chenxy 2019-10-14
  1599. if (staffCodes != null && staffCodes.Length > 0)
  1600. {
  1601. sre.Status = Constant.ServiceResultStatus.Other;
  1602. sre.Message = "以下员工编码在系统中不存在或已离职或停用(其他已导入):" + System.Environment.NewLine
  1603. + staffCodes.ToString(0, staffCodes.Length - 1);
  1604. return sre;
  1605. }
  1606. if (returnRows > 0 && returnStaffRecordRows > 0)
  1607. {
  1608. sre.Status = Constant.ServiceResultStatus.Success;
  1609. }
  1610. return sre;
  1611. }
  1612. catch (Exception ex)
  1613. {
  1614. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1615. {
  1616. oracleTrConn.Rollback();
  1617. oracleTrConn.Disconnect();
  1618. }
  1619. throw ex;
  1620. }
  1621. finally
  1622. {
  1623. if (oracleTrConn.ConnState == ConnectionState.Open)
  1624. {
  1625. oracleTrConn.Rollback();
  1626. oracleTrConn.Disconnect();
  1627. }
  1628. }
  1629. }
  1630. #endregion
  1631. #region 工种调整
  1632. /// <summary>
  1633. /// 保存工种调整方法;
  1634. /// </summary>
  1635. /// <param name="staffRecordEntity">员工履历实体类</param>
  1636. /// <param name="sUserInfo">用户基本信息</param>
  1637. /// <param name="editStatus">状态 1:新增 2:保存</param>
  1638. /// <returns>0 没有数据被修改 -1存在待审批履历 -2员工履历被其他用户修改 -3员工档案被其他用户修改</returns>
  1639. public static HRResultEntity SaveTargetJobInfo(StaffRecordEntity staffRecordEntity, SUserInfo sUserInfo, WCFConstant.FormMode editStatus)
  1640. {
  1641. HRResultEntity resultEnity = new HRResultEntity();
  1642. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1643. try
  1644. {
  1645. oracleTrConn.Connect();
  1646. #region 判断时间戳
  1647. string sqlString1 = "SELECT Count(*) FROM TP_HR_Staff"
  1648. + " WHERE AccountID = :AccountID AND StaffID = :staffID"; // AND OPTimeStamp = :oPTimeStamp ";
  1649. OracleParameter[] parmeters1 = new OracleParameter[]
  1650. {
  1651. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1652. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  1653. //new OracleParameter(":oPTimeStamp",OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp,ParameterDirection.Input),
  1654. };
  1655. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sqlString1, parmeters1);
  1656. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  1657. {
  1658. oracleTrConn.Commit();
  1659. oracleTrConn.Disconnect();
  1660. resultEnity.OperateStatus = -3;
  1661. return resultEnity;// 员工档案被其他用户修改
  1662. }
  1663. #endregion
  1664. // 新建工种调整信息
  1665. if (editStatus == WCFConstant.FormMode.Add)
  1666. {
  1667. #region 验证员工是否存在未审批数据
  1668. sqlString1 = "SELECT Count(*) FROM TP_HR_StaffRecord "
  1669. + " WHERE AccountID = :AccountID and ApprovalStatus in(0,1) AND StaffID = :staffID And ValueFlag = 1";
  1670. parmeters1 = new OracleParameter[]
  1671. {
  1672. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1673. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input)
  1674. };
  1675. string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
  1676. if (strCount != "0")
  1677. {
  1678. oracleTrConn.Commit();
  1679. oracleTrConn.Disconnect();
  1680. resultEnity.OperateStatus = -1;
  1681. return resultEnity;//员工档案存在未审批数据
  1682. }
  1683. #endregion
  1684. //
  1685. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
  1686. #region 新增工种调整信息
  1687. sqlString1 = "INSERT INTO TP_HR_StaffRecord "
  1688. + "(StaffRecordID,StaffID,StaffCode,RecordDate,RecordType,ExProbationEndDate,ApprovalStatus,Approver,ApprovalDate"
  1689. + ",OriginalOrganizationID,OriginalStaffStatus,OriginalJobs"
  1690. + ",TargetOrganizationID,TargetStaffStatus,TargetJobs"
  1691. + ",Applicant,Reason,Suggestion,Remarks"
  1692. + ",AccountID,CreateTime,UpdateTime,UpdateUserID,CreateUserID)"
  1693. + " VALUES "
  1694. + "(:StaffRecordID,:staffID,:staffCode,:recordDate,:recordType,:exProbationEndDate,:approvalStatus,:Approver,FUN_CMN_GetAccountDate(:ACCOUNTID)"
  1695. + ",:originalOrganizationID,:originalStaffStatus,:originalJobs"
  1696. + ",:targetOrganizationID,:targetStaffStatus,:targetJobs"
  1697. + ",:applicant,:reason,:suggestion,:remarks"
  1698. + ",:AccountID,sysdate,sysdate,:UpdateUserID,:CreateUserID)";
  1699. parmeters1 = new OracleParameter[]
  1700. {
  1701. new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
  1702. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  1703. new OracleParameter(":staffCode",OracleDbType.Varchar2,staffRecordEntity.StaffCode,ParameterDirection.Input),
  1704. new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
  1705. new OracleParameter(":recordType",OracleDbType.Int32,staffRecordEntity.RecordType,ParameterDirection.Input),
  1706. new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
  1707. new OracleParameter(":approvalStatus",OracleDbType.Int32,staffRecordEntity.ApprovalStatus,ParameterDirection.Input),
  1708. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1709. new OracleParameter(":originalOrganizationID",OracleDbType.Int32,staffRecordEntity.OriginalOrganizationID,ParameterDirection.Input),
  1710. new OracleParameter(":originalStaffStatus",OracleDbType.Int32,staffRecordEntity.OriginalStaffStatus,ParameterDirection.Input),
  1711. new OracleParameter(":originalJobs",OracleDbType.Int32,staffRecordEntity.OriginalJobs,ParameterDirection.Input),
  1712. new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
  1713. new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
  1714. new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  1715. new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
  1716. new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
  1717. new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
  1718. new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
  1719. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1720. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1721. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
  1722. };
  1723. #endregion
  1724. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
  1725. resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
  1726. }//修改工种调整信息
  1727. else if (editStatus == WCFConstant.FormMode.Edit)
  1728. {
  1729. #region 员工履历被其他用户修改
  1730. sqlString1 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
  1731. + " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :OPTimeStamp";
  1732. parmeters1 = new OracleParameter[]
  1733. {
  1734. new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input),
  1735. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp, ParameterDirection.Input)
  1736. };
  1737. string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
  1738. if ("0".Equals(strCount))
  1739. {
  1740. oracleTrConn.Commit();
  1741. oracleTrConn.Disconnect();
  1742. resultEnity.OperateStatus = -2;
  1743. return resultEnity; //员工履历被其他用户修改
  1744. }
  1745. #endregion
  1746. #region 更新工种调整信息
  1747. string sqlString = "UPDATE TP_HR_StaffRecord SET "
  1748. + "RecordDate = :recordDate"
  1749. + ",TargetJobs = :targetJobs"
  1750. + ",TargetStaffStatus = :targetStaffStatus"
  1751. + ",ExProbationEndDate = :exProbationEndDate"
  1752. + ",Applicant = :applicant"
  1753. + ",Reason = :reason"
  1754. + ",Suggestion = :suggestion"
  1755. + ",Remarks = :remarks"
  1756. + ",UpdateUserID = :UpdateUserID"
  1757. + ",UpdateTime = sysdate"
  1758. + " WHERE StaffRecordID = :staffRecordID";
  1759. parmeters1 = new OracleParameter[]
  1760. {
  1761. new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
  1762. new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  1763. new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
  1764. new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
  1765. new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
  1766. new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
  1767. new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
  1768. new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
  1769. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1770. new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input)
  1771. };
  1772. #endregion
  1773. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
  1774. resultEnity.HRStaffRecordID = staffRecordEntity.StaffRecordID;
  1775. }
  1776. #region 更新员工档案表中的预计试用期结束日期
  1777. string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
  1778. OracleParameter[] parmetersSql2 = new OracleParameter[]
  1779. {
  1780. new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input),
  1781. new OracleParameter(":pStaffID", OracleDbType.Int32, staffRecordEntity.StaffID , ParameterDirection.Input)
  1782. };
  1783. foreach (var itemNull in parmetersSql2)
  1784. {
  1785. if (string.IsNullOrEmpty(itemNull.Value + ""))
  1786. {
  1787. itemNull.Value = DBNull.Value;
  1788. }
  1789. }
  1790. oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  1791. #endregion
  1792. #region 更新数据到员工档案表
  1793. if (staffRecordEntity.ApprovalStatus == 3)
  1794. {
  1795. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  1796. + "Jobs = :jobs"
  1797. + ",StaffStatus=:staffStatus"
  1798. + ",ExProbationEndDate=:exProbationEndDate"
  1799. + ",UpdateUserID=:pUpdateUserID"
  1800. + " Where StaffID=:pStaffID";
  1801. OracleParameter[] parmeters2 = new OracleParameter[]
  1802. {
  1803. new OracleParameter(":jobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  1804. new OracleParameter(":staffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
  1805. new OracleParameter(":exProbationEndDate", OracleDbType.Date, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input),
  1806. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1807. new OracleParameter(":pStaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  1808. };
  1809. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  1810. if (staffRecordEntity.ExProbationEndDate != null)
  1811. {
  1812. #region 如果试用,往试用表里插入数据
  1813. string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
  1814. + "StaffID"
  1815. + ",JobsID"
  1816. + ",BeginDate"
  1817. + ",AccountID"
  1818. + ",CreateUserID"
  1819. + ",UpdateUserID) VALUES ("
  1820. + ":StaffID"
  1821. + ",:JobsID"
  1822. + ",sysdate"
  1823. + ",:AccountID"
  1824. + ",:CreateUserID"
  1825. + ",:UpdateUserID)";
  1826. OracleParameter[] parmeters3 = new OracleParameter[]
  1827. {
  1828. new OracleParameter(":StaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  1829. new OracleParameter(":JobsID",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  1830. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1831. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1832. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1833. };
  1834. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
  1835. #endregion
  1836. }
  1837. }
  1838. #endregion
  1839. oracleTrConn.Commit();
  1840. oracleTrConn.Disconnect();
  1841. return resultEnity;
  1842. }
  1843. catch (Exception ex)
  1844. {
  1845. throw ex;
  1846. }
  1847. finally
  1848. {
  1849. if (oracleTrConn.ConnState == ConnectionState.Open)
  1850. {
  1851. oracleTrConn.Rollback();
  1852. oracleTrConn.Disconnect();
  1853. }
  1854. }
  1855. }
  1856. /// <summary>
  1857. /// 工种调整审批保存
  1858. /// </summary>
  1859. /// <param name="pUserId">员工编号</param>
  1860. /// <param name="pOPTimeStamp">员工档案表时间戳</param>
  1861. /// <param name="pStaffRecord">员工履历表实体</param>
  1862. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  1863. /// <param name="pMemo">审批意见</param>
  1864. /// <param name="sUserInfo">用户基本信息</param>
  1865. /// <returns>0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改</returns>
  1866. public static HRResultEntity SaveHRStaffJobsApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
  1867. {
  1868. HRResultEntity resultEnity = new HRResultEntity();
  1869. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1870. try
  1871. {
  1872. oracleTrConn.Connect();
  1873. #region 员工档案被其他用户修改
  1874. string sql1 = "SELECT * FROM TP_HR_Staff"
  1875. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  1876. OracleParameter[] parmetersSql1 = new OracleParameter[]
  1877. {
  1878. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  1879. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  1880. };
  1881. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  1882. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  1883. {
  1884. oracleTrConn.Commit();
  1885. oracleTrConn.Disconnect();
  1886. resultEnity.OperateStatus = -3;
  1887. return resultEnity;// 员工档案被其他用户修改
  1888. }
  1889. #endregion
  1890. #region 员工履历被其他用户修改
  1891. string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
  1892. + " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :oPTimeStamp";
  1893. OracleParameter[] parmetersSql2 = new OracleParameter[]
  1894. {
  1895. new OracleParameter(":staffRecordID", OracleDbType.Int32, pStaffRecord.StaffRecordID, ParameterDirection.Input),
  1896. new OracleParameter(":oPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  1897. };
  1898. DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
  1899. if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
  1900. {
  1901. oracleTrConn.Commit();
  1902. oracleTrConn.Disconnect();
  1903. resultEnity.OperateStatus = -2;
  1904. return resultEnity;// 员工履历被其他用户修改
  1905. }
  1906. #endregion
  1907. //保存数据到员工履历表和人事审批表
  1908. resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
  1909. if (pState)
  1910. {
  1911. #region 更新数据到员工档案表
  1912. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  1913. + "Jobs = :jobs"
  1914. + ",StaffStatus=:staffStatus"
  1915. + ",ExProbationEndDate=:exProbationEndDate"
  1916. + ",UpdateUserID=:pUpdateUserID"
  1917. + " Where StaffID=:pStaffID";
  1918. OracleParameter[] parmeters2 = new OracleParameter[]
  1919. {
  1920. new OracleParameter(":jobs",OracleDbType.Int32,pStaffRecord.TargetJobs,ParameterDirection.Input),
  1921. new OracleParameter(":staffStatus",OracleDbType.Int32,pStaffRecord.TargetStaffStatus,ParameterDirection.Input),
  1922. new OracleParameter(":exProbationEndDate", OracleDbType.Date, pStaffRecord.ExProbationEndDate, ParameterDirection.Input),
  1923. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1924. new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  1925. };
  1926. #endregion
  1927. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  1928. if (pStaffRecord.ExProbationEndDate != null)
  1929. {
  1930. #region 如果试用,往试用表里插入数据
  1931. string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
  1932. + "StaffID"
  1933. + ",JobsID"
  1934. + ",BeginDate"
  1935. + ",AccountID"
  1936. + ",CreateUserID"
  1937. + ",UpdateUserID) VALUES ("
  1938. + ":StaffID"
  1939. + ",:JobsID"
  1940. + ",sysdate"
  1941. + ",:AccountID"
  1942. + ",:CreateUserID"
  1943. + ",:UpdateUserID)";
  1944. OracleParameter[] parmeters3 = new OracleParameter[]
  1945. {
  1946. new OracleParameter(":StaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  1947. new OracleParameter(":JobsID",OracleDbType.Int32,pStaffRecord.TargetJobs,ParameterDirection.Input),
  1948. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  1949. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1950. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  1951. };
  1952. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
  1953. #endregion
  1954. }
  1955. }
  1956. oracleTrConn.Commit();
  1957. oracleTrConn.Disconnect();
  1958. return resultEnity;
  1959. }
  1960. catch (Exception ex)
  1961. {
  1962. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1963. {
  1964. oracleTrConn.Rollback();
  1965. oracleTrConn.Disconnect();
  1966. }
  1967. throw ex;
  1968. }
  1969. finally
  1970. {
  1971. if (oracleTrConn.ConnState == ConnectionState.Open)
  1972. {
  1973. oracleTrConn.Rollback();
  1974. oracleTrConn.Disconnect();
  1975. }
  1976. }
  1977. }
  1978. #endregion
  1979. #region 职务调整
  1980. /// <summary>
  1981. /// 保存职务调整方法
  1982. /// </summary>
  1983. /// <param name="staffRecordEntity">员工履历实体类</param>
  1984. /// <param name="sUserInfo">用户基本信息</param>
  1985. /// <param name="editStatus">状态 1:新增 2:保存</param>
  1986. /// <returns>0 没有数据被修改 -1存在待审批履历 -2员工履历被其他用户修改 -3员工档案被其他用户修改</returns>
  1987. public static HRResultEntity SaveTargetPostInfo(StaffRecordEntity staffRecordEntity, SUserInfo sUserInfo, WCFConstant.FormMode editStatus)
  1988. {
  1989. HRResultEntity resultEnity = new HRResultEntity();
  1990. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1991. try
  1992. {
  1993. oracleTrConn.Connect();
  1994. #region 判断时间戳
  1995. string sqlString1 = "SELECT Count(*) FROM TP_HR_Staff"
  1996. + " WHERE AccountID = :AccountID AND StaffID = :staffID AND OPTimeStamp = :oPTimeStamp ";
  1997. OracleParameter[] parmeters1 = new OracleParameter[]
  1998. {
  1999. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2000. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  2001. new OracleParameter(":oPTimeStamp",OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp,ParameterDirection.Input),
  2002. };
  2003. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sqlString1, parmeters1);
  2004. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2005. {
  2006. oracleTrConn.Commit();
  2007. oracleTrConn.Disconnect();
  2008. resultEnity.OperateStatus = -3;
  2009. return resultEnity;// 员工档案被其他用户修改
  2010. }
  2011. #endregion
  2012. // 新建职务调整信息
  2013. if (editStatus == WCFConstant.FormMode.Add)
  2014. {
  2015. #region 验证员工是否存在未审批数据
  2016. sqlString1 = "SELECT Count(*) FROM TP_HR_StaffRecord "
  2017. + " WHERE AccountID = :AccountID and ApprovalStatus in(0,1) AND StaffID = :staffID And ValueFlag = 1";
  2018. parmeters1 = new OracleParameter[]
  2019. {
  2020. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2021. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input)
  2022. };
  2023. string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
  2024. if (strCount != "0")
  2025. {
  2026. oracleTrConn.Commit();
  2027. oracleTrConn.Disconnect();
  2028. resultEnity.OperateStatus = -1;
  2029. return resultEnity;//员工档案存在未审批数据
  2030. }
  2031. #endregion
  2032. //
  2033. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
  2034. #region 新增职务调整信息
  2035. sqlString1 = "INSERT INTO TP_HR_StaffRecord "
  2036. + "(StaffRecordID,StaffID,StaffCode,RecordDate,RecordType,ExProbationEndDate,ApprovalStatus,Approver,ApprovalDate"
  2037. + ",OriginalOrganizationID,OriginalStaffStatus,OriginalPost"
  2038. + ",TargetOrganizationID,TargetStaffStatus,TargetPost"
  2039. + ",Applicant,Reason,Suggestion,Remarks"
  2040. + ",AccountID,CreateTime,UpdateTime,UpdateUserID,CreateUserID)"
  2041. + " VALUES "
  2042. + "(:StaffRecordID,:staffID,:staffCode,:recordDate,:recordType,:exProbationEndDate,:approvalStatus,:Approver,FUN_CMN_GetAccountDate(:ACCOUNTID)"
  2043. + ",:originalOrganizationID,:originalStaffStatus,:originalPost"
  2044. + ",:targetOrganizationID,:targetStaffStatus,:targetPost"
  2045. + ",:applicant,:reason,:suggestion,:remarks"
  2046. + ",:AccountID,sysdate,sysdate,:UpdateUserID,:CreateUserID)";
  2047. parmeters1 = new OracleParameter[]
  2048. {
  2049. new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
  2050. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  2051. new OracleParameter(":staffCode",OracleDbType.Varchar2,staffRecordEntity.StaffCode,ParameterDirection.Input),
  2052. new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
  2053. new OracleParameter(":recordType",OracleDbType.Int32,staffRecordEntity.RecordType,ParameterDirection.Input),
  2054. new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
  2055. new OracleParameter(":approvalStatus",OracleDbType.Int32,staffRecordEntity.ApprovalStatus,ParameterDirection.Input),
  2056. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2057. new OracleParameter(":originalOrganizationID",OracleDbType.Int32,staffRecordEntity.OriginalOrganizationID,ParameterDirection.Input),
  2058. new OracleParameter(":originalStaffStatus",OracleDbType.Int32,staffRecordEntity.OriginalStaffStatus,ParameterDirection.Input),
  2059. new OracleParameter(":originalPost",OracleDbType.Int32,staffRecordEntity.OriginalPost,ParameterDirection.Input),
  2060. new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
  2061. new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
  2062. new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
  2063. new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
  2064. new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
  2065. new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
  2066. new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
  2067. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2068. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2069. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
  2070. };
  2071. #endregion
  2072. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
  2073. resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
  2074. }//修改职务调整信息
  2075. else if (editStatus == WCFConstant.FormMode.Edit)
  2076. {
  2077. #region 员工履历被其他用户修改
  2078. sqlString1 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
  2079. + " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :OPTimeStamp";
  2080. parmeters1 = new OracleParameter[]
  2081. {
  2082. new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input),
  2083. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp, ParameterDirection.Input)
  2084. };
  2085. string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
  2086. if (strCount != "0")
  2087. {
  2088. oracleTrConn.Commit();
  2089. oracleTrConn.Disconnect();
  2090. resultEnity.OperateStatus = -2;
  2091. return resultEnity; //员工履历被其他用户修改
  2092. }
  2093. #endregion
  2094. #region 更新职务调整信息
  2095. string sqlString = "UPDATE TP_HR_StaffRecord SET "
  2096. + "RecordDate = :recordDate"
  2097. + ",TargetPost = :targetPost"
  2098. + ",Applicant = :applicant"
  2099. + ",Reason = :reason"
  2100. + ",Suggestion = :suggestion"
  2101. + ",Remarks = :remarks"
  2102. + ",UpdateUserID = :UpdateUserID"
  2103. + ",UpdateTime = sysdate"
  2104. + " WHERE StaffRecordID = :staffRecordID";
  2105. parmeters1 = new OracleParameter[]
  2106. {
  2107. new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
  2108. new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
  2109. new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
  2110. new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
  2111. new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
  2112. new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
  2113. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2114. new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input)
  2115. };
  2116. #endregion
  2117. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
  2118. resultEnity.HRStaffRecordID = staffRecordEntity.StaffRecordID;
  2119. }
  2120. #region 更新数据到员工档案表
  2121. if (staffRecordEntity.ApprovalStatus == 3) //审批通过
  2122. {
  2123. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2124. + "Post = :post"
  2125. + ",UpdateUserID=:pUpdateUserID"
  2126. + " Where StaffID=:pStaffID";
  2127. OracleParameter[] parmeters2 = new OracleParameter[]
  2128. {
  2129. new OracleParameter(":post",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
  2130. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2131. new OracleParameter(":pStaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  2132. };
  2133. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  2134. }
  2135. #endregion
  2136. oracleTrConn.Commit();
  2137. oracleTrConn.Disconnect();
  2138. return resultEnity;
  2139. }
  2140. catch (Exception ex)
  2141. {
  2142. if (oracleTrConn.ConnState == ConnectionState.Open)
  2143. {
  2144. oracleTrConn.Rollback();
  2145. oracleTrConn.Disconnect();
  2146. }
  2147. throw ex;
  2148. }
  2149. finally
  2150. {
  2151. if (oracleTrConn.ConnState == ConnectionState.Open)
  2152. {
  2153. oracleTrConn.Rollback();
  2154. oracleTrConn.Disconnect();
  2155. }
  2156. }
  2157. }
  2158. /// <summary>
  2159. /// 职务调整审批保存
  2160. /// </summary>
  2161. /// <param name="pUserId">员工编号</param>
  2162. /// <param name="pOPTimeStamp">员工档案表时间戳</param>
  2163. /// <param name="pStaffRecord">员工履历表实体</param>
  2164. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  2165. /// <param name="pMemo">审批意见</param>
  2166. /// <param name="sUserInfo">用户基本信息</param>
  2167. /// <returns>0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改</returns>
  2168. public static HRResultEntity SaveHRStaffPostApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
  2169. {
  2170. HRResultEntity resultEnity = new HRResultEntity();
  2171. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2172. try
  2173. {
  2174. oracleTrConn.Connect();
  2175. #region 员工档案被其他用户修改
  2176. string sql1 = "SELECT * FROM TP_HR_Staff"
  2177. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  2178. OracleParameter[] parmetersSql1 = new OracleParameter[]
  2179. {
  2180. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  2181. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  2182. };
  2183. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  2184. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2185. {
  2186. oracleTrConn.Commit();
  2187. oracleTrConn.Disconnect();
  2188. resultEnity.OperateStatus = -3;
  2189. return resultEnity;// 员工档案被其他用户修改
  2190. }
  2191. #endregion
  2192. #region 员工履历被其他用户修改
  2193. string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
  2194. + " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :oPTimeStamp";
  2195. OracleParameter[] parmetersSql2 = new OracleParameter[]
  2196. {
  2197. new OracleParameter(":staffRecordID", OracleDbType.Int32, pStaffRecord.StaffRecordID, ParameterDirection.Input),
  2198. new OracleParameter(":oPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  2199. };
  2200. DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
  2201. if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
  2202. {
  2203. oracleTrConn.Commit();
  2204. oracleTrConn.Disconnect();
  2205. resultEnity.OperateStatus = -2;
  2206. return resultEnity;// 员工履历被其他用户修改
  2207. }
  2208. #endregion
  2209. //保存数据到员工履历表和人事审批表
  2210. resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
  2211. if (pState) //审批通过
  2212. {
  2213. #region 更新数据到员工档案表
  2214. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2215. + "Post = :post"
  2216. + ",UpdateUserID=:pUpdateUserID"
  2217. + " Where StaffID=:pStaffID";
  2218. OracleParameter[] parmeters2 = new OracleParameter[]
  2219. {
  2220. new OracleParameter(":post",OracleDbType.Int32,pStaffRecord.TargetPost,ParameterDirection.Input),
  2221. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2222. new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  2223. };
  2224. #endregion
  2225. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  2226. }
  2227. oracleTrConn.Commit();
  2228. oracleTrConn.Disconnect();
  2229. return resultEnity;
  2230. }
  2231. catch (Exception ex)
  2232. {
  2233. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2234. {
  2235. oracleTrConn.Rollback();
  2236. oracleTrConn.Disconnect();
  2237. }
  2238. throw ex;
  2239. }
  2240. finally
  2241. {
  2242. if (oracleTrConn.ConnState == ConnectionState.Open)
  2243. {
  2244. oracleTrConn.Rollback();
  2245. oracleTrConn.Disconnect();
  2246. }
  2247. }
  2248. }
  2249. #endregion
  2250. #region 部门调整
  2251. /// <summary>
  2252. /// 保存部门调整方法
  2253. /// </summary>
  2254. /// <param name="staffRecordEntity">员工履历实体类</param>
  2255. /// <param name="sUserInfo">用户基本信息</param>
  2256. /// <param name="editStatus">状态 1:新增 2:保存</param>
  2257. /// <returns>0 没有数据被修改 -1存在待审批履历 -2员工履历被其他用户修改 -3员工档案被其他用户修改</returns>
  2258. public static HRResultEntity SaveTargetOrganizationInfo(StaffRecordEntity staffRecordEntity, SUserInfo sUserInfo, WCFConstant.FormMode editStatus)
  2259. {
  2260. HRResultEntity resultEnity = new HRResultEntity();
  2261. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2262. try
  2263. {
  2264. oracleTrConn.Connect();
  2265. #region 判断时间戳
  2266. string sqlString1 = "SELECT Count(*) FROM TP_HR_Staff"
  2267. + " WHERE AccountID = :AccountID AND StaffID = :staffID";
  2268. OracleParameter[] parmeters1 = new OracleParameter[]
  2269. {
  2270. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2271. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  2272. };
  2273. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sqlString1, parmeters1);
  2274. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2275. {
  2276. oracleTrConn.Commit();
  2277. oracleTrConn.Disconnect();
  2278. resultEnity.OperateStatus = -3;
  2279. return resultEnity;// 员工档案被其他用户修改
  2280. }
  2281. #endregion
  2282. // 新建工种调整信息
  2283. if (editStatus == WCFConstant.FormMode.Add)
  2284. {
  2285. #region 验证员工是否存在未审批数据
  2286. sqlString1 = "SELECT Count(*) FROM TP_HR_StaffRecord "
  2287. + " WHERE AccountID = :AccountID and ApprovalStatus in(0,1) AND StaffID = :staffID And ValueFlag = 1";
  2288. parmeters1 = new OracleParameter[]
  2289. {
  2290. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2291. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input)
  2292. };
  2293. string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
  2294. if (strCount != "0")
  2295. {
  2296. oracleTrConn.Commit();
  2297. oracleTrConn.Disconnect();
  2298. resultEnity.OperateStatus = -1;
  2299. return resultEnity;//员工档案存在未审批数据
  2300. }
  2301. #endregion
  2302. // 查询新插入的生产数据ID
  2303. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_STAFFRECORD_ID.nextval from dual");
  2304. #region 新增部门调整信息
  2305. sqlString1 = "INSERT INTO TP_HR_StaffRecord "
  2306. + "(StaffRecordID,StaffID,StaffCode,RecordDate,RecordType,ExProbationEndDate,ApprovalStatus,Approver,ApprovalDate"
  2307. + ",OriginalOrganizationID,OriginalStaffStatus,OriginalJobs,OriginalPost"
  2308. + ",TargetOrganizationID,TargetStaffStatus,TargetJobs,TargetPost"
  2309. + ",Applicant,Reason,Suggestion,Remarks"
  2310. + ",AccountID,CreateTime,UpdateTime,UpdateUserID,CreateUserID)"
  2311. + " VALUES "
  2312. + "(:StaffRecordID,:staffID,:staffCode,:recordDate,:recordType,:exProbationEndDate,:approvalStatus,:Approver,FUN_CMN_GetAccountDate(:ACCOUNTID)"
  2313. + ",:originalOrganizationID,:originalStaffStatus,:originalJobs,:originalPost"
  2314. + ",:targetOrganizationID,:targetStaffStatus,:targetJobs,:targetPost"
  2315. + ",:applicant,:reason,:suggestion,:remarks"
  2316. + ",:AccountID,sysdate,sysdate,:UpdateUserID,:CreateUserID)";
  2317. parmeters1 = new OracleParameter[]
  2318. {
  2319. new OracleParameter(":StaffRecordID",OracleDbType.Int32,Convert.ToInt32(strSeq),ParameterDirection.Input),
  2320. new OracleParameter(":staffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  2321. new OracleParameter(":staffCode",OracleDbType.Varchar2,staffRecordEntity.StaffCode,ParameterDirection.Input),
  2322. new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
  2323. new OracleParameter(":recordType",OracleDbType.Int32,staffRecordEntity.RecordType,ParameterDirection.Input),
  2324. new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
  2325. new OracleParameter(":approvalStatus",OracleDbType.Int32,staffRecordEntity.ApprovalStatus,ParameterDirection.Input),
  2326. new OracleParameter(":Approver",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2327. new OracleParameter(":originalOrganizationID",OracleDbType.Int32,staffRecordEntity.OriginalOrganizationID,ParameterDirection.Input),
  2328. new OracleParameter(":originalStaffStatus",OracleDbType.Int32,staffRecordEntity.OriginalStaffStatus,ParameterDirection.Input),
  2329. new OracleParameter(":originalJobs",OracleDbType.Int32,staffRecordEntity.OriginalJobs,ParameterDirection.Input),
  2330. new OracleParameter(":originalPost",OracleDbType.Int32,staffRecordEntity.OriginalPost,ParameterDirection.Input),
  2331. new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
  2332. new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
  2333. new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  2334. new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
  2335. new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
  2336. new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
  2337. new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
  2338. new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
  2339. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2340. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2341. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
  2342. };
  2343. foreach (OracleParameter para in parmeters1)
  2344. {
  2345. if ((para.Value + "").Equals(""))
  2346. {
  2347. para.Value = DBNull.Value;
  2348. }
  2349. }
  2350. #endregion
  2351. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString1, parmeters1);
  2352. resultEnity.HRStaffRecordID = Convert.ToInt32(strSeq);
  2353. }//修改部门调整信息
  2354. else if (editStatus == WCFConstant.FormMode.Edit)
  2355. {
  2356. #region 员工履历被其他用户修改
  2357. sqlString1 = "SELECT Count(*) FROM TP_HR_STAFFRECORD"
  2358. + " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :OPTimeStamp";
  2359. parmeters1 = new OracleParameter[]
  2360. {
  2361. new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input),
  2362. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, staffRecordEntity.OPTimeStamp, ParameterDirection.Input)
  2363. };
  2364. string strCount = oracleTrConn.GetSqlResultToStr(sqlString1, parmeters1);
  2365. if ("0".Equals(strCount))
  2366. {
  2367. oracleTrConn.Commit();
  2368. oracleTrConn.Disconnect();
  2369. resultEnity.OperateStatus = -2;
  2370. return resultEnity; //员工履历被其他用户修改
  2371. }
  2372. #endregion
  2373. #region 更新部门调整信息
  2374. string sqlString = "UPDATE TP_HR_StaffRecord SET "
  2375. + "RecordDate = :recordDate"
  2376. + ",TargetOrganizationID = :targetOrganizationID"
  2377. + ",TargetStaffStatus = :targetStaffStatus"
  2378. + ",TargetJobs = :targetJobs"
  2379. + ",TargetPost = :targetPost "
  2380. + ",ExProbationEndDate = :exProbationEndDate"
  2381. + ",Applicant = :applicant"
  2382. + ",Reason = :reason"
  2383. + ",Suggestion = :suggestion"
  2384. + ",Remarks = :remarks"
  2385. + ",UpdateUserID = :UpdateUserID"
  2386. + ",UpdateTime = sysdate"
  2387. + " WHERE StaffRecordID = :staffRecordID";
  2388. parmeters1 = new OracleParameter[]
  2389. {
  2390. new OracleParameter(":recordDate",OracleDbType.Date,staffRecordEntity.RecordDate,ParameterDirection.Input),
  2391. new OracleParameter(":targetOrganizationID",OracleDbType.Int32,staffRecordEntity.TargetOrganizationID,ParameterDirection.Input),
  2392. new OracleParameter(":targetStaffStatus",OracleDbType.Int32,staffRecordEntity.TargetStaffStatus,ParameterDirection.Input),
  2393. new OracleParameter(":targetJobs",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  2394. new OracleParameter(":targetPost",OracleDbType.Int32,staffRecordEntity.TargetPost,ParameterDirection.Input),
  2395. new OracleParameter(":exProbationEndDate",OracleDbType.Date,staffRecordEntity.ExProbationEndDate,ParameterDirection.Input),
  2396. new OracleParameter(":applicant",OracleDbType.Int32,staffRecordEntity.Applicant,ParameterDirection.Input),
  2397. new OracleParameter(":reason",OracleDbType.Varchar2,staffRecordEntity.Reason,ParameterDirection.Input),
  2398. new OracleParameter(":suggestion",OracleDbType.Varchar2,staffRecordEntity.Suggestion,ParameterDirection.Input),
  2399. new OracleParameter(":remarks",OracleDbType.Varchar2,staffRecordEntity.Remarks,ParameterDirection.Input),
  2400. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2401. new OracleParameter(":staffRecordID",OracleDbType.Int32,staffRecordEntity.StaffRecordID,ParameterDirection.Input)
  2402. };
  2403. foreach (OracleParameter para in parmeters1)
  2404. {
  2405. if ((para.Value + "").Equals(""))
  2406. {
  2407. para.Value = DBNull.Value;
  2408. }
  2409. }
  2410. #endregion
  2411. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmeters1);
  2412. resultEnity.HRStaffRecordID = staffRecordEntity.StaffRecordID;
  2413. }
  2414. #region 更新员工档案表中的预计试用期结束日期
  2415. string strSql2 = "Update TP_HR_Staff Set ExProbationEndDate = :pExProbationEndDate WHERE StaffID = :pStaffID";
  2416. OracleParameter[] parmetersSql2 = new OracleParameter[]
  2417. {
  2418. new OracleParameter(":pExProbationEndDate", OracleDbType.Date, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input),
  2419. new OracleParameter(":pStaffID", OracleDbType.Int32, staffRecordEntity.StaffID , ParameterDirection.Input)
  2420. };
  2421. foreach (var itemNull in parmetersSql2)
  2422. {
  2423. if (string.IsNullOrEmpty(itemNull.Value + ""))
  2424. {
  2425. itemNull.Value = DBNull.Value;
  2426. }
  2427. }
  2428. oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  2429. #endregion
  2430. if (staffRecordEntity.ApprovalStatus == 3)
  2431. {
  2432. List<OracleParameter> parmeters2 = new List<OracleParameter>();
  2433. parmeters2.Add(new OracleParameter(":organizationID", OracleDbType.Int32, staffRecordEntity.TargetOrganizationID, ParameterDirection.Input));
  2434. parmeters2.Add(new OracleParameter(":staffStatus", OracleDbType.Int32, staffRecordEntity.TargetStaffStatus, ParameterDirection.Input));
  2435. parmeters2.Add(new OracleParameter(":exProbationEndDate", OracleDbType.TimeStamp, staffRecordEntity.ExProbationEndDate, ParameterDirection.Input));
  2436. parmeters2.Add(new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  2437. parmeters2.Add(new OracleParameter(":pStaffID", OracleDbType.Int32, staffRecordEntity.StaffID, ParameterDirection.Input));
  2438. #region 更新数据到员工档案表
  2439. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2440. + " OrganizationID = :organizationID"
  2441. + " ,StaffStatus=:staffStatus"
  2442. + " ,ExProbationEndDate=:exProbationEndDate";
  2443. if (staffRecordEntity.TargetJobs != -1000)
  2444. {
  2445. sqlString2 += " ,Jobs = :jobs";
  2446. parmeters2.Add(new OracleParameter(":jobs", OracleDbType.Int32, staffRecordEntity.TargetJobs, ParameterDirection.Input));
  2447. }
  2448. if (staffRecordEntity.TargetPost != -1000)
  2449. {
  2450. sqlString2 += " ,Post = :post";
  2451. parmeters2.Add(new OracleParameter(":post", OracleDbType.Int32, staffRecordEntity.TargetPost, ParameterDirection.Input));
  2452. }
  2453. sqlString2 += " ,UpdateUserID=:pUpdateUserID"
  2454. + " Where StaffID=:pStaffID";
  2455. #endregion
  2456. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2.ToArray());
  2457. if (staffRecordEntity.ExProbationEndDate != null)
  2458. {
  2459. #region 如果试用,往试用表里插入数据
  2460. string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
  2461. + "StaffID"
  2462. + ",JobsID"
  2463. + ",BeginDate"
  2464. + ",AccountID"
  2465. + ",CreateUserID"
  2466. + ",UpdateUserID) VALUES ("
  2467. + ":StaffID"
  2468. + ",:JobsID"
  2469. + ",sysdate"
  2470. + ",:AccountID"
  2471. + ",:CreateUserID"
  2472. + ",:UpdateUserID)";
  2473. OracleParameter[] parmeters3 = new OracleParameter[]
  2474. {
  2475. new OracleParameter(":StaffID",OracleDbType.Int32,staffRecordEntity.StaffID,ParameterDirection.Input),
  2476. new OracleParameter(":JobsID",OracleDbType.Int32,staffRecordEntity.TargetJobs,ParameterDirection.Input),
  2477. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2478. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2479. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2480. };
  2481. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
  2482. #endregion
  2483. }
  2484. }
  2485. oracleTrConn.Commit();
  2486. oracleTrConn.Disconnect();
  2487. return resultEnity;
  2488. }
  2489. catch (Exception ex)
  2490. {
  2491. if (oracleTrConn.ConnState == ConnectionState.Open)
  2492. {
  2493. oracleTrConn.Rollback();
  2494. oracleTrConn.Disconnect();
  2495. }
  2496. throw ex;
  2497. }
  2498. finally
  2499. {
  2500. if (oracleTrConn.ConnState == ConnectionState.Open)
  2501. {
  2502. oracleTrConn.Rollback();
  2503. oracleTrConn.Disconnect();
  2504. }
  2505. }
  2506. }
  2507. /// <summary>
  2508. /// 部门调整审批保存
  2509. /// </summary>
  2510. /// <param name="pUserId">员工编号</param>
  2511. /// <param name="pOPTimeStamp">员工档案表时间戳</param>
  2512. /// <param name="pStaffRecord">员工履历表实体</param>
  2513. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  2514. /// <param name="pMemo">审批意见</param>
  2515. /// <param name="sUserInfo">用户基本信息</param>
  2516. /// <returns>0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改</returns>
  2517. public static HRResultEntity SaveHRStaffOrganizationApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
  2518. {
  2519. HRResultEntity resultEnity = new HRResultEntity();
  2520. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2521. try
  2522. {
  2523. oracleTrConn.Connect();
  2524. #region 员工档案被其他用户修改
  2525. string sql1 = "SELECT * FROM TP_HR_Staff"
  2526. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  2527. OracleParameter[] parmetersSql1 = new OracleParameter[]
  2528. {
  2529. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  2530. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  2531. };
  2532. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  2533. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2534. {
  2535. oracleTrConn.Commit();
  2536. oracleTrConn.Disconnect();
  2537. resultEnity.OperateStatus = -3;
  2538. return resultEnity;// 员工档案被其他用户修改
  2539. }
  2540. #endregion
  2541. #region 员工履历被其他用户修改
  2542. string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
  2543. + " WHERE StaffRecordID = :staffRecordID And OPTimeStamp = :oPTimeStamp";
  2544. OracleParameter[] parmetersSql2 = new OracleParameter[]
  2545. {
  2546. new OracleParameter(":staffRecordID", OracleDbType.Int32, pStaffRecord.StaffRecordID, ParameterDirection.Input),
  2547. new OracleParameter(":oPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  2548. };
  2549. DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
  2550. if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
  2551. {
  2552. oracleTrConn.Commit();
  2553. oracleTrConn.Disconnect();
  2554. resultEnity.OperateStatus = -2;
  2555. return resultEnity;// 员工履历被其他用户修改
  2556. }
  2557. #endregion
  2558. //保存数据到员工履历表和人事审批表
  2559. resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
  2560. if (pState)
  2561. {
  2562. List<OracleParameter> parmeters2 = new List<OracleParameter>();
  2563. parmeters2.Add(new OracleParameter(":organizationID", OracleDbType.Int32, pStaffRecord.TargetOrganizationID, ParameterDirection.Input));
  2564. parmeters2.Add(new OracleParameter(":staffStatus", OracleDbType.Int32, pStaffRecord.TargetStaffStatus, ParameterDirection.Input));
  2565. parmeters2.Add(new OracleParameter(":exProbationEndDate", OracleDbType.TimeStamp, pStaffRecord.ExProbationEndDate, ParameterDirection.Input));
  2566. parmeters2.Add(new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input));
  2567. parmeters2.Add(new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId, ParameterDirection.Input));
  2568. #region 更新数据到员工档案表
  2569. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2570. + " OrganizationID = :organizationID"
  2571. + " ,StaffStatus=:staffStatus"
  2572. + " ,ExProbationEndDate=:exProbationEndDate";
  2573. if (pStaffRecord.TargetJobs != -1000)
  2574. {
  2575. sqlString2 += " ,Jobs = :jobs";
  2576. parmeters2.Add(new OracleParameter(":jobs", OracleDbType.Int32, pStaffRecord.TargetJobs, ParameterDirection.Input));
  2577. }
  2578. if (pStaffRecord.TargetPost != -1000)
  2579. {
  2580. sqlString2 += " ,Post = :post";
  2581. parmeters2.Add(new OracleParameter(":post",OracleDbType.Int32,pStaffRecord.TargetPost,ParameterDirection.Input));
  2582. }
  2583. sqlString2 += " ,UpdateUserID=:pUpdateUserID"
  2584. + " Where StaffID=:pStaffID";
  2585. #endregion
  2586. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2.ToArray());
  2587. if (pStaffRecord.ExProbationEndDate != null)
  2588. {
  2589. #region 如果试用,往试用表里插入数据
  2590. string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
  2591. + "StaffID"
  2592. + ",JobsID"
  2593. + ",BeginDate"
  2594. + ",AccountID"
  2595. + ",CreateUserID"
  2596. + ",UpdateUserID) VALUES ("
  2597. + ":StaffID"
  2598. + ",:JobsID"
  2599. + ",sysdate"
  2600. + ",:AccountID"
  2601. + ",:CreateUserID"
  2602. + ",:UpdateUserID)";
  2603. OracleParameter[] parmeters3 = new OracleParameter[]
  2604. {
  2605. new OracleParameter(":StaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  2606. new OracleParameter(":JobsID",OracleDbType.Int32,pStaffRecord.TargetJobs,ParameterDirection.Input),
  2607. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2608. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2609. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2610. };
  2611. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
  2612. #endregion
  2613. }
  2614. }
  2615. oracleTrConn.Commit();
  2616. oracleTrConn.Disconnect();
  2617. return resultEnity;
  2618. }
  2619. catch (Exception ex)
  2620. {
  2621. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2622. {
  2623. oracleTrConn.Rollback();
  2624. oracleTrConn.Disconnect();
  2625. }
  2626. throw ex;
  2627. }
  2628. finally
  2629. {
  2630. if (oracleTrConn.ConnState == ConnectionState.Open)
  2631. {
  2632. oracleTrConn.Rollback();
  2633. oracleTrConn.Disconnect();
  2634. }
  2635. }
  2636. }
  2637. #endregion
  2638. #region 员工离职审批
  2639. /// <summary>
  2640. /// 人事审批保存
  2641. /// </summary>
  2642. /// <param name="pUserId">员工编号</param>
  2643. /// <param name="pOPTimeStamp">员工档案表时间戳</param>
  2644. /// <param name="pStaffRecord">员工履历表实体</param>
  2645. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  2646. /// <param name="pMemo">审批意见</param>
  2647. /// <param name="sUserInfo">用户基本信息</param>
  2648. /// <returns>0 没有数据被修改 -1员工档案被其他用户修改 -2存在待审批履历 -3员工履历被其他用户修改</returns>
  2649. public static HRResultEntity SaveHRDimissionApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
  2650. {
  2651. HRResultEntity resultEnity = new HRResultEntity();
  2652. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2653. try
  2654. {
  2655. oracleTrConn.Connect();
  2656. #region 员工档案被其他用户修改
  2657. string sql1 = "SELECT * FROM TP_HR_Staff"
  2658. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  2659. OracleParameter[] parmetersSql1 = new OracleParameter[]
  2660. {
  2661. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  2662. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  2663. };
  2664. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  2665. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2666. {
  2667. oracleTrConn.Commit();
  2668. oracleTrConn.Disconnect();
  2669. resultEnity.OperateStatus = -3;
  2670. return resultEnity;// 员工档案被其他用户修改
  2671. }
  2672. #endregion
  2673. #region 员工履历被其他用户修改
  2674. string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
  2675. + " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
  2676. OracleParameter[] parmetersSql2 = new OracleParameter[]
  2677. {
  2678. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  2679. };
  2680. DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
  2681. if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
  2682. {
  2683. oracleTrConn.Commit();
  2684. oracleTrConn.Disconnect();
  2685. resultEnity.OperateStatus = -2;
  2686. return resultEnity;// 员工履历被其他用户修改
  2687. }
  2688. #endregion
  2689. //保存数据到员工履历表和人事审批表
  2690. resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
  2691. if (pState) //审批通过
  2692. {
  2693. #region 更新数据到员工档案表
  2694. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2695. + "StaffStatus=3"
  2696. + ",TurnoverDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
  2697. + ",UpdateUserID=:pUpdateUserID"
  2698. + " Where StaffID=:pStaffID";
  2699. OracleParameter[] parmeters2 = new OracleParameter[]
  2700. {
  2701. new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2702. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2703. new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  2704. };
  2705. #endregion
  2706. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  2707. }
  2708. oracleTrConn.Commit();
  2709. oracleTrConn.Disconnect();
  2710. return resultEnity;
  2711. }
  2712. catch (Exception ex)
  2713. {
  2714. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2715. {
  2716. oracleTrConn.Rollback();
  2717. oracleTrConn.Disconnect();
  2718. }
  2719. throw ex;
  2720. }
  2721. finally
  2722. {
  2723. if (oracleTrConn.ConnState == ConnectionState.Open)
  2724. {
  2725. oracleTrConn.Rollback();
  2726. oracleTrConn.Disconnect();
  2727. }
  2728. }
  2729. }
  2730. #endregion
  2731. #region 员工履历停用
  2732. /// <summary>
  2733. /// 设置禁用员工履历
  2734. /// </summary>
  2735. /// <param name="staffrecordid">员工履历ID</param>
  2736. /// <param name="sUserInfo">用户基本信息</param>
  2737. /// <returns>HRResultEntity</returns>
  2738. public static HRResultEntity SetStaffRecordValueFlag(int staffrecordid, SUserInfo sUserInfo)
  2739. {
  2740. HRResultEntity resultEnity = new HRResultEntity();
  2741. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2742. try
  2743. {
  2744. oracleTrConn.Connect();
  2745. string sql = "Select Count(*) From TP_HR_StaffRecord Where StaffRecordID=" + staffrecordid + " And ApprovalStatus=0 And ValueFlag=1";
  2746. string strCount = oracleTrConn.GetSqlResultToStr(sql);
  2747. if (!"0".Equals(strCount))
  2748. {
  2749. string sqlString = "Update TP_HR_StaffRecord Set ValueFlag = 0,UpdateUserID = " + sUserInfo.UserID
  2750. + " Where StaffRecordID =" + staffrecordid;
  2751. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString);
  2752. oracleTrConn.Commit();
  2753. oracleTrConn.Disconnect();
  2754. return resultEnity;
  2755. }
  2756. else
  2757. {
  2758. oracleTrConn.Rollback();
  2759. oracleTrConn.Disconnect();
  2760. resultEnity.OperateStatus = -5;
  2761. return resultEnity;
  2762. }
  2763. }
  2764. catch (Exception ex)
  2765. {
  2766. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2767. {
  2768. oracleTrConn.Rollback();
  2769. oracleTrConn.Disconnect();
  2770. }
  2771. throw ex;
  2772. }
  2773. finally
  2774. {
  2775. if (oracleTrConn.ConnState == ConnectionState.Open)
  2776. {
  2777. oracleTrConn.Rollback();
  2778. oracleTrConn.Disconnect();
  2779. }
  2780. }
  2781. }
  2782. #endregion
  2783. #region 员工入职审批
  2784. /// <summary>
  2785. /// 员工入职审批
  2786. /// </summary>
  2787. /// <param name="pUserId">员工编号</param>
  2788. /// <param name="pOPTimeStamp">员工时间戳</param>
  2789. /// <param name="pStaffRecord">员工履历表实体</param>
  2790. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  2791. /// <param name="pMemo">审批意见</param>
  2792. /// <param name="sUserInfo">用户基本信息</param>
  2793. /// <returns></returns>
  2794. public static HRResultEntity SaveHRStaffRecordApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
  2795. {
  2796. HRResultEntity resultEnity = new HRResultEntity();
  2797. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2798. try
  2799. {
  2800. oracleTrConn.Connect();
  2801. #region 员工档案被其他用户修改
  2802. string sql1 = "SELECT * FROM TP_HR_Staff"
  2803. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  2804. OracleParameter[] parmetersSql1 = new OracleParameter[]
  2805. {
  2806. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  2807. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  2808. };
  2809. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  2810. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2811. {
  2812. oracleTrConn.Commit();
  2813. oracleTrConn.Disconnect();
  2814. resultEnity.OperateStatus = -3;
  2815. return resultEnity;// 员工档案被其他用户修改
  2816. }
  2817. #endregion
  2818. #region 员工履历被其他用户修改
  2819. int job = 0;
  2820. int Post = 0;
  2821. int OrganizationID = 0;
  2822. string ExProbationEndDate = "";
  2823. string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
  2824. + " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
  2825. OracleParameter[] parmetersSql2 = new OracleParameter[]
  2826. {
  2827. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  2828. };
  2829. DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
  2830. if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
  2831. {
  2832. oracleTrConn.Commit();
  2833. oracleTrConn.Disconnect();
  2834. resultEnity.OperateStatus = -2;
  2835. return resultEnity;// 员工履历被其他用户修改
  2836. }
  2837. else
  2838. {
  2839. job = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalJobs"]);//工种
  2840. if (dtStaffRecord.Rows[0]["ExProbationEndDate"] != DBNull.Value)
  2841. ExProbationEndDate = dtStaffRecord.Rows[0]["ExProbationEndDate"].ToString();
  2842. Post = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalPost"]);//职务
  2843. OrganizationID = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalOrganizationID"]);//组织机构
  2844. }
  2845. #endregion
  2846. //保存数据到员工履历表和人事审批表
  2847. resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
  2848. if (pState) //审批通过
  2849. {
  2850. #region 更新数据到员工档案表
  2851. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2852. + "StaffStatus=" + (ExProbationEndDate == "" ? "2" : "1") //试用
  2853. + ",EntryDate=FUN_CMN_GetAccountDate(:pACCOUNTID)"
  2854. + ",UpdateUserID=:pUpdateUserID"
  2855. + ",OrganizationID=:OrganizationID"
  2856. + ",Post=:Post"
  2857. + ",Jobs=:Jobs"
  2858. + " Where StaffID=:pStaffID";
  2859. OracleParameter[] parmeters2 = new OracleParameter[]
  2860. {
  2861. new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2862. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2863. new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  2864. new OracleParameter(":OrganizationID",OracleDbType.Int32,OrganizationID,ParameterDirection.Input),
  2865. new OracleParameter(":Post",OracleDbType.Int32,Post,ParameterDirection.Input),
  2866. new OracleParameter(":Jobs",OracleDbType.Int32,job,ParameterDirection.Input),
  2867. };
  2868. #endregion
  2869. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  2870. if (ExProbationEndDate != "")
  2871. {
  2872. #region 如果试用,往试用表里插入数据
  2873. string sqlString3 = "INSERT INTO TP_HR_StaffProbation("
  2874. + "StaffID"
  2875. + ",JobsID"
  2876. + ",BeginDate"
  2877. + ",AccountID"
  2878. + ",CreateUserID"
  2879. + ",UpdateUserID) VALUES ("
  2880. + ":StaffID"
  2881. + ",:JobsID"
  2882. + ",sysdate"
  2883. + ",:AccountID"
  2884. + ",:CreateUserID"
  2885. + ",:UpdateUserID)";
  2886. OracleParameter[] parmeters3 = new OracleParameter[]
  2887. {
  2888. new OracleParameter(":StaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input),
  2889. new OracleParameter(":JobsID",OracleDbType.Int32,job,ParameterDirection.Input),
  2890. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2891. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2892. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2893. };
  2894. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString3, parmeters3);
  2895. #endregion
  2896. }
  2897. }
  2898. oracleTrConn.Commit();
  2899. oracleTrConn.Disconnect();
  2900. return resultEnity;
  2901. }
  2902. catch (Exception ex)
  2903. {
  2904. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2905. {
  2906. oracleTrConn.Rollback();
  2907. oracleTrConn.Disconnect();
  2908. }
  2909. throw ex;
  2910. }
  2911. finally
  2912. {
  2913. if (oracleTrConn.ConnState == ConnectionState.Open)
  2914. {
  2915. oracleTrConn.Rollback();
  2916. oracleTrConn.Disconnect();
  2917. }
  2918. }
  2919. }
  2920. #endregion
  2921. #region 员工转正审批
  2922. /// <summary>
  2923. /// 员工转正审批
  2924. /// </summary>
  2925. /// <param name="pUserId">员工编号</param>
  2926. /// <param name="pOPTimeStamp">员工档案表的时间戳</param>
  2927. /// <param name="pStaffRecord">员工履历表实体</param>
  2928. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  2929. /// <param name="pMemo">审批原因</param>
  2930. /// <param name="sUserInfo">用户基本信息</param>
  2931. /// <returns>HRResultEntity</returns>
  2932. public static HRResultEntity SaveHrStaffPositiveApprovalInfo(int pUserId, DateTime pOPTimeStamp, StaffRecordEntity pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo)
  2933. {
  2934. HRResultEntity resultEnity = new HRResultEntity();
  2935. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2936. try
  2937. {
  2938. oracleTrConn.Connect();
  2939. #region 员工档案被其他用户修改
  2940. string sql1 = "SELECT * FROM TP_HR_Staff"
  2941. + " WHERE Staffid =:Staffid And OPTimeStamp= :opTimeStamp";
  2942. OracleParameter[] parmetersSql1 = new OracleParameter[]
  2943. {
  2944. new OracleParameter(":Staffid", OracleDbType.Int32, pUserId , ParameterDirection.Input),
  2945. new OracleParameter(":opTimeStamp", OracleDbType.TimeStamp, pOPTimeStamp , ParameterDirection.Input)
  2946. };
  2947. DataTable dtStaff = oracleTrConn.GetSqlResultToDt(sql1, parmetersSql1);
  2948. if (dtStaff == null || dtStaff.Rows.Count <= 0)
  2949. {
  2950. oracleTrConn.Commit();
  2951. oracleTrConn.Disconnect();
  2952. resultEnity.OperateStatus = -3;
  2953. return resultEnity;// 员工档案被其他用户修改
  2954. }
  2955. #endregion
  2956. #region 员工履历被其他用户修改
  2957. int job = 0;
  2958. string ExProbationEndDate = "";
  2959. string sql2 = "SELECT * FROM TP_HR_STAFFRECORD"
  2960. + " WHERE StaffRecordID = " + pStaffRecord.StaffRecordID + " And OPTimeStamp = :OPTimeStamp";
  2961. OracleParameter[] parmetersSql2 = new OracleParameter[]
  2962. {
  2963. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, pStaffRecord.OPTimeStamp, ParameterDirection.Input),
  2964. };
  2965. DataTable dtStaffRecord = oracleTrConn.GetSqlResultToDt(sql2, parmetersSql2);
  2966. if (dtStaffRecord == null || dtStaffRecord.Rows.Count <= 0)
  2967. {
  2968. oracleTrConn.Commit();
  2969. oracleTrConn.Disconnect();
  2970. resultEnity.OperateStatus = -2;
  2971. return resultEnity;// 员工履历被其他用户修改
  2972. }
  2973. else
  2974. {
  2975. job = Convert.ToInt32(dtStaffRecord.Rows[0]["OriginalJobs"]);//工种
  2976. if (dtStaffRecord.Rows[0]["ExProbationEndDate"] != DBNull.Value)
  2977. ExProbationEndDate = dtStaffRecord.Rows[0]["ExProbationEndDate"].ToString();
  2978. }
  2979. #endregion
  2980. //保存数据到员工履历表和人事审批表
  2981. resultEnity.OperateStatus += UpdateHRApprovalInfo(dtStaff, dtStaffRecord, pState, pMemo, sUserInfo, oracleTrConn);
  2982. if (pState) //审批通过
  2983. {
  2984. #region 更新数据到员工档案表
  2985. string sqlString2 = " UPDATE TP_HR_STAFF SET "
  2986. + "StaffStatus=2" //2:转正
  2987. + ",UpdateUserID=:pUpdateUserID"
  2988. + " Where StaffID=:pStaffID";
  2989. OracleParameter[] parmeters2 = new OracleParameter[]
  2990. {
  2991. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2992. new OracleParameter(":pStaffID",OracleDbType.Int32,pUserId,ParameterDirection.Input)
  2993. };
  2994. #endregion
  2995. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  2996. if (ExProbationEndDate != "")
  2997. {
  2998. UpdateHRStaffProbation(pUserId, job, sUserInfo, oracleTrConn);
  2999. }
  3000. }
  3001. oracleTrConn.Commit();
  3002. oracleTrConn.Disconnect();
  3003. return resultEnity;
  3004. }
  3005. catch (Exception ex)
  3006. {
  3007. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3008. {
  3009. oracleTrConn.Rollback();
  3010. oracleTrConn.Disconnect();
  3011. }
  3012. throw ex;
  3013. }
  3014. finally
  3015. {
  3016. if (oracleTrConn.ConnState == ConnectionState.Open)
  3017. {
  3018. oracleTrConn.Rollback();
  3019. oracleTrConn.Disconnect();
  3020. }
  3021. }
  3022. }
  3023. #endregion
  3024. #region 员工考勤
  3025. /// <summary>
  3026. /// 根据DataTable中的考勤数据更新数据表
  3027. /// </summary>
  3028. /// <param name="pStaffAttendance">考勤数据表</param>
  3029. /// <param name="sUserInfo">用户基本信息</param>
  3030. /// <returns>HRResultEntity</returns>
  3031. public static HRResultEntity SaveStaffAttendanceInfo(DataTable pStaffAttendance, SUserInfo sUserInfo)
  3032. {
  3033. HRResultEntity resultEnity = new HRResultEntity();
  3034. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3035. try
  3036. {
  3037. if (pStaffAttendance == null || pStaffAttendance.Rows.Count <= 0)
  3038. {
  3039. resultEnity.OperateStatus = 0;
  3040. return resultEnity;
  3041. }
  3042. oracleTrConn.Connect();
  3043. foreach (DataRow newRowStaff in pStaffAttendance.Rows)
  3044. {
  3045. #region 验证该员工是否存在
  3046. if (string.IsNullOrEmpty(newRowStaff["StaffID"].ToString()))
  3047. {
  3048. resultEnity.OperateLogInfo += "员工编号:" + newRowStaff["StaffCode"].ToString() + " 不存在,不能被添加!" + Environment.NewLine;
  3049. continue;
  3050. }
  3051. #endregion
  3052. #region 获取DataRow中的考勤数据
  3053. int intStaffID = Convert.ToInt32(newRowStaff["STAFFID"]);
  3054. string strStaffName = newRowStaff["StaffName"].ToString();
  3055. DateTime dtAttendanceDate = Convert.ToDateTime(newRowStaff["ATTENDANCEDATE"]);
  3056. string strCardNumber = newRowStaff["CARDNUMBER"].ToString();
  3057. string strAttendanceStatus = newRowStaff["ATTENDANCESTATUS"].ToString();
  3058. string strAbsenceReason = newRowStaff["ABSENCEREASON"].ToString();
  3059. double douTardinessTimes = Convert.ToDouble(newRowStaff["TARDINESSTIMES"]);
  3060. string strRemarks = newRowStaff["Remarks"].ToString();
  3061. #endregion
  3062. #region 验证数据表中是否存在该数据
  3063. string strSql1 = "Select max(SettlementFlag) From TP_HR_StaffAttendance "
  3064. + " Where StaffID = :pStaffID And AttendanceDate = :pAttendanceDate";
  3065. OracleParameter[] parmetersSql1 = new OracleParameter[]
  3066. {
  3067. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
  3068. new OracleParameter(":pAttendanceDate", OracleDbType.Date, dtAttendanceDate , ParameterDirection.Input)
  3069. };
  3070. #endregion
  3071. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(strSql1, parmetersSql1);
  3072. if (string.IsNullOrEmpty(strSettlementFlag))
  3073. {
  3074. #region 向员工考勤表 插入新数据
  3075. string strSql2 = "Insert into TP_HR_StaffAttendance Value ("
  3076. + "StaffID"
  3077. + ",AttendanceDate"
  3078. + ",CardNumber"
  3079. + ",AttendanceStatus"
  3080. + ",AbsenceReason"
  3081. + ",TardinessTimes"
  3082. + ",Remarks"
  3083. + ",AccountID"
  3084. + ",CreateUserID"
  3085. + ",UpdateUserID"
  3086. + ",SettlementFlag"
  3087. + ")"
  3088. + " VALUES ("
  3089. + " :pStaffID"
  3090. + " ,:pAttendanceDate"
  3091. + " ,:pCardNumber"
  3092. + " ,:pAttendanceStatus"
  3093. + " ,:pAbsenceReason"
  3094. + " ,:pTardinessTimes"
  3095. + " ,:pRemarks"
  3096. + " ,:pAccountID"
  3097. + " ,:pCreateUserID"
  3098. + " ,:pUpdateUserID"
  3099. + " ,0"
  3100. + " )";
  3101. OracleParameter[] parmetersSql2 = new OracleParameter[]
  3102. {
  3103. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
  3104. new OracleParameter(":pAttendanceDate", OracleDbType.Date, dtAttendanceDate , ParameterDirection.Input),
  3105. new OracleParameter(":pCardNumber", OracleDbType.Varchar2, strCardNumber , ParameterDirection.Input),
  3106. new OracleParameter(":pAttendanceStatus", OracleDbType.Char, strAttendanceStatus , ParameterDirection.Input),
  3107. new OracleParameter(":pAbsenceReason", OracleDbType.Char, strAbsenceReason , ParameterDirection.Input),
  3108. new OracleParameter(":pTardinessTimes", OracleDbType.Double, douTardinessTimes , ParameterDirection.Input),
  3109. new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks , ParameterDirection.Input),
  3110. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3111. new OracleParameter(":pCreateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3112. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3113. };
  3114. #endregion
  3115. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  3116. }
  3117. else
  3118. {
  3119. if ("1".Equals(strSettlementFlag))
  3120. {
  3121. //工资已经结算 不能进行编辑
  3122. resultEnity.OperateLogInfo += strStaffName + dtAttendanceDate.ToString("yyyy-MM-dd") + "工资已经结算!" + Environment.NewLine;
  3123. }
  3124. else
  3125. {
  3126. #region 更新员工考勤表的数据
  3127. string strSql3 = "Update TP_HR_StaffAttendance Set "
  3128. + "CardNumber = :pCardNumber"
  3129. + ",AttendanceStatus = :pAttendanceStatus"
  3130. + ",AbsenceReason = :pAbsenceReason"
  3131. + ",TardinessTimes = :pTardinessTimes"
  3132. + ",Remarks = :pRemarks"
  3133. + ",UpdateUserID = :pUpdateUserID"
  3134. + " Where StaffID = :pStaffID And AttendanceDate = :pAttendanceDate And AccountID = :pAccountID";
  3135. OracleParameter[] parmetersSql3 = new OracleParameter[]
  3136. {
  3137. new OracleParameter(":pCardNumber", OracleDbType.Varchar2, strCardNumber , ParameterDirection.Input),
  3138. new OracleParameter(":pAttendanceStatus", OracleDbType.Char, strAttendanceStatus , ParameterDirection.Input),
  3139. new OracleParameter(":pAbsenceReason", OracleDbType.Char, strAbsenceReason , ParameterDirection.Input),
  3140. new OracleParameter(":pTardinessTimes", OracleDbType.Double, douTardinessTimes , ParameterDirection.Input),
  3141. new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks , ParameterDirection.Input),
  3142. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3143. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
  3144. new OracleParameter(":pAttendanceDate", OracleDbType.Date, dtAttendanceDate , ParameterDirection.Input),
  3145. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3146. };
  3147. #endregion
  3148. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  3149. }
  3150. }
  3151. }
  3152. oracleTrConn.Commit();
  3153. oracleTrConn.Disconnect();
  3154. return resultEnity;
  3155. }
  3156. catch (Exception ex)
  3157. {
  3158. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3159. {
  3160. oracleTrConn.Rollback();
  3161. oracleTrConn.Disconnect();
  3162. }
  3163. throw ex;
  3164. }
  3165. finally
  3166. {
  3167. if (oracleTrConn.ConnState == ConnectionState.Open)
  3168. {
  3169. oracleTrConn.Rollback();
  3170. oracleTrConn.Disconnect();
  3171. }
  3172. }
  3173. }
  3174. #endregion
  3175. #region 行政奖惩
  3176. /// <summary>
  3177. /// 根据传入的实体保存 行政奖惩记录
  3178. /// </summary>
  3179. /// <param name="pAdminRAPEntity">行政奖惩实体</param>
  3180. /// <param name="sUserInfo">用户基本信息</param>
  3181. /// <param name="pStatus">新增还是编辑枚举</param>
  3182. /// <returns>HRResultEntity</returns>
  3183. public static HRResultEntity SaveStaffAdminRAPInfo(HRAdminRAPEntity pAdminRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  3184. {
  3185. HRResultEntity resultEnity = new HRResultEntity();
  3186. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3187. try
  3188. {
  3189. if (pAdminRAPEntity == null)
  3190. {
  3191. resultEnity.OperateStatus = 0;
  3192. return resultEnity;
  3193. }
  3194. oracleTrConn.Connect();
  3195. if (pStatus == WCFConstant.FormMode.Add)
  3196. {
  3197. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_HR_AdminRAP_RAPID.nextval from dual");
  3198. #region 新建时插入数据
  3199. string strSql1 = "Insert Into TP_HR_ADMINRAP (RAPID,"
  3200. + "STAFFID"
  3201. + ",RAPTYPE"
  3202. + ",REASON"
  3203. + ",RAPDATE"
  3204. + ",RAPAMOUNT"
  3205. + ",ADMINISTRATIONTYPE"
  3206. + ",REMARKS"
  3207. + ",AUDITSTATUS"
  3208. + ",ACCOUNTID"
  3209. + ",CREATEUSERID"
  3210. + ",UPDATEUSERID)"
  3211. + " Values (:RAPID,"
  3212. + ":pSTAFFID"
  3213. + ",:pRAPTYPE"
  3214. + ",:pREASON"
  3215. + ",:pRAPDATE"
  3216. + ",:pRAPAMOUNT"
  3217. + ",:pADMINISTRATIONTYPE"
  3218. + ",:pREMARKS"
  3219. + ",:pAUDITSTATUS"
  3220. + ",:pACCOUNTID"
  3221. + ",:pCREATEUSERID"
  3222. + ",:pUPDATEUSERID"
  3223. + ")";
  3224. OracleParameter[] parmetersSql1 = new OracleParameter[]
  3225. {
  3226. new OracleParameter(":RAPID", OracleDbType.Int32,Convert.ToInt32(strSeq) , ParameterDirection.Input),
  3227. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pAdminRAPEntity.StaffID , ParameterDirection.Input),
  3228. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pAdminRAPEntity.RAPType , ParameterDirection.Input),
  3229. new OracleParameter(":pREASON", OracleDbType.Varchar2, pAdminRAPEntity.Reason , ParameterDirection.Input),
  3230. new OracleParameter(":pRAPDATE", OracleDbType.Date, pAdminRAPEntity.RAPDate , ParameterDirection.Input),
  3231. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pAdminRAPEntity.RAPAmount , ParameterDirection.Input),
  3232. new OracleParameter(":pADMINISTRATIONTYPE", OracleDbType.Int32, pAdminRAPEntity.AdministrationType , ParameterDirection.Input),
  3233. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pAdminRAPEntity.Remarks , ParameterDirection.Input),
  3234. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
  3235. new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3236. new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3237. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3238. };
  3239. #endregion
  3240. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
  3241. resultEnity.HRStaffID = Convert.ToInt32(strSeq);
  3242. }
  3243. else
  3244. {
  3245. #region 判断数据是否可以编辑
  3246. string strSlq2 = "Select max(AuditStatus) From TP_HR_AdminRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  3247. OracleParameter[] parmetersSql2 = new OracleParameter[]
  3248. {
  3249. new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
  3250. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pAdminRAPEntity.OPTimeStamp , ParameterDirection.Input),
  3251. };
  3252. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
  3253. if (string.IsNullOrEmpty(strAuditStatus))
  3254. {
  3255. oracleTrConn.Rollback();
  3256. oracleTrConn.Disconnect();
  3257. resultEnity.OperateStatus = -2;
  3258. return resultEnity;
  3259. }
  3260. if (!"0".Equals(strAuditStatus))
  3261. {
  3262. //不是待审批状态
  3263. oracleTrConn.Rollback();
  3264. oracleTrConn.Disconnect();
  3265. resultEnity.OperateStatus = -1;
  3266. return resultEnity;
  3267. }
  3268. #endregion
  3269. #region 编辑时更新数据
  3270. string strSql3 = "Update TP_HR_AdminRAP Set "
  3271. + "RAPTYPE = :pRAPTYPE"
  3272. + ",REASON = :pREASON"
  3273. + ",RAPDATE = :pRAPDATE"
  3274. + ",RAPAMOUNT = :pRAPAMOUNT"
  3275. + ",ADMINISTRATIONTYPE = :pADMINISTRATIONTYPE"
  3276. + ",REMARKS = :pREMARKS"
  3277. + ",UPDATEUSERID = :pUPDATEUSERID"
  3278. + " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
  3279. OracleParameter[] parmetersSql3 = new OracleParameter[]
  3280. {
  3281. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pAdminRAPEntity.RAPType , ParameterDirection.Input),
  3282. new OracleParameter(":pREASON", OracleDbType.Varchar2, pAdminRAPEntity.Reason , ParameterDirection.Input),
  3283. new OracleParameter(":pRAPDATE", OracleDbType.Date, pAdminRAPEntity.RAPDate , ParameterDirection.Input),
  3284. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pAdminRAPEntity.RAPAmount , ParameterDirection.Input),
  3285. new OracleParameter(":pADMINISTRATIONTYPE", OracleDbType.Int32, pAdminRAPEntity.AdministrationType , ParameterDirection.Input),
  3286. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pAdminRAPEntity.Remarks , ParameterDirection.Input),
  3287. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3288. new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
  3289. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pAdminRAPEntity.StaffID , ParameterDirection.Input),
  3290. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3291. };
  3292. #endregion
  3293. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  3294. resultEnity.HRStaffID = pAdminRAPEntity.RAPID;
  3295. }
  3296. oracleTrConn.Commit();
  3297. oracleTrConn.Disconnect();
  3298. return resultEnity;
  3299. }
  3300. catch (Exception ex)
  3301. {
  3302. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3303. {
  3304. oracleTrConn.Rollback();
  3305. oracleTrConn.Disconnect();
  3306. }
  3307. throw ex;
  3308. }
  3309. finally
  3310. {
  3311. if (oracleTrConn.ConnState == ConnectionState.Open)
  3312. {
  3313. oracleTrConn.Rollback();
  3314. oracleTrConn.Disconnect();
  3315. }
  3316. }
  3317. }
  3318. /// <summary>
  3319. /// 行政奖惩审批
  3320. /// </summary>
  3321. /// <param name="pAdminRAPEntity">行政奖惩实体</param>
  3322. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  3323. /// <param name="pMemo">审批原因</param>
  3324. /// <param name="sUserInfo">用户基本信息</param>
  3325. /// <returns>HRResultEntity</returns>
  3326. public static HRResultEntity SaveStaffAdminRAPApprovalInfo(HRAdminRAPEntity pAdminRAPEntity, bool pState, SUserInfo sUserInfo)
  3327. {
  3328. HRResultEntity resultEnity = new HRResultEntity();
  3329. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3330. try
  3331. {
  3332. if (pAdminRAPEntity == null)
  3333. {
  3334. resultEnity.OperateStatus = 0;
  3335. return resultEnity;
  3336. }
  3337. oracleTrConn.Connect();
  3338. #region 判断数据是否可以编辑
  3339. string strSlq1 = "Select max(AuditStatus) From TP_HR_AdminRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  3340. OracleParameter[] parmetersSql1 = new OracleParameter[]
  3341. {
  3342. new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
  3343. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pAdminRAPEntity.OPTimeStamp , ParameterDirection.Input),
  3344. };
  3345. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
  3346. if (string.IsNullOrEmpty(strAuditStatus))
  3347. {
  3348. oracleTrConn.Rollback();
  3349. oracleTrConn.Disconnect();
  3350. resultEnity.OperateStatus = -2;
  3351. return resultEnity;
  3352. }
  3353. if (!"0".Equals(strAuditStatus))
  3354. {
  3355. //不是待审批状态
  3356. oracleTrConn.Rollback();
  3357. oracleTrConn.Disconnect();
  3358. resultEnity.OperateStatus = -1;
  3359. return resultEnity;
  3360. }
  3361. #endregion
  3362. #region 更新审批数据
  3363. int intAuditStatus = 2; //2:审核未通过
  3364. if (pState)
  3365. {
  3366. intAuditStatus = 1; //1:审核通过;
  3367. }
  3368. string strSql2 = "Update TP_HR_AdminRAP Set "
  3369. + "AUDITSTATUS = :pAUDITSTATUS"
  3370. + ",AUDITOR = :pAUDITOR"
  3371. + ",AUDITDATE = sysdate"
  3372. + ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
  3373. + ",UPDATEUSERID = :pUPDATEUSERID"
  3374. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  3375. OracleParameter[] parmetersSql2 = new OracleParameter[]
  3376. {
  3377. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
  3378. new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3379. new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3380. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3381. new OracleParameter(":pRAPID", OracleDbType.Int32, pAdminRAPEntity.RAPID , ParameterDirection.Input),
  3382. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3383. };
  3384. #endregion
  3385. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  3386. resultEnity.HRStaffID = pAdminRAPEntity.RAPID;
  3387. oracleTrConn.Commit();
  3388. oracleTrConn.Disconnect();
  3389. return resultEnity;
  3390. }
  3391. catch (Exception ex)
  3392. {
  3393. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3394. {
  3395. oracleTrConn.Rollback();
  3396. oracleTrConn.Disconnect();
  3397. }
  3398. throw ex;
  3399. }
  3400. finally
  3401. {
  3402. if (oracleTrConn.ConnState == ConnectionState.Open)
  3403. {
  3404. oracleTrConn.Rollback();
  3405. oracleTrConn.Disconnect();
  3406. }
  3407. }
  3408. }
  3409. /// <summary>
  3410. /// 设置行政奖惩停用
  3411. /// </summary>
  3412. /// <param name="pRAPID">行政奖惩编号</param>
  3413. /// <param name="sUserInfo">用户基本信息</param>
  3414. /// <returns>HRResultEntity</returns>
  3415. public static HRResultEntity SetStaffAdminRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
  3416. {
  3417. HRResultEntity resultEnity = new HRResultEntity();
  3418. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3419. try
  3420. {
  3421. oracleTrConn.Connect();
  3422. string sql = "Select max(SettlementFlag) From TP_HR_AdminRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
  3423. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
  3424. if (!string.IsNullOrEmpty(strSettlementFlag))
  3425. {
  3426. if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
  3427. {
  3428. oracleTrConn.Rollback();
  3429. oracleTrConn.Disconnect();
  3430. resultEnity.OperateStatus = -6;
  3431. return resultEnity;
  3432. }
  3433. string sqlString = "Update TP_HR_AdminRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
  3434. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  3435. OracleParameter[] parmetersSql = new OracleParameter[]
  3436. {
  3437. new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  3438. new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
  3439. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3440. };
  3441. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
  3442. oracleTrConn.Commit();
  3443. oracleTrConn.Disconnect();
  3444. return resultEnity;
  3445. }
  3446. else
  3447. {
  3448. oracleTrConn.Rollback();
  3449. oracleTrConn.Disconnect();
  3450. resultEnity.OperateStatus = -5;
  3451. return resultEnity;
  3452. }
  3453. }
  3454. catch (Exception ex)
  3455. {
  3456. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3457. {
  3458. oracleTrConn.Rollback();
  3459. oracleTrConn.Disconnect();
  3460. }
  3461. throw ex;
  3462. }
  3463. finally
  3464. {
  3465. if (oracleTrConn.ConnState == ConnectionState.Open)
  3466. {
  3467. oracleTrConn.Rollback();
  3468. oracleTrConn.Disconnect();
  3469. }
  3470. }
  3471. }
  3472. #endregion
  3473. #region 员工报餐
  3474. /// <summary>
  3475. /// 员工报餐保存
  3476. /// </summary>
  3477. /// <param name="pStaff">待保存的数据表</param>
  3478. /// <param name="pStatus">窗口状态枚举</param>
  3479. /// <param name="sUserInfo">用户基本信息</param>
  3480. /// <returns>HRResultEntity</returns>
  3481. public static HRResultEntity SaveStaffDailyMealInfo(DataTable pStaff, WCFConstant.FormMode pStatus, SUserInfo sUserInfo)
  3482. {
  3483. HRResultEntity resultEnity = new HRResultEntity();
  3484. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3485. try
  3486. {
  3487. if (pStaff == null || pStaff.Rows.Count <= 0)
  3488. {
  3489. resultEnity.OperateStatus = 0;
  3490. return resultEnity;
  3491. }
  3492. oracleTrConn.Connect();
  3493. foreach (DataRow newRowStaff in pStaff.Rows)
  3494. {
  3495. #region 验证该员工是否存在
  3496. if (string.IsNullOrEmpty(newRowStaff["StaffID"].ToString()))
  3497. {
  3498. resultEnity.OperateLogInfo += "员工编号:" + newRowStaff["StaffCode"].ToString() + " 不存在,不能被添加!" + Environment.NewLine;
  3499. continue;
  3500. }
  3501. #endregion
  3502. #region 获取DataRow中的报餐数据
  3503. int intStaffID = Convert.ToInt32(newRowStaff["StaffID"]);
  3504. DateTime dtMealDate = Convert.ToDateTime(newRowStaff["MealDate"]);
  3505. string strOrderBreakfast = string.IsNullOrEmpty(newRowStaff["OrderBreakfast"].ToString()) ? "0" : newRowStaff["OrderBreakfast"].ToString();
  3506. string strOrderLunch = string.IsNullOrEmpty(newRowStaff["OrderLunch"].ToString()) ? "0" : newRowStaff["OrderLunch"].ToString();
  3507. string strOrderDinner = string.IsNullOrEmpty(newRowStaff["OrderDinner"].ToString()) ? "0" : newRowStaff["OrderDinner"].ToString();
  3508. string strMealBreakfast = string.IsNullOrEmpty(newRowStaff["MealBreakfast"].ToString()) ? "0" : newRowStaff["MealBreakfast"].ToString();
  3509. string strMealLunch = string.IsNullOrEmpty(newRowStaff["MealLunch"].ToString()) ? "0" : newRowStaff["MealLunch"].ToString();
  3510. string strMealDinner = string.IsNullOrEmpty(newRowStaff["MealDinner"].ToString()) ? "0" : newRowStaff["MealDinner"].ToString();
  3511. string strRemarks = newRowStaff["Remarks"].ToString();
  3512. if (pStatus == WCFConstant.FormMode.MealEdit)
  3513. {
  3514. strOrderBreakfast = "0";
  3515. strOrderLunch = "0";
  3516. strOrderDinner = "0";
  3517. strRemarks = string.Empty;
  3518. }
  3519. #endregion
  3520. #region 验证数据表中是否存在该数据
  3521. string strSql1 = "Select max(StaffID) From TP_HR_StaffDailyMeal "
  3522. + " Where StaffID = :pStaffID And MealDate = :pMealDate";
  3523. OracleParameter[] parmetersSql1 = new OracleParameter[]
  3524. {
  3525. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
  3526. new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input)
  3527. };
  3528. #endregion
  3529. string strResultStaffID = oracleTrConn.GetSqlResultToStr(strSql1, parmetersSql1);
  3530. if (string.IsNullOrEmpty(strResultStaffID))
  3531. {
  3532. #region 向员工报餐表 插入新数据
  3533. string strSql2 = "Insert into TP_HR_StaffDailyMeal Value ("
  3534. + "StaffID"
  3535. + ",MealDate"
  3536. + ",OrderBreakfast"
  3537. + ",OrderLunch"
  3538. + ",OrderDinner"
  3539. + ",MealBreakfast"
  3540. + ",MealLunch"
  3541. + ",MealDinner"
  3542. + ",Remarks"
  3543. + ",AccountID"
  3544. + ",CreateUserID"
  3545. + ",UpdateUserID"
  3546. + ")"
  3547. + " VALUES ("
  3548. + " :pStaffID"
  3549. + " ,:pMealDate"
  3550. + " ,:pOrderBreakfast"
  3551. + " ,:pOrderLunch"
  3552. + " ,:pOrderDinner"
  3553. + " ,:pMealBreakfast"
  3554. + " ,:pMealLunch"
  3555. + " ,:pMealDinner"
  3556. + " ,:pRemarks"
  3557. + " ,:pAccountID"
  3558. + " ,:pCreateUserID"
  3559. + " ,:pUpdateUserID"
  3560. + " )";
  3561. OracleParameter[] parmetersSql2 = new OracleParameter[]
  3562. {
  3563. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID , ParameterDirection.Input),
  3564. new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input),
  3565. new OracleParameter(":pOrderBreakfast", OracleDbType.Varchar2, strOrderBreakfast , ParameterDirection.Input),
  3566. new OracleParameter(":pOrderLunch", OracleDbType.Varchar2, strOrderLunch , ParameterDirection.Input),
  3567. new OracleParameter(":pOrderDinner", OracleDbType.Varchar2, strOrderDinner , ParameterDirection.Input),
  3568. new OracleParameter(":pMealBreakfast", OracleDbType.Varchar2, strMealBreakfast , ParameterDirection.Input),
  3569. new OracleParameter(":pMealLunch", OracleDbType.Varchar2, strMealLunch , ParameterDirection.Input),
  3570. new OracleParameter(":pMealDinner", OracleDbType.Varchar2, strMealDinner , ParameterDirection.Input),
  3571. new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks , ParameterDirection.Input),
  3572. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3573. new OracleParameter(":pCreateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3574. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3575. };
  3576. #endregion
  3577. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  3578. }
  3579. else
  3580. {
  3581. if (pStatus == WCFConstant.FormMode.Edit)
  3582. {
  3583. #region 更新员工报餐表的数据
  3584. string strSql3 = "Update TP_HR_StaffDailyMeal Set "
  3585. + "OrderBreakfast = :pOrderBreakfast"
  3586. + ",OrderLunch = :pOrderLunch"
  3587. + ",OrderDinner = :pOrderDinner"
  3588. + ",MealBreakfast = :pMealBreakfast"
  3589. + ",MealLunch = :pMealLunch"
  3590. + ",MealDinner = :pMealDinner"
  3591. + ",Remarks = :pRemarks"
  3592. + ",UpdateUserID = :pUpdateUserID"
  3593. + " Where StaffID = :pStaffID And MealDate = :pMealDate And AccountID = :pAccountID";
  3594. OracleParameter[] parmetersSql3 = new OracleParameter[]
  3595. {
  3596. new OracleParameter(":pOrderBreakfast", OracleDbType.Varchar2, strOrderBreakfast , ParameterDirection.Input),
  3597. new OracleParameter(":pOrderLunch", OracleDbType.Varchar2, strOrderLunch , ParameterDirection.Input),
  3598. new OracleParameter(":pOrderDinner", OracleDbType.Varchar2, strOrderDinner , ParameterDirection.Input),
  3599. new OracleParameter(":pMealBreakfast", OracleDbType.Varchar2, strMealBreakfast , ParameterDirection.Input),
  3600. new OracleParameter(":pMealLunch", OracleDbType.Varchar2, strMealLunch, ParameterDirection.Input),
  3601. new OracleParameter(":pMealDinner", OracleDbType.Varchar2, strMealDinner, ParameterDirection.Input),
  3602. new OracleParameter(":pRemarks", OracleDbType.Varchar2, strRemarks, ParameterDirection.Input),
  3603. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3604. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID, ParameterDirection.Input),
  3605. new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input),
  3606. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3607. };
  3608. #endregion
  3609. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  3610. }
  3611. else
  3612. {
  3613. #region 更新员工报餐表的数据
  3614. string strSql4 = "Update TP_HR_StaffDailyMeal Set "
  3615. + "MealBreakfast = :pMealBreakfast"
  3616. + ",MealLunch = :pMealLunch"
  3617. + ",MealDinner = :pMealDinner"
  3618. + ",UpdateUserID = :pUpdateUserID"
  3619. + " Where StaffID = :pStaffID And MealDate = :pMealDate And AccountID = :pAccountID";
  3620. OracleParameter[] parmetersSql4 = new OracleParameter[]
  3621. {
  3622. new OracleParameter(":pMealBreakfast", OracleDbType.Varchar2, strMealBreakfast , ParameterDirection.Input),
  3623. new OracleParameter(":pMealLunch", OracleDbType.Varchar2, strMealLunch, ParameterDirection.Input),
  3624. new OracleParameter(":pMealDinner", OracleDbType.Varchar2, strMealDinner, ParameterDirection.Input),
  3625. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  3626. new OracleParameter(":pStaffID", OracleDbType.Int32, intStaffID, ParameterDirection.Input),
  3627. new OracleParameter(":pMealDate", OracleDbType.Date, dtMealDate , ParameterDirection.Input),
  3628. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  3629. };
  3630. #endregion
  3631. resultEnity.OperateStatus += oracleTrConn.ExecuteNonQuery(strSql4, parmetersSql4);
  3632. }
  3633. }
  3634. }
  3635. oracleTrConn.Commit();
  3636. oracleTrConn.Disconnect();
  3637. return resultEnity;
  3638. }
  3639. catch (Exception ex)
  3640. {
  3641. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3642. {
  3643. oracleTrConn.Rollback();
  3644. oracleTrConn.Disconnect();
  3645. }
  3646. throw ex;
  3647. }
  3648. finally
  3649. {
  3650. if (oracleTrConn.ConnState == ConnectionState.Open)
  3651. {
  3652. oracleTrConn.Rollback();
  3653. oracleTrConn.Disconnect();
  3654. }
  3655. }
  3656. }
  3657. #endregion
  3658. #region 私有方法
  3659. /// <summary>
  3660. /// 根据传入的数据更新员工履历表数据
  3661. /// </summary>
  3662. /// <param name="pStaff">员工档案表</param>
  3663. /// <param name="pStaffRecord">员工履历表</param>
  3664. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  3665. /// <param name="pMemo">审批意见</param>
  3666. /// <param name="sUserInfo">用户基本信息</param>
  3667. /// <param name="pTrConn">数据库事物</param>
  3668. /// <returns>int返回更新数据行数</returns>
  3669. private static int UpdateHRApprovalInfo(DataTable pStaff, DataTable pStaffRecord, bool pState, string pMemo, SUserInfo sUserInfo, IDBTransaction pTrConn)
  3670. {
  3671. int returnCount = 0;
  3672. int intRECORDTYPE = Convert.ToInt32(pStaffRecord.Rows[0]["RecordType"]);
  3673. int intSTAFFRECORDID = Convert.ToInt32(pStaffRecord.Rows[0]["StaffRecordID"]);
  3674. int intRESULT = pState ? 1 : 0;
  3675. int intApprovalStatus = pState ? 3 : 2;
  3676. #region 向人事审批表中插入数据
  3677. string strSql1 = "INSERT INTO TP_HR_HRAPPROVAL ("
  3678. + " RECORDTYPE"
  3679. + " ,STAFFRECORDID"
  3680. + " ,SUGGESTION"
  3681. + " ,RESULT"
  3682. + " ,REMARKS"
  3683. + " ,ACCOUNTID"
  3684. + " ,VALUEFLAG"
  3685. + " ,CREATEUSERID"
  3686. + " ,UPDATEUSERID"
  3687. + ")"
  3688. + " VALUES "
  3689. + " (:pRECORDTYPE"
  3690. + ",:pSTAFFRECORDID"
  3691. + ",:pSUGGESTION"
  3692. + ",:pRESULT"
  3693. + ",:pREMARKS"
  3694. + ",:pACCOUNTID"
  3695. + ",:pVALUEFLAG"
  3696. + ",:pCREATEUSERID"
  3697. + ",:pUPDATEUSERID"
  3698. + " )";
  3699. OracleParameter[] parmeters1 = new OracleParameter[]
  3700. {
  3701. new OracleParameter(":pRECORDTYPE",OracleDbType.Int32,intRECORDTYPE,ParameterDirection.Input),
  3702. new OracleParameter(":pSTAFFRECORDID",OracleDbType.Int32,intSTAFFRECORDID,ParameterDirection.Input),
  3703. new OracleParameter(":pSUGGESTION",OracleDbType.Varchar2,pMemo,ParameterDirection.Input),
  3704. new OracleParameter(":pRESULT",OracleDbType.Int32,intRESULT,ParameterDirection.Input),
  3705. new OracleParameter(":pREMARKS",OracleDbType.Varchar2,"",ParameterDirection.Input),
  3706. new OracleParameter(":pACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3707. new OracleParameter(":pVALUEFLAG",OracleDbType.Int32,1,ParameterDirection.Input),
  3708. new OracleParameter(":pCREATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3709. new OracleParameter(":pUPDATEUSERID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input)
  3710. };
  3711. #endregion
  3712. returnCount += pTrConn.ExecuteNonQuery(strSql1, parmeters1);
  3713. #region 更新数据到员工履历表
  3714. string sqlString2 = " UPDATE TP_HR_STAFFRECORD SET "
  3715. + "ApprovalStatus=:pApprovalStatus"
  3716. + ",Approver=:pApprover"
  3717. + ",ApprovalDate=FUN_CMN_GetAccountDate(:ACCOUNTID)"
  3718. + ",UpdateUserID=:pUpdateUserID"
  3719. + " Where StaffRecordID=:pStaffRecordID";
  3720. OracleParameter[] parmeters2 = new OracleParameter[]
  3721. {
  3722. new OracleParameter(":pApprovalStatus",OracleDbType.Int32,intApprovalStatus,ParameterDirection.Input),
  3723. new OracleParameter(":pApprover",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3724. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3725. new OracleParameter(":pUpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3726. new OracleParameter(":pStaffRecordID",OracleDbType.Int32,intSTAFFRECORDID,ParameterDirection.Input),
  3727. };
  3728. #endregion
  3729. returnCount += pTrConn.ExecuteNonQuery(sqlString2, parmeters2);
  3730. return returnCount;
  3731. }
  3732. /// <summary>
  3733. /// 更新试用期表中的试用结束日期
  3734. /// </summary>
  3735. /// <param name="pStaffID">员工编号</param>
  3736. /// <param name="pJobsID">工种编号</param>
  3737. /// <param name="sUserInfo">用户基本信息</param>
  3738. /// <param name="pTrConn">数据库事务</param>
  3739. private static void UpdateHRStaffProbation(int pStaffID, int pJobsID, SUserInfo sUserInfo, IDBTransaction pTrConn)
  3740. {
  3741. string strSql1 = "SELECT MAX(ProbationID) FROM TP_HR_StaffProbation WHERE StaffID = :pStaffID AND JobsID = :pJobsID";
  3742. OracleParameter[] parmeters1 = new OracleParameter[]
  3743. {
  3744. new OracleParameter(":pStaffID", OracleDbType.Int32, pStaffID, ParameterDirection.Input),
  3745. new OracleParameter(":pJobsID", OracleDbType.Int32, pJobsID, ParameterDirection.Input)
  3746. };
  3747. string strProbationID = pTrConn.GetSqlResultToStr(strSql1, parmeters1);
  3748. if (!string.IsNullOrEmpty(strProbationID))
  3749. {
  3750. int intProbationID = Convert.ToInt32(strProbationID);
  3751. string strSql2 = "UPDATE TP_HR_StaffProbation SET EndDate = FUN_CMN_GetAccountDate(:pAccountID),UpdateUserID = :pUpdateUserID "
  3752. + " WHERE ProbationID = :pProbationID";
  3753. OracleParameter[] parmeters2 = new OracleParameter[]
  3754. {
  3755. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3756. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3757. new OracleParameter(":pProbationID", OracleDbType.Int32, intProbationID, ParameterDirection.Input)
  3758. };
  3759. pTrConn.ExecuteNonQuery(strSql2, parmeters2);
  3760. }
  3761. }
  3762. #endregion
  3763. #region 工资结算
  3764. /// <summary>
  3765. /// 添加工资结算信息
  3766. /// </summary>
  3767. /// <param name="salaryEntity">总结算信息实体</param>
  3768. /// <param name="dsStaffSalary">各明细结算信息数据集</param>
  3769. /// <param name="dsProductionData">结算用生产数据</param>
  3770. /// <param name="dsStaffAttendance">结算用考勤数据</param>
  3771. /// <param name="userInfo">当前操作用户</param>
  3772. /// <returns>结果值</returns>
  3773. public static int AddSalarySettlement(GetSalaryEntity salaryEntity, DataSet dsStaffSalary,
  3774. DataSet dsBase,SUserInfo userInfo)
  3775. {
  3776. int returnRows = 0;
  3777. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3778. try
  3779. {
  3780. oracleTrConn.Connect();
  3781. //首先添加总结算信息
  3782. StringBuilder sbSql = new StringBuilder();
  3783. sbSql.Clear();
  3784. sbSql.Append("select SEQ_SSM_SalarySettlement_ID.nextval from dual");
  3785. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  3786. sbSql.Clear();
  3787. sbSql.Append("Insert into TP_SSM_SalarySettlement");
  3788. sbSql.Append(" (SalarySettlementID,AccountMonth,AccountDateFrom,AccountDateTo,SettlementAmount,AdjustmentAmount,");
  3789. sbSql.Append(" TotalAmount,Remarks,AccountID,CreateUserID,UpdateUserID)");
  3790. sbSql.Append(" values (:SalarySettlementID,:AccountMonth,:AccountDateFrom,:AccountDateTo,:SettlementAmount,:AdjustmentAmount,");
  3791. sbSql.Append(" :TotalAmount,:Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  3792. OracleParameter[] Paras = new OracleParameter[] {
  3793. new OracleParameter(":SalarySettlementID",OracleDbType.Int32,
  3794. id,ParameterDirection.Input),
  3795. new OracleParameter(":AccountMonth",OracleDbType.Date,
  3796. salaryEntity.AccountMonth,ParameterDirection.Input),
  3797. new OracleParameter(":AccountDateFrom",OracleDbType.Date,
  3798. salaryEntity.SalaryDateS,ParameterDirection.Input),
  3799. new OracleParameter(":AccountDateTo",OracleDbType.Date,
  3800. salaryEntity.SalaryDateE,ParameterDirection.Input),
  3801. new OracleParameter(":SettlementAmount",OracleDbType.Decimal,
  3802. salaryEntity.SettlementAmount,ParameterDirection.Input),
  3803. new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
  3804. salaryEntity.AdjustmentAmount,ParameterDirection.Input),
  3805. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  3806. salaryEntity.TotalAmount,ParameterDirection.Input),
  3807. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3808. salaryEntity.Remarks,ParameterDirection.Input),
  3809. new OracleParameter(":AccountID",OracleDbType.Int32,
  3810. userInfo.AccountID,ParameterDirection.Input),
  3811. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3812. userInfo.UserID,ParameterDirection.Input),
  3813. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3814. userInfo.UserID,ParameterDirection.Input)
  3815. };
  3816. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  3817. //然后循环添加各个结算员工工资的总信息
  3818. foreach(DataRow drStaffSalaryFor in dsStaffSalary.Tables[0].Rows)
  3819. {
  3820. sbSql.Clear();
  3821. sbSql.Append("select SEQ_SSM_SSStaffSalaryID.nextval from dual");
  3822. int ssid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  3823. sbSql.Clear();
  3824. sbSql.Append("Insert into TP_SSM_StaffSalary");
  3825. sbSql.Append(" (StaffSalaryID,SalarySettlementID,StaffID,AccountMonth,AccountDateFrom,AccountDateTo,");
  3826. sbSql.Append(" BasicSalary,ManagerSalary,WagesSalary,ScrapFine,DefectFine,ProgressSalary,");
  3827. sbSql.Append(" AdminSalary,SettlementAmount,AdjustmentAmount,TotalAmount,AuditStatus,AccountID,CreateUserID,UpdateUserID)");
  3828. sbSql.Append(" values (:StaffSalaryID,:SalarySettlementID,:StaffID,:AccountMonth,:AccountDateFrom,:AccountDateTo,");
  3829. sbSql.Append(" :BasicSalary,:ManagerSalary,:WagesSalary,:ScrapFine,:DefectFine,:ProgressSalary,");
  3830. sbSql.Append(" :AdminSalary,:SettlementAmount,:AdjustmentAmount,:TotalAmount,:AuditStatus,:AccountID,:CreateUserID,:UpdateUserID)");
  3831. OracleParameter[] SSParas = new OracleParameter[] {
  3832. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  3833. ssid,ParameterDirection.Input),
  3834. new OracleParameter(":SalarySettlementID",OracleDbType.Int32,
  3835. id,ParameterDirection.Input),
  3836. new OracleParameter(":StaffID",OracleDbType.Int32,
  3837. drStaffSalaryFor["StaffID"],ParameterDirection.Input),
  3838. new OracleParameter(":AccountMonth",OracleDbType.Date,
  3839. drStaffSalaryFor["AccountMonth"],ParameterDirection.Input),
  3840. new OracleParameter(":AccountDateFrom",OracleDbType.Date,
  3841. drStaffSalaryFor["AccountDateFrom"],ParameterDirection.Input),
  3842. new OracleParameter(":AccountDateTo",OracleDbType.Date,
  3843. drStaffSalaryFor["AccountDateTo"],ParameterDirection.Input),
  3844. new OracleParameter(":BasicSalary",OracleDbType.Decimal,
  3845. drStaffSalaryFor["BasicSalary"],ParameterDirection.Input),
  3846. new OracleParameter(":ManagerSalary",OracleDbType.Decimal,
  3847. drStaffSalaryFor["ManagerSalary"],ParameterDirection.Input),
  3848. new OracleParameter(":WagesSalary",OracleDbType.Decimal,
  3849. drStaffSalaryFor["WagesSalary"],ParameterDirection.Input),
  3850. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  3851. drStaffSalaryFor["ScrapFine"],ParameterDirection.Input),
  3852. new OracleParameter(":DefectFine",OracleDbType.Decimal,
  3853. drStaffSalaryFor["DefectFine"],ParameterDirection.Input),
  3854. new OracleParameter(":ProgressSalary",OracleDbType.Decimal,
  3855. drStaffSalaryFor["ProgressSalary"],ParameterDirection.Input),
  3856. new OracleParameter(":AdminSalary",OracleDbType.Decimal,
  3857. drStaffSalaryFor["AdminSalary"],ParameterDirection.Input),
  3858. new OracleParameter(":SettlementAmount",OracleDbType.Decimal,
  3859. drStaffSalaryFor["SettlementAmount"],ParameterDirection.Input),
  3860. new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
  3861. drStaffSalaryFor["AdjustmentAmount"],ParameterDirection.Input),
  3862. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  3863. drStaffSalaryFor["TotalAmount"],ParameterDirection.Input),
  3864. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  3865. drStaffSalaryFor["AuditStatus"],ParameterDirection.Input),
  3866. new OracleParameter(":AccountID",OracleDbType.Int32,
  3867. userInfo.AccountID,ParameterDirection.Input),
  3868. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3869. userInfo.UserID,ParameterDirection.Input),
  3870. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3871. userInfo.UserID,ParameterDirection.Input)
  3872. };
  3873. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SSParas);
  3874. //插入总信息成功后,根据员工ID筛选该员工的各明细信息
  3875. //基本工资
  3876. DataTable dtBasicSalary = dsStaffSalary.Tables[1];
  3877. dtBasicSalary.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  3878. DataTable dtBasicSalaryNow = dtBasicSalary.DefaultView.ToTable();
  3879. foreach(DataRow drNow in dtBasicSalaryNow.Rows)
  3880. {
  3881. sbSql.Clear();
  3882. sbSql.Append("select SEQ_SSM_BSBasicSalaryID.nextval from dual");
  3883. int bsid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  3884. sbSql.Clear();
  3885. sbSql.Append("Insert into TP_SSM_BasicSalary");
  3886. sbSql.Append(" (BasicSalaryID,StaffSalaryID,StaffID,JobsID,SalaryType,BeginDate,EndDate,BasicSalary,Subsidy,");
  3887. sbSql.Append(" CheckedDays,AttendanceDays,AbsenceDays,FineAmount,TotalAmount,AccountID,CreateUserID,UpdateUserID)");
  3888. sbSql.Append(" values (:BasicSalaryID,:StaffSalaryID,:StaffID,:JobsID,:SalaryType,:BeginDate,:EndDate,:BasicSalary,:Subsidy,");
  3889. sbSql.Append(" :CheckedDays,:AttendanceDays,:AbsenceDays,:FineAmount,:TotalAmount,:AccountID,:CreateUserID,:UpdateUserID)");
  3890. OracleParameter[] BSParas = new OracleParameter[] {
  3891. new OracleParameter(":BasicSalaryID",OracleDbType.Int32,
  3892. bsid,ParameterDirection.Input),
  3893. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  3894. ssid,ParameterDirection.Input),
  3895. new OracleParameter(":StaffID",OracleDbType.Int32,
  3896. drNow["StaffID"],ParameterDirection.Input),
  3897. new OracleParameter(":JobsID",OracleDbType.Int32,
  3898. drNow["JobsID"],ParameterDirection.Input),
  3899. new OracleParameter(":SalaryType",OracleDbType.Int32,
  3900. Convert.ToInt32(drNow["SalaryType"])-1,ParameterDirection.Input),
  3901. new OracleParameter(":BeginDate",OracleDbType.Date,
  3902. drNow["BeginDate"],ParameterDirection.Input),
  3903. new OracleParameter(":EndDate",OracleDbType.Date,
  3904. drNow["EndDate"],ParameterDirection.Input),
  3905. new OracleParameter(":BasicSalary",OracleDbType.Decimal,
  3906. drNow["BasicSalary"],ParameterDirection.Input),
  3907. new OracleParameter(":Subsidy",OracleDbType.Decimal,
  3908. drNow["Subsidy"],ParameterDirection.Input),
  3909. new OracleParameter(":CheckedDays",OracleDbType.Decimal,
  3910. drNow["CheckedDays"],ParameterDirection.Input),
  3911. new OracleParameter(":AttendanceDays",OracleDbType.Decimal,
  3912. drNow["AttendanceDays"],ParameterDirection.Input),
  3913. new OracleParameter(":AbsenceDays",OracleDbType.Decimal,
  3914. drNow["AbsenceDays"],ParameterDirection.Input),
  3915. new OracleParameter(":FineAmount",OracleDbType.Decimal,
  3916. drNow["FineAmount"],ParameterDirection.Input),
  3917. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  3918. drNow["TotalAmount"],ParameterDirection.Input),
  3919. new OracleParameter(":AccountID",OracleDbType.Int32,
  3920. userInfo.AccountID,ParameterDirection.Input),
  3921. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3922. userInfo.UserID,ParameterDirection.Input),
  3923. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3924. userInfo.UserID,ParameterDirection.Input)
  3925. };
  3926. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), BSParas);
  3927. }
  3928. //计件工资
  3929. DataTable dtWages = dsStaffSalary.Tables[2];
  3930. dtWages.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  3931. DataTable dtWagesNow = dtWages.DefaultView.ToTable();
  3932. foreach (DataRow drNow in dtWagesNow.Rows)
  3933. {
  3934. sbSql.Clear();
  3935. sbSql.Append("select SEQ_SSM_Wages_WagesID.nextval from dual");
  3936. int wid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  3937. sbSql.Clear();
  3938. sbSql.Append("Insert into TP_SSM_Wages");
  3939. sbSql.Append(" (WagesID,StaffSalaryID,StaffID,WagesJobs,PriceType,SalaryType,AccountDateFrom,AccountDateTo,BarCode,KilnID,");
  3940. sbSql.Append(@" KilnCarID,IntoKilnTime,OutKilnTime,GoodsId,GoodsLevelTypeID,
  3941. Wages,Salary,Remarks,AccountID,CreateUserID,UpdateUserID)");
  3942. sbSql.Append(" values (:WagesID,:StaffSalaryID,:StaffID,:WagesJobs,:PriceType,:SalaryType,:AccountDateFrom,:AccountDateTo,:BarCode,:KilnID,");
  3943. sbSql.Append(@" :KilnCarID,:IntoKilnTime,:OutKilnTime,:GoodsId,:GoodsLevelTypeID,
  3944. :Wages,:Salary,:Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  3945. OracleParameter[] WParas = new OracleParameter[] {
  3946. new OracleParameter(":WagesID",OracleDbType.Int32,
  3947. wid,ParameterDirection.Input),
  3948. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  3949. ssid,ParameterDirection.Input),
  3950. new OracleParameter(":StaffID",OracleDbType.Int32,
  3951. drNow["StaffID"],ParameterDirection.Input),
  3952. new OracleParameter(":WagesJobs",OracleDbType.Int32,
  3953. drNow["WagesJobs"],ParameterDirection.Input),
  3954. new OracleParameter(":PriceType",OracleDbType.Int32,
  3955. drNow["PriceType"],ParameterDirection.Input),
  3956. new OracleParameter(":SalaryType",OracleDbType.Int32,
  3957. drNow["SalaryType"],ParameterDirection.Input),
  3958. new OracleParameter(":AccountDateFrom",OracleDbType.Date,
  3959. drNow["AccountDateFrom"],ParameterDirection.Input),
  3960. new OracleParameter(":AccountDateTo",OracleDbType.Date,
  3961. drNow["AccountDateTo"],ParameterDirection.Input),
  3962. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  3963. drNow["BarCode"],ParameterDirection.Input),
  3964. new OracleParameter(":KilnID",OracleDbType.Int32,
  3965. drNow["KilnID"],ParameterDirection.Input),
  3966. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  3967. drNow["KilnCarID"],ParameterDirection.Input),
  3968. new OracleParameter(":IntoKilnTime",OracleDbType.Date,
  3969. drNow["IntoKilnTime"],ParameterDirection.Input),
  3970. new OracleParameter(":OutKilnTime",OracleDbType.Date,
  3971. drNow["OutKilnTime"],ParameterDirection.Input),
  3972. new OracleParameter(":GoodsId",OracleDbType.Int32,
  3973. drNow["GoodsId"],ParameterDirection.Input),
  3974. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  3975. drNow["GoodsLevelTypeID"],ParameterDirection.Input),
  3976. new OracleParameter(":Wages",OracleDbType.Decimal,
  3977. drNow["Wages"],ParameterDirection.Input),
  3978. new OracleParameter(":Salary",OracleDbType.Decimal,
  3979. drNow["Salary"],ParameterDirection.Input),
  3980. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  3981. drNow["Remarks"],ParameterDirection.Input),
  3982. new OracleParameter(":AccountID",OracleDbType.Int32,
  3983. userInfo.AccountID,ParameterDirection.Input),
  3984. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  3985. userInfo.UserID,ParameterDirection.Input),
  3986. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  3987. userInfo.UserID,ParameterDirection.Input)
  3988. };
  3989. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), WParas);
  3990. }
  3991. //缺陷扣罚
  3992. DataTable dtDefectFine = dsStaffSalary.Tables[3];
  3993. dtDefectFine.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  3994. DataTable dtDefectFineNow = dtDefectFine.DefaultView.ToTable();
  3995. foreach (DataRow drNow in dtDefectFineNow.Rows)
  3996. {
  3997. sbSql.Clear();
  3998. sbSql.Append("select SEQ_SSM_DefectFine_DefectID.nextval from dual");
  3999. int dfid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4000. sbSql.Clear();
  4001. sbSql.Append("Insert into TP_SSM_DefectFine");
  4002. sbSql.Append(" (DefectFineID,StaffSalaryID,StaffID,StaffStatus,JobsID,SalaryType,BeginDate,EndDate,BarCode,");
  4003. sbSql.Append(" DefectFine,FineType,FineAmount,AccountID,CreateUserID,UpdateUserID)");
  4004. sbSql.Append(" values (:DefectFineID,:StaffSalaryID,:StaffID,:StaffStatus,:JobsID,:SalaryType,:BeginDate,:EndDate,:BarCode,");
  4005. sbSql.Append(" :DefectFine,:FineType,:FineAmount,:AccountID,:CreateUserID,:UpdateUserID)");
  4006. OracleParameter[] WParas = new OracleParameter[] {
  4007. new OracleParameter(":DefectFineID",OracleDbType.Int32,
  4008. dfid,ParameterDirection.Input),
  4009. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4010. ssid,ParameterDirection.Input),
  4011. new OracleParameter(":StaffID",OracleDbType.Int32,
  4012. drNow["StaffID"],ParameterDirection.Input),
  4013. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  4014. drNow["StaffStatus"],ParameterDirection.Input),
  4015. new OracleParameter(":JobsID",OracleDbType.Int32,
  4016. drNow["JobsID"],ParameterDirection.Input),
  4017. new OracleParameter(":SalaryType",OracleDbType.Int32,
  4018. drNow["SalaryType"],ParameterDirection.Input),
  4019. new OracleParameter(":BeginDate",OracleDbType.Date,
  4020. drNow["BeginDate"],ParameterDirection.Input),
  4021. new OracleParameter(":EndDate",OracleDbType.Date,
  4022. drNow["EndDate"],ParameterDirection.Input),
  4023. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4024. drNow["BarCode"],ParameterDirection.Input),
  4025. new OracleParameter(":DefectFine",OracleDbType.Decimal,
  4026. drNow["DefectFine"],ParameterDirection.Input),
  4027. new OracleParameter(":FineType",OracleDbType.Int32,
  4028. drNow["FineType"],ParameterDirection.Input),
  4029. new OracleParameter(":FineAmount",OracleDbType.Decimal,
  4030. drNow["FineAmount"],ParameterDirection.Input),
  4031. new OracleParameter(":AccountID",OracleDbType.Int32,
  4032. userInfo.AccountID,ParameterDirection.Input),
  4033. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4034. userInfo.UserID,ParameterDirection.Input),
  4035. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4036. userInfo.UserID,ParameterDirection.Input)
  4037. };
  4038. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), WParas);
  4039. }
  4040. //损坯扣罚
  4041. DataTable dtScrap = dsStaffSalary.Tables[4];
  4042. dtScrap.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  4043. DataTable dtScrapNow = dtScrap.DefaultView.ToTable();
  4044. foreach (DataRow drNow in dtScrapNow.Rows)
  4045. {
  4046. sbSql.Clear();
  4047. sbSql.Append("select SEQ_SSM_ScrapFine_ScrapID.nextval from dual");
  4048. int Sid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4049. sbSql.Clear();
  4050. sbSql.Append("Insert into TP_SSM_ScrapFine");
  4051. sbSql.Append(" (ScrapFineID,StaffSalaryID,StaffID,StaffStatus,JobsID,BeginDate,EndDate,BarCode,");
  4052. sbSql.Append(" GoodsID,ScrapTime,ScrapFine,AccountID,CreateUserID,UpdateUserID)");
  4053. sbSql.Append(" values (:ScrapFineID,:StaffSalaryID,:StaffID,:StaffStatus,:JobsID,:BeginDate,:EndDate,:BarCode,");
  4054. sbSql.Append(" :GoodsID,:ScrapTime,:ScrapFine,:AccountID,:CreateUserID,:UpdateUserID)");
  4055. OracleParameter[] SParas = new OracleParameter[] {
  4056. new OracleParameter(":ScrapFineID",OracleDbType.Int32,
  4057. Sid,ParameterDirection.Input),
  4058. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4059. ssid,ParameterDirection.Input),
  4060. new OracleParameter(":StaffID",OracleDbType.Int32,
  4061. drNow["StaffID"],ParameterDirection.Input),
  4062. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  4063. drNow["StaffStatus"],ParameterDirection.Input),
  4064. new OracleParameter(":JobsID",OracleDbType.Int32,
  4065. drNow["JobsID"],ParameterDirection.Input),
  4066. new OracleParameter(":BeginDate",OracleDbType.Date,
  4067. drNow["BeginDate"],ParameterDirection.Input),
  4068. new OracleParameter(":EndDate",OracleDbType.Date,
  4069. drNow["EndDate"],ParameterDirection.Input),
  4070. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  4071. drNow["BarCode"],ParameterDirection.Input),
  4072. new OracleParameter(":GoodsID",OracleDbType.Int32,
  4073. drNow["GoodsID"],ParameterDirection.Input),
  4074. new OracleParameter(":ScrapTime",OracleDbType.Date,
  4075. drNow["ScrapTime"],ParameterDirection.Input),
  4076. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  4077. drNow["ScrapFine"],ParameterDirection.Input),
  4078. new OracleParameter(":AccountID",OracleDbType.Int32,
  4079. userInfo.AccountID,ParameterDirection.Input),
  4080. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4081. userInfo.UserID,ParameterDirection.Input),
  4082. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4083. userInfo.UserID,ParameterDirection.Input)
  4084. };
  4085. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SParas);
  4086. }
  4087. //行政奖惩
  4088. DataTable dtAdmin = dsStaffSalary.Tables[5];
  4089. dtAdmin.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  4090. DataTable dtAdminNow = dtAdmin.DefaultView.ToTable();
  4091. foreach(DataRow drNow in dtAdminNow.Rows)
  4092. {
  4093. sbSql.Clear();
  4094. sbSql.Append("select SEQ_SSM_Admin_ProgressID.nextval from dual");
  4095. int Aid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4096. sbSql.Clear();
  4097. sbSql.Append("Insert into TP_SSM_Admin");
  4098. sbSql.Append(" (AdminID,StaffSalaryID,StaffID,JobsID,SalaryType,BeginDate,EndDate,TATAdminID,");
  4099. sbSql.Append(" AdministrationType,BaseAmount,IsEnd,RAPAmount,TotalAmount,AccountID,CreateUserID,UpdateUserID)");
  4100. sbSql.Append(" values (:AdminID,:StaffSalaryID,:StaffID,:JobsID,:SalaryType,:BeginDate,:EndDate,:TATAdminID,");
  4101. sbSql.Append(" :AdministrationType,:BaseAmount,:IsEnd,:RAPAmount,:TotalAmount,:AccountID,:CreateUserID,:UpdateUserID)");
  4102. OracleParameter[] AParas = new OracleParameter[] {
  4103. new OracleParameter(":AdminID",OracleDbType.Int32,
  4104. Aid,ParameterDirection.Input),
  4105. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4106. ssid,ParameterDirection.Input),
  4107. new OracleParameter(":StaffID",OracleDbType.Int32,
  4108. drNow["StaffID"],ParameterDirection.Input),
  4109. new OracleParameter(":JobsID",OracleDbType.Int32,
  4110. drNow["JobsID"],ParameterDirection.Input),
  4111. new OracleParameter(":SalaryType",OracleDbType.Int32,
  4112. drNow["SalaryType"],ParameterDirection.Input),
  4113. new OracleParameter(":BeginDate",OracleDbType.Date,
  4114. drNow["BeginDate"],ParameterDirection.Input),
  4115. new OracleParameter(":EndDate",OracleDbType.Date,
  4116. drNow["EndDate"],ParameterDirection.Input),
  4117. new OracleParameter(":TATAdminID",OracleDbType.Int32,
  4118. drNow["TATAdminID"],ParameterDirection.Input),
  4119. new OracleParameter(":AdministrationType",OracleDbType.Int32,
  4120. drNow["AdministrationType"],ParameterDirection.Input),
  4121. new OracleParameter(":BaseAmount",OracleDbType.Decimal,
  4122. drNow["BaseAmount"],ParameterDirection.Input),
  4123. new OracleParameter(":IsEnd",OracleDbType.Int32,
  4124. drNow["IsEnd"],ParameterDirection.Input),
  4125. new OracleParameter(":RAPAmount",OracleDbType.Decimal,
  4126. drNow["RAPAmount"],ParameterDirection.Input),
  4127. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  4128. drNow["TotalAmount"],ParameterDirection.Input),
  4129. new OracleParameter(":AccountID",OracleDbType.Int32,
  4130. userInfo.AccountID,ParameterDirection.Input),
  4131. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4132. userInfo.UserID,ParameterDirection.Input),
  4133. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4134. userInfo.UserID,ParameterDirection.Input)
  4135. };
  4136. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), AParas);
  4137. //然后根据员工ID以及策略ID,获取该条行政奖惩的明细信息
  4138. DataTable dtAdminDetail = dsStaffSalary.Tables[6];
  4139. dtAdminDetail.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"] + " And AdminID=" + drNow["TATAdminID"] + " And AccountID=" + drNow["SalaryType"] + " And StaffSalaryID=" + drNow["JobsId"];
  4140. DataTable dtAdminDetailNow = dtAdminDetail.DefaultView.ToTable();
  4141. foreach(DataRow drDetailNow in dtAdminDetailNow.Rows)
  4142. {
  4143. sbSql.Clear();
  4144. sbSql.Append("Insert into TP_SSM_AdminDetail");
  4145. sbSql.Append(" (AdminRAPID,AdminID,StaffSalaryID,StaffID,AccountID,CreateUserID,UpdateUserID)");
  4146. sbSql.Append(" values (:AdminRAPID,:AdminID,:StaffSalaryID,:StaffID,:AccountID,:CreateUserID,:UpdateUserID)");
  4147. OracleParameter[] ADParas = new OracleParameter[] {
  4148. new OracleParameter(":AdminRAPID",OracleDbType.Int32,
  4149. drDetailNow["AdminRAPID"],ParameterDirection.Input),
  4150. new OracleParameter(":AdminID",OracleDbType.Int32,
  4151. Aid,ParameterDirection.Input),
  4152. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4153. ssid,ParameterDirection.Input),
  4154. new OracleParameter(":StaffID",OracleDbType.Int32,
  4155. drDetailNow["StaffID"],ParameterDirection.Input),
  4156. new OracleParameter(":AccountID",OracleDbType.Int32,
  4157. userInfo.AccountID,ParameterDirection.Input),
  4158. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4159. userInfo.UserID,ParameterDirection.Input),
  4160. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4161. userInfo.UserID,ParameterDirection.Input)
  4162. };
  4163. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), ADParas);
  4164. }
  4165. }
  4166. //进度奖惩
  4167. DataTable dtProgress = dsStaffSalary.Tables[7];
  4168. dtProgress.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  4169. DataTable dtProgressNow = dtProgress.DefaultView.ToTable();
  4170. foreach (DataRow drNow in dtProgressNow.Rows)
  4171. {
  4172. sbSql.Clear();
  4173. sbSql.Append("select SEQ_SSM_Progress_ProgressID.nextval from dual");
  4174. int Pid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4175. sbSql.Clear();
  4176. sbSql.Append("Insert into TP_SSM_Progress");
  4177. sbSql.Append(" (ProgressID,StaffSalaryID,StaffID,JobsID,SalaryType,BeginDate,EndDate,TATProgressID,");
  4178. sbSql.Append(" BaseAmount,IsEnd,RAPAmount,TotalAmount,AccountID,CreateUserID,UpdateUserID)");
  4179. sbSql.Append(" values (:ProgressID,:StaffSalaryID,:StaffID,:JobsID,:SalaryType,:BeginDate,:EndDate,:TATProgressID,");
  4180. sbSql.Append(" :BaseAmount,:IsEnd,:RAPAmount,:TotalAmount,:AccountID,:CreateUserID,:UpdateUserID)");
  4181. OracleParameter[] PParas = new OracleParameter[] {
  4182. new OracleParameter(":ProgressID",OracleDbType.Int32,
  4183. Pid,ParameterDirection.Input),
  4184. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4185. ssid,ParameterDirection.Input),
  4186. new OracleParameter(":StaffID",OracleDbType.Int32,
  4187. drNow["StaffID"],ParameterDirection.Input),
  4188. new OracleParameter(":JobsID",OracleDbType.Int32,
  4189. drNow["JobsID"],ParameterDirection.Input),
  4190. new OracleParameter(":SalaryType",OracleDbType.Int32,
  4191. drNow["SalaryType"],ParameterDirection.Input),
  4192. new OracleParameter(":BeginDate",OracleDbType.Date,
  4193. drNow["BeginDate"],ParameterDirection.Input),
  4194. new OracleParameter(":EndDate",OracleDbType.Date,
  4195. drNow["EndDate"],ParameterDirection.Input),
  4196. new OracleParameter(":TATProgressID",OracleDbType.Int32,
  4197. drNow["TATProgressID"],ParameterDirection.Input),
  4198. new OracleParameter(":BaseAmount",OracleDbType.Decimal,
  4199. drNow["BaseAmount"],ParameterDirection.Input),
  4200. new OracleParameter(":IsEnd",OracleDbType.Int32,
  4201. drNow["IsEnd"],ParameterDirection.Input),
  4202. new OracleParameter(":RAPAmount",OracleDbType.Decimal,
  4203. drNow["RAPAmount"],ParameterDirection.Input),
  4204. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  4205. drNow["TotalAmount"],ParameterDirection.Input),
  4206. new OracleParameter(":AccountID",OracleDbType.Int32,
  4207. userInfo.AccountID,ParameterDirection.Input),
  4208. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4209. userInfo.UserID,ParameterDirection.Input),
  4210. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4211. userInfo.UserID,ParameterDirection.Input)
  4212. };
  4213. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), PParas);
  4214. //然后根据员工ID以及策略ID,获取该条行政奖惩的明细信息(前台把区分用的工种ID存在主信息ID中了)
  4215. DataTable dtProgressDetail = dsStaffSalary.Tables[8];
  4216. dtProgressDetail.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"] + " And ProgressID=" + drNow["JobsID"] + " And AccountID=" + drNow["SalaryType"];
  4217. DataTable dtProgressDetailNow = dtProgressDetail.DefaultView.ToTable();
  4218. foreach (DataRow drDetailNow in dtProgressDetailNow.Rows)
  4219. {
  4220. sbSql.Clear();
  4221. sbSql.Append("Insert into TP_SSM_ProgressDetail");
  4222. sbSql.Append(" (ProgressRAPID,ProgressID,StaffSalaryID,StaffID,AccountID,CreateUserID,UpdateUserID)");
  4223. sbSql.Append(" values (:ProgressRAPID,:ProgressID,:StaffSalaryID,:StaffID,:AccountID,:CreateUserID,:UpdateUserID)");
  4224. OracleParameter[] PDParas = new OracleParameter[] {
  4225. new OracleParameter(":ProgressRAPID",OracleDbType.Int32,
  4226. drDetailNow["ProgressRAPID"],ParameterDirection.Input),
  4227. new OracleParameter(":ProgressID",OracleDbType.Int32,
  4228. Pid,ParameterDirection.Input),
  4229. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4230. ssid,ParameterDirection.Input),
  4231. new OracleParameter(":StaffID",OracleDbType.Int32,
  4232. drDetailNow["StaffID"],ParameterDirection.Input),
  4233. new OracleParameter(":AccountID",OracleDbType.Int32,
  4234. userInfo.AccountID,ParameterDirection.Input),
  4235. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4236. userInfo.UserID,ParameterDirection.Input),
  4237. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4238. userInfo.UserID,ParameterDirection.Input)
  4239. };
  4240. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), PDParas);
  4241. }
  4242. }
  4243. //管理岗位工资
  4244. DataTable dtManagerSalary = dsStaffSalary.Tables[9];
  4245. dtManagerSalary.DefaultView.RowFilter = " StaffId=" + drStaffSalaryFor["StaffID"];
  4246. DataTable dtManagerSalaryNow = dtManagerSalary.DefaultView.ToTable();
  4247. foreach (DataRow drNow in dtManagerSalaryNow.Rows)
  4248. {
  4249. sbSql.Clear();
  4250. sbSql.Append("select SEQ_SSM_M_ManagerSalaryID.nextval from dual");
  4251. int Mid = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  4252. sbSql.Clear();
  4253. sbSql.Append("Insert into TP_SSM_ManagerSalary");
  4254. sbSql.Append(" (ManagerSalaryID,StaffSalaryID,StaffID,Member,Salary,AccountID,CreateUserID,UpdateUserID)");
  4255. sbSql.Append(" values (:ManagerSalaryID,:StaffSalaryID,:StaffID,:Member,:Salary,:AccountID,:CreateUserID,:UpdateUserID)");
  4256. OracleParameter[] MParas = new OracleParameter[] {
  4257. new OracleParameter(":ManagerSalaryID",OracleDbType.Int32,
  4258. Mid,ParameterDirection.Input),
  4259. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4260. ssid,ParameterDirection.Input),
  4261. new OracleParameter(":StaffID",OracleDbType.Int32,
  4262. drNow["StaffID"],ParameterDirection.Input),
  4263. new OracleParameter(":Member",OracleDbType.Int32,
  4264. drNow["Member"],ParameterDirection.Input),
  4265. new OracleParameter(":Salary",OracleDbType.Decimal,
  4266. drNow["Salary"],ParameterDirection.Input),
  4267. new OracleParameter(":AccountID",OracleDbType.Int32,
  4268. userInfo.AccountID,ParameterDirection.Input),
  4269. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  4270. userInfo.UserID,ParameterDirection.Input),
  4271. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  4272. userInfo.UserID,ParameterDirection.Input)
  4273. };
  4274. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), MParas);
  4275. }
  4276. }
  4277. //结算完毕后要把所有相关的常规数据修改为已结算
  4278. //sbSql.Clear();
  4279. //sbSql.Append("Update TP_PM_ProductionData set SettlementFlag = 1 where ProductionDataID = :ProductionDataID");
  4280. //foreach(DataRow drFor in dsProductionData.Tables[0].Rows)
  4281. //{
  4282. // OracleParameter[] PDParas = new OracleParameter[] {
  4283. // new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  4284. // drFor["ProductionDataID"],ParameterDirection.Input)
  4285. // };
  4286. // returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), PDParas);
  4287. //}
  4288. //sbSql.Clear();
  4289. //sbSql.Append("Update TP_HR_StaffAttendance set SettlementFlag = 1 where StaffID = :StaffID and AttendanceDate=:AttendanceDate");
  4290. //foreach(DataRow drFor in dsStaffAttendance.Tables[0].Rows)
  4291. //{
  4292. // OracleParameter[] HRParas = new OracleParameter[] {
  4293. // new OracleParameter(":StaffID",OracleDbType.Int32,
  4294. // drFor["StaffID"],ParameterDirection.Input),
  4295. // new OracleParameter(":AttendanceDate",OracleDbType.Date,
  4296. // drFor["AttendanceDate"],ParameterDirection.Input)
  4297. // };
  4298. // returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), HRParas);
  4299. //}
  4300. oracleTrConn.Commit();
  4301. oracleTrConn.Disconnect();
  4302. }
  4303. catch(Exception ex)
  4304. {
  4305. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4306. {
  4307. oracleTrConn.Rollback();
  4308. oracleTrConn.Disconnect();
  4309. }
  4310. throw ex;
  4311. }
  4312. finally
  4313. {
  4314. if (oracleTrConn.ConnState == ConnectionState.Open)
  4315. {
  4316. oracleTrConn.Rollback();
  4317. oracleTrConn.Disconnect();
  4318. }
  4319. }
  4320. return returnRows;
  4321. }
  4322. /// <summary>
  4323. /// 调整工资结算信息
  4324. /// </summary>
  4325. /// <param name="salaryEntity">调整工资总体信息</param>
  4326. /// <param name="dtStaffSalary">各员工工资信息集合</param>
  4327. /// <returns>影响行数</returns>
  4328. public static int EditSalarySettlement(GetSalaryEntity salaryEntity, DataTable dtStaffSalary)
  4329. {
  4330. int returnRows = 0;
  4331. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4332. try
  4333. {
  4334. //首先修改工资结算整体信息
  4335. StringBuilder sbSql = new StringBuilder();
  4336. sbSql.Append(@"Update TP_SSM_SalarySettlement Set Remarks = :Remarks,AdjustmentAmount = :AdjustmentAmount,TotalAmount = :TotalAmount
  4337. Where SalarySettlementID = :SalarySettlementID");
  4338. OracleParameter[] SParas = new OracleParameter[] {
  4339. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4340. salaryEntity.Remarks,ParameterDirection.Input),
  4341. new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
  4342. salaryEntity.AdjustmentAmount,ParameterDirection.Input),
  4343. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  4344. salaryEntity.TotalAmount,ParameterDirection.Input),
  4345. new OracleParameter(":SalarySettlementID",OracleDbType.Int32,
  4346. salaryEntity.SalarySettlementID,ParameterDirection.Input)
  4347. };
  4348. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SParas);
  4349. //然后遍历修改每一条调整信息
  4350. sbSql.Clear();
  4351. sbSql.Append(@"Update TP_SSM_StaffSalary Set AdjustmentAmount = :AdjustmentAmount,
  4352. TotalAmount = :TotalAmount,Remarks = :Remarks
  4353. Where StaffSalaryID = :StaffSalaryID");
  4354. foreach(DataRow drFor in dtStaffSalary.Rows)
  4355. {
  4356. if(drFor.RowState == DataRowState.Modified)
  4357. {
  4358. OracleParameter[] SSParas = new OracleParameter[] {
  4359. new OracleParameter(":AdjustmentAmount",OracleDbType.Decimal,
  4360. drFor["AdjustmentAmount"],ParameterDirection.Input),
  4361. new OracleParameter(":TotalAmount",OracleDbType.Decimal,
  4362. drFor["TotalAmount"],ParameterDirection.Input),
  4363. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  4364. drFor["Remarks"],ParameterDirection.Input),
  4365. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4366. drFor["StaffSalaryID"],ParameterDirection.Input)
  4367. };
  4368. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SSParas);
  4369. }
  4370. }
  4371. oracleTrConn.Commit();
  4372. oracleTrConn.Disconnect();
  4373. return returnRows;
  4374. }
  4375. catch(Exception ex)
  4376. {
  4377. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4378. {
  4379. oracleTrConn.Rollback();
  4380. oracleTrConn.Disconnect();
  4381. }
  4382. throw ex;
  4383. }
  4384. }
  4385. /// <summary>
  4386. /// 审批工资结算信息
  4387. /// </summary>
  4388. /// <param name="dtStaffSalary">各员工工资信息集合</param>
  4389. /// <returns>影响行数</returns>
  4390. public static int AuditSalarySettlement(DataTable dtStaffSalary,SUserInfo userInfo)
  4391. {
  4392. int returnRows = 0;
  4393. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  4394. try
  4395. {
  4396. StringBuilder sbSql = new StringBuilder();
  4397. //遍历修改每一条调整信息
  4398. sbSql.Append(@"Update TP_SSM_StaffSalary Set AuditStatus = :AuditStatus,
  4399. Auditor = :Auditor,AuditlDate = :AuditlDate
  4400. Where StaffSalaryID = :StaffSalaryID");
  4401. foreach (DataRow drFor in dtStaffSalary.Rows)
  4402. {
  4403. if (drFor.RowState == DataRowState.Modified)
  4404. {
  4405. OracleParameter[] SSParas = new OracleParameter[] {
  4406. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  4407. drFor["AuditStatus"],ParameterDirection.Input),
  4408. new OracleParameter(":Auditor",OracleDbType.Int32,
  4409. userInfo.UserID,ParameterDirection.Input),
  4410. new OracleParameter(":AuditlDate",OracleDbType.Date,
  4411. DateTime.Now,ParameterDirection.Input),
  4412. new OracleParameter(":StaffSalaryID",OracleDbType.Int32,
  4413. drFor["StaffSalaryID"],ParameterDirection.Input)
  4414. };
  4415. returnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SSParas);
  4416. }
  4417. }
  4418. oracleTrConn.Commit();
  4419. oracleTrConn.Disconnect();
  4420. return returnRows;
  4421. }
  4422. catch (Exception ex)
  4423. {
  4424. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  4425. {
  4426. oracleTrConn.Rollback();
  4427. oracleTrConn.Disconnect();
  4428. }
  4429. throw ex;
  4430. }
  4431. }
  4432. #endregion
  4433. }
  4434. }