PMModuleLogicDALPartial.cs 173 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PMModuleLogicDAL.cs
  5. * 2.功能描述:生产管理数据库访问类(插入、修改、删除)
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 庄天威 2014/09/20 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.PMModuleLogic
  20. {
  21. /// <summary>
  22. /// 生产管理数据库访问类(插入、修改、删除)
  23. /// </summary>
  24. public partial class PMModuleLogicDAL
  25. {
  26. #region 注浆日报
  27. /// <summary>
  28. /// 新建注浆日报信息
  29. /// </summary>
  30. /// <param name="dailyEntity">注浆日报实体</param>
  31. /// <param name="dailyDetailList">明细实体集合</param>
  32. /// <param name="user">用户基本信息</param>
  33. /// <returns>int返回受影响行数</returns>
  34. /// <remarks>
  35. /// 庄天威 2014.09.20 新建
  36. /// </remarks>
  37. public static int AddGroutingDaily(List<GroutingDailyEntity> dailyEntityList, List<GroutingDailyDetailEntity> dailyDetailList, SUserInfo user)
  38. {
  39. int returnRows = 0;
  40. int detailReturnRows = 0;
  41. int productReturnRows = 0;
  42. int addCountReturn = 0;
  43. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  44. DataTable dtOldClassSet;
  45. try
  46. {
  47. oracleTrConn.Connect();
  48. StringBuilder sbSql = new StringBuilder();
  49. // 获得账务日期
  50. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, user);
  51. int UCount = 0;
  52. int MCount = 0;
  53. //首先添加注浆日报主体信息
  54. foreach (GroutingDailyEntity dailyEntity in dailyEntityList)
  55. {
  56. //首先查询注浆日期的班次配置
  57. sbSql.Clear();
  58. sbSql.Append(@"select * from TP_PC_ClassesSetting
  59. where AccountID =:accountID
  60. and AccountDate>=:AccountDateStart
  61. and AccountDate<=:AccountDateEnd
  62. and UserId=:UserId
  63. Order by ClassesSettingID");
  64. OracleParameter[] CSParas = new OracleParameter[] {
  65. new OracleParameter(":accountID",OracleDbType.Int32,
  66. user.AccountID,ParameterDirection.Input),
  67. new OracleParameter(":AccountDateStart",OracleDbType.Date,
  68. Convert.ToDateTime(dailyEntity.GroutingDate),ParameterDirection.Input),
  69. new OracleParameter(":AccountDateEnd",OracleDbType.Date,
  70. Convert.ToDateTime(dailyEntity.GroutingDate).AddHours(23).AddMinutes(59).AddSeconds(59),ParameterDirection.Input),
  71. new OracleParameter(":UserId",OracleDbType.NVarchar2,
  72. dailyEntity.UserID,ParameterDirection.Input)
  73. };
  74. dtOldClassSet = oracleTrConn.GetSqlResultToDt(sbSql.ToString(), CSParas);
  75. //今天以前的注浆信息(补录)
  76. if (Convert.ToDateTime(dailyEntity.GroutingDate) < accountDate)
  77. {
  78. //如果没有信息就不可以补录
  79. if (dtOldClassSet.Rows.Count == 0)
  80. {
  81. oracleTrConn.Rollback();
  82. oracleTrConn.Disconnect();
  83. return -50001;
  84. }
  85. }
  86. else //如果是当天的(当天以后的在前台已经做过处理)
  87. {
  88. //如果没有信息,查看工号下是否有员工
  89. if (dtOldClassSet.Rows.Count == 0)
  90. {
  91. sbSql.Clear();
  92. sbSql.Append(string.Format("select * from tp_hr_staff where staffid in(select staffid from tp_mst_userstaff where userid={0}) and valueflag=1 and (staffstatus=1 or staffstatus=2)", dailyEntity.UserID));
  93. DataTable dtUser = oracleTrConn.GetSqlResultToDt(sbSql.ToString(), null);
  94. //如果没有员工,提示先绑定员工
  95. if (dtUser.Rows.Count == 0)
  96. {
  97. oracleTrConn.Rollback();
  98. oracleTrConn.Disconnect();
  99. return -Convert.ToInt32(dailyEntity.UserID);
  100. }
  101. }
  102. }
  103. //添加注浆主体信息
  104. sbSql.Clear();
  105. sbSql.Append("select SEQ_PM_GroutingDaily_ID.nextval from dual");
  106. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  107. sbSql.Clear();
  108. sbSql.Append("Insert into TP_PM_GroutingDaily");
  109. sbSql.Append(" (GroutingDailyID,GroutingLineID,GroutingLineCode,GroutingLineName,GroutingDate,UserID,UserCode,");
  110. sbSql.Append(" MouldQuantity,GMouldTypeID,CanManyTimes,Remarks,AccountID,ValueFlag,CreateTime,");
  111. sbSql.Append(" CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  112. sbSql.Append(" values(:GroutingDailyID,:GroutingLineID,:GroutingLineCode,:GroutingLineName,:GroutingDate,:UserID,:UserCode,");
  113. sbSql.Append(" :MouldQuantity,:GMouldTypeID,:CanManyTimes,:Remarks,:AccountID,:ValueFlag,sysdate,");
  114. sbSql.Append(" :CreateUserID,sysdate,:UpdateUserID,sysdate)");
  115. OracleParameter[] Paras = new OracleParameter[] {
  116. new OracleParameter(":GroutingDailyID",OracleDbType.Int32,
  117. id,ParameterDirection.Input),
  118. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  119. dailyEntity.GroutingLineID,ParameterDirection.Input),
  120. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  121. dailyEntity.GroutingLineCode,ParameterDirection.Input),
  122. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  123. dailyEntity.GroutingLineName,ParameterDirection.Input),
  124. new OracleParameter(":GroutingDate",OracleDbType.Date,
  125. dailyEntity.GroutingDate,ParameterDirection.Input),
  126. new OracleParameter(":UserID",OracleDbType.Int32,
  127. dailyEntity.UserID,ParameterDirection.Input),
  128. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  129. dailyEntity.UserCode,ParameterDirection.Input),
  130. new OracleParameter(":MouldQuantity",OracleDbType.Int32,
  131. dailyEntity.MouldQuantity,ParameterDirection.Input),
  132. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  133. dailyEntity.GMouldTypeID,ParameterDirection.Input),
  134. new OracleParameter(":CanManyTimes",OracleDbType.Int32,
  135. dailyEntity.CanManyTimes,ParameterDirection.Input),
  136. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  137. dailyEntity.Remarks,ParameterDirection.Input),
  138. new OracleParameter(":AccountID",OracleDbType.Int32,
  139. user.AccountID,ParameterDirection.Input),
  140. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  141. dailyEntity.ValueFlag,ParameterDirection.Input),
  142. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  143. user.UserID,ParameterDirection.Input),
  144. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  145. user.UserID,ParameterDirection.Input)
  146. };
  147. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  148. //注浆者
  149. productReturnRows = AddGroutingProducer(oracleTrConn, accountDate, id, Convert.ToInt32(dailyEntity.UserID), user);
  150. //首先获取模具个数
  151. // 排序导致 模具个数错位。 by chenxy 2015-03-26 begin
  152. //MCount += Convert.ToInt32(dailyEntity.MouldQuantity);
  153. //for (int i = UCount; i < MCount; i++)
  154. // 排序导致 模具个数错位。 by chenxy 2015-03-26 end
  155. for (int i = 0; i < dailyDetailList.Count; i++)
  156. {
  157. // 排序导致 模具个数错位。 by chenxy 2015-03-26 begin
  158. if (dailyDetailList[i].GroutingLineID != dailyEntity.GroutingLineID)
  159. {
  160. continue;
  161. }
  162. // 排序导致 模具个数错位。 by chenxy 2015-03-26 end
  163. sbSql.Clear();
  164. sbSql.Append("select SEQ_PM_GroutingDailyD_ID.nextval from dual");
  165. int detailId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  166. sbSql.Clear();
  167. GroutingDailyDetailEntity dailyDetail = dailyDetailList[i];
  168. sbSql.Append("Insert into TP_PM_GroutingDailyDetail");
  169. sbSql.Append(" (GroutingDailyDetailID,GroutingDailyID,GroutingLineID,GroutingLineCode,GroutingLineName,GroutingLineDetailID,UserID,UserCode,");
  170. sbSql.Append(" GroutingDate,GroutingMouldCode,MouldCode,GoodsID,GoodsCode,GoodsName,GMouldStatus,GroutingCount,GroutingFlag,");
  171. sbSql.Append(" NoGroutingRreason,Remarks,AccountID,ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  172. sbSql.Append(" values(:GroutingDailyDetailID,:GroutingDailyID,:GroutingLineID,:GroutingLineCode,:GroutingLineName,:GroutingLineDetailID,:UserID,:UserCode,");
  173. sbSql.Append(" :GroutingDate,:GroutingMouldCode,:MouldCode,:GoodsID,:GoodsCode,:GoodsName,:GMouldStatus,:GroutingCount,:GroutingFlag,");
  174. sbSql.Append(" :NoGroutingRreason,:Remarks,:AccountID,:ValueFlag,sysdate,:CreateUserID,sysdate,:UpdateUserID,sysdate)");
  175. OracleParameter[] DDParas = new OracleParameter[] {
  176. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  177. detailId,ParameterDirection.Input),
  178. new OracleParameter(":GroutingDailyID",OracleDbType.Int32,
  179. id,ParameterDirection.Input),
  180. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  181. dailyDetail.GroutingLineID,ParameterDirection.Input),
  182. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  183. dailyDetail.GroutingLineCode,ParameterDirection.Input),
  184. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  185. dailyDetail.GroutingLineName,ParameterDirection.Input),
  186. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  187. dailyDetail.GroutingLineDetailID,ParameterDirection.Input),
  188. new OracleParameter(":UserID",OracleDbType.Int32,
  189. dailyEntity.UserID,ParameterDirection.Input),
  190. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  191. dailyEntity.UserCode,ParameterDirection.Input),
  192. new OracleParameter(":GroutingDate",OracleDbType.Date,
  193. dailyDetail.GroutingDate,ParameterDirection.Input),
  194. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  195. dailyDetail.GroutingMouldCode,ParameterDirection.Input),
  196. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  197. dailyDetail.MouldCode,ParameterDirection.Input),
  198. new OracleParameter(":GoodsID",OracleDbType.Int32,
  199. dailyDetail.GoodsID,ParameterDirection.Input),
  200. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2,
  201. dailyDetail.GoodsCode,ParameterDirection.Input),
  202. new OracleParameter(":GoodsName",OracleDbType.NVarchar2,
  203. dailyDetail.GoodsName,ParameterDirection.Input),
  204. new OracleParameter(":GMouldStatus",OracleDbType.Int32,
  205. dailyDetail.GMouldStatus,ParameterDirection.Input),
  206. new OracleParameter(":GroutingCount",OracleDbType.Int32,
  207. dailyDetail.GroutingCount,ParameterDirection.Input),
  208. new OracleParameter(":GroutingFlag",OracleDbType.Int32,
  209. dailyDetail.GroutingFlag,ParameterDirection.Input),
  210. new OracleParameter(":NoGroutingRreason",OracleDbType.Int32,
  211. dailyDetail.NoGroutingRreason,ParameterDirection.Input),
  212. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  213. dailyDetail.Remarks,ParameterDirection.Input),
  214. new OracleParameter(":AccountID",OracleDbType.Int32,
  215. user.AccountID,ParameterDirection.Input),
  216. new OracleParameter(":ValueFlag",OracleDbType.Int32,
  217. 1,ParameterDirection.Input),
  218. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  219. user.UserID,ParameterDirection.Input),
  220. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  221. user.UserID,ParameterDirection.Input)
  222. };
  223. detailReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DDParas);
  224. //更新成型线明细的注浆次数(如果注浆了次数才+1)
  225. if (dailyDetail.GroutingFlag == 1)
  226. {
  227. if (dailyDetail.isBetweenGroutingLineDetail == false) //如果补录数据为当前使用模具的注浆记录
  228. {
  229. sbSql.Clear();
  230. sbSql.Append(" update TP_PC_GroutingLineDetail");
  231. sbSql.Append(" set GroutingCount=GroutingCount + 1");
  232. sbSql.Append(" where GroutingLineDetailID = " + dailyDetail.GroutingLineDetailID);
  233. sbSql.Append(" and MouldCode = '" + dailyDetail.MouldCode + "'");
  234. }
  235. else //否则去履历中加次数
  236. {
  237. sbSql.Clear();
  238. sbSql.Append(" update TP_PC_GMouldHistory");
  239. sbSql.Append(" set GroutingCount=GroutingCount + 1");
  240. sbSql.Append(" where GroutingLineDetailID = " + dailyDetail.GroutingLineDetailID);
  241. sbSql.Append(" and MouldCode = '" + dailyDetail.MouldCode + "'");
  242. }
  243. addCountReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  244. if (dailyDetail.isBetweenData == true) //如果是补填数据,那么补填注浆时间后的同模具注浆记录都要加一
  245. {
  246. sbSql.Clear();
  247. sbSql.Append(" update TP_PM_GroutingDailyDetail");
  248. sbSql.Append(" set GroutingCount = GroutingCount+1");
  249. sbSql.Append(" where GroutingDate > to_date('" + dailyDetail.GroutingDate + "','yyyy-MM-dd hh24:mi:ss')");
  250. sbSql.Append(" and MouldCode = '" + dailyDetail.MouldCode + "'");
  251. oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  252. }
  253. }
  254. }
  255. UCount = MCount;
  256. }
  257. if (returnRows == 0 || detailReturnRows == 0 || addCountReturn == 0)
  258. {
  259. oracleTrConn.Rollback();
  260. oracleTrConn.Disconnect();
  261. }
  262. else
  263. {
  264. oracleTrConn.Commit();
  265. oracleTrConn.Disconnect();
  266. }
  267. }
  268. catch (Exception ex)
  269. {
  270. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  271. {
  272. oracleTrConn.Rollback();
  273. oracleTrConn.Disconnect();
  274. }
  275. throw ex;
  276. }
  277. finally
  278. {
  279. if (oracleTrConn.ConnState == ConnectionState.Open)
  280. {
  281. oracleTrConn.Disconnect();
  282. }
  283. }
  284. return returnRows;
  285. }
  286. /// <summary>
  287. /// 添加注浆者
  288. /// </summary>
  289. /// <param name="oracleTrConn">连接对象</param>
  290. /// <param name="accountDate">账务日期</param>
  291. /// <param name="groutingDailyID">注浆数据ID</param>
  292. /// <param name="dailyUserID">注浆工号ID</param>
  293. /// <param name="sUserInfo">用户基本信息</param>
  294. /// <returns>int</returns>
  295. private static int AddGroutingProducer(IDBTransaction oracleTrConn, DateTime accountDate, int groutingDailyID, int dailyUserID, SUserInfo sUserInfo)
  296. {
  297. // 参数
  298. OracleParameter[] paras;
  299. #region 查询班次配置表是否有数据
  300. string sql = "select count(ClassesSettingID)"
  301. + " from TP_PC_ClassesDetail"
  302. + " where Valueflag =1 and AccountID = :accountID"
  303. + " and UserID = :userID"
  304. + " and AccountDate = :accountDate";
  305. paras = new OracleParameter[] {
  306. new OracleParameter(":accountID",sUserInfo.AccountID),
  307. new OracleParameter(":userID",dailyUserID),
  308. new OracleParameter(":accountDate",accountDate),
  309. };
  310. string countStr = oracleTrConn.GetSqlResultToStr(sql, paras);
  311. int classesSettingID = 0;
  312. // 查询新插入的班次配置表ID
  313. sql = "select SEQ_PC_ClassesSetting_ID.nextval from dual";
  314. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  315. // 新插入的班次配置表ID
  316. if (!string.IsNullOrEmpty(idStr))
  317. {
  318. classesSettingID = int.Parse(idStr);
  319. }
  320. else
  321. {
  322. return 0;
  323. }
  324. #endregion
  325. #region 没有班次配置数据,将工号所属员工插入班次配置表中
  326. if (string.IsNullOrEmpty(countStr) || Constant.INT_IS_ZERO == int.Parse(countStr))
  327. {
  328. #region 班次配置总表
  329. sql = "insert into tp_pc_classessetting"
  330. + " (ClassesSettingID,accountdate, "
  331. + " userid, "
  332. + " usercode, "
  333. + " accountid, "
  334. + " createuserid, "
  335. + " updateuserid)"
  336. + " select :ClassesSettingID,"
  337. + " :accountdate, "
  338. + " USERID, "
  339. + " UserCode, "
  340. + " accountid,"
  341. + " :createuserid,"
  342. + " :updateuserid"
  343. + " from TP_MST_User"
  344. + " where UserID = :userID";
  345. paras = new OracleParameter[] {
  346. new OracleParameter(":ClassesSettingID",classesSettingID),
  347. new OracleParameter(":accountdate",accountDate),
  348. new OracleParameter(":createuserid",sUserInfo.UserID),
  349. new OracleParameter(":updateuserid",sUserInfo.UserID),
  350. new OracleParameter(":userID",dailyUserID),
  351. };
  352. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  353. // 失败
  354. if (result != Constant.INT_IS_ONE)
  355. {
  356. return 0;
  357. }
  358. //// 查询新插入的班次配置表ID
  359. //sql = "select SEQ_PC_ClassesSetting_ID.Currval from dual";
  360. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  361. //// 新插入的班次配置表ID
  362. //if (!string.IsNullOrEmpty(idStr))
  363. //{
  364. // classesSettingID = int.Parse(idStr);
  365. //}
  366. //else
  367. //{
  368. // return 0;
  369. //}
  370. #endregion
  371. #region 班次配置明细SQL
  372. sql = " insert into tp_pc_classesdetail"
  373. + " (classessettingid,"
  374. + " accountdate,"
  375. + " userid,"
  376. + " usercode,"
  377. + " UJobsID,"
  378. + " staffid,"
  379. + " SJobsID,"
  380. + " staffstatus,"
  381. + " accountid,"
  382. + " createuserid,"
  383. + " updateuserid)"
  384. + " select "
  385. + " :classessettingid,"
  386. + " :accountdate,"
  387. + " tuser.Userid,"
  388. + " tuser.usercode,"
  389. + " userStaff.Ujobsid,"
  390. + " userStaff.Staffid,"
  391. + " staff.Jobs,"
  392. + " staff.staffstatus,"
  393. + " :accountID,"
  394. + " :createuserid,"
  395. + " :updateuserid"
  396. + " from TP_MST_UserStaff userStaff"
  397. + " inner join tp_hr_staff staff on staff.staffid = userStaff.Staffid"
  398. + " inner join TP_MST_User tuser on tuser.userid = userStaff.userid"
  399. + " where (staff.StaffStatus = 1 or staff.StaffStatus = 2)"
  400. + " and staff.ValueFlag = 1"
  401. + " and staff.AccountID = :accountID"
  402. + " and userStaff.UserID = :userID";
  403. paras = new OracleParameter[] {
  404. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  405. new OracleParameter(":accountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  406. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  407. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  408. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  409. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  410. new OracleParameter(":userID",OracleDbType.Int32,dailyUserID,ParameterDirection.Input),
  411. };
  412. result = oracleTrConn.ExecuteNonQuery(sql, paras);
  413. // 失败
  414. if (result <= 0)
  415. {
  416. return 0;
  417. }
  418. #endregion
  419. }
  420. #endregion
  421. #region 将班次配置表中的数据插入注浆者表中
  422. sql = "insert into TP_PM_GroutingProducer"
  423. + " (GroutingDailyID,"
  424. + " StaffID,"
  425. + " StaffCode,"
  426. + " StaffStatus,"
  427. + " UserID,"
  428. + " UserCode,"
  429. + " UJobsID,"
  430. + " SJobsID,"
  431. + " classessettingid"
  432. + " )"
  433. + " select :GroutingDailyID,"
  434. + " classes.staffid,"
  435. + " staff.staffcode,"
  436. + " staff.staffstatus,"
  437. + " classes.userid,"
  438. + " muser.usercode,"
  439. + " classes.Ujobsid,"
  440. + " classes.Sjobsid,"
  441. + " :classessettingid"
  442. + " from tp_pc_classesdetail classes"
  443. + " inner join TP_HR_Staff staff"
  444. + " on classes.staffid = staff.staffid"
  445. + " inner join TP_MST_User muser "
  446. + " on classes.userid = muser.userid"
  447. + " where ValueFlag = 1"
  448. + " and classes.classessettingid = (select max(ClassesSettingID)"
  449. + " from TP_PC_ClassesSetting"
  450. + " where ValueFlag = 1 and AccountDate=:accountDate"
  451. + " and UserID = :userID)";
  452. paras = new OracleParameter[] {
  453. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  454. new OracleParameter(":GroutingDailyID",groutingDailyID),
  455. new OracleParameter(":accountDate",accountDate),
  456. new OracleParameter(":userID",dailyUserID),
  457. };
  458. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  459. // 失败
  460. if (resultCount == Constant.INT_IS_ZERO)
  461. {
  462. return 0;
  463. }
  464. #endregion
  465. return 1;
  466. }
  467. /// <summary>
  468. /// 修改注浆日报信息(明细)
  469. /// </summary>
  470. /// <param name="dailyDetailList">明细实体集合</param>
  471. /// <param name="user">用户基本信息</param>
  472. /// <returns>int</returns>
  473. /// <remarks>
  474. /// 庄天威 2014.09.20 新建
  475. /// </remarks>
  476. public static int UpdateGroutingDaily(List<GroutingDailyDetailEntity> dailyDetailList, SUserInfo user)
  477. {
  478. int detailReturnRows = 0;
  479. int addCountReturn = 0;
  480. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  481. try
  482. {
  483. oracleTrConn.Connect();
  484. StringBuilder sbSql = new StringBuilder();
  485. //循环明细信息(能修改的:注浆次数,是否注浆,未注浆原因,备注)
  486. foreach (GroutingDailyDetailEntity dailyDetailEntity in dailyDetailList)
  487. {
  488. sbSql.Clear();
  489. sbSql.Append("update TP_PM_GroutingDailyDetail");
  490. sbSql.Append(" set GroutingCount=:GroutingCount,");
  491. sbSql.Append(" GroutingFlag=:GroutingFlag,");
  492. sbSql.Append(" Remarks=:Remarks");
  493. if (dailyDetailEntity.NoGroutingRreason != null)
  494. {
  495. sbSql.Append(",NoGroutingRreason=" + dailyDetailEntity.NoGroutingRreason);
  496. }
  497. else
  498. {
  499. sbSql.Append(",NoGroutingRreason=null");
  500. }
  501. sbSql.Append(" where GroutingDailyDetailID=:GroutingDailyDetailID and OPTimeStamp=:OPTimeStamp ");
  502. OracleParameter[] DDParas = new OracleParameter[] {
  503. new OracleParameter(":GroutingCount",OracleDbType.Decimal,
  504. dailyDetailEntity.GroutingCount,ParameterDirection.Input),
  505. new OracleParameter(":GroutingFlag",OracleDbType.Int32,
  506. dailyDetailEntity.GroutingFlag,ParameterDirection.Input),
  507. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  508. dailyDetailEntity.Remarks,ParameterDirection.Input),
  509. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  510. dailyDetailEntity.GroutingDailyDetailID,ParameterDirection.Input),
  511. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  512. dailyDetailEntity.OPTimeStamp,ParameterDirection.Input)
  513. };
  514. detailReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), DDParas);
  515. //如果注浆状态被修改,那么注浆次数要有相应变化
  516. if (dailyDetailEntity.GroutingFlagIsChange == true)
  517. {
  518. if (dailyDetailEntity.GroutingFlag == 1)
  519. {
  520. int NowReturn = 0;
  521. //如果改为已注浆,次数要加到模具或履历上(由于模具ID唯一,必定有一个成功,这样就不用查询了)
  522. sbSql.Clear();
  523. sbSql.Append(" update TP_PC_GroutingLineDetail");
  524. sbSql.Append(" set GroutingCount=GroutingCount + 1");
  525. sbSql.Append(" where GroutingLineDetailID = " + dailyDetailEntity.GroutingLineDetailID);
  526. sbSql.Append(" and MouldCode = '" + dailyDetailEntity.MouldCode + "'");
  527. NowReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  528. if (NowReturn == 0) //如果未成功才去履历表中进行操作,否则节省一次操作资源
  529. {
  530. sbSql.Clear();
  531. sbSql.Append(" update TP_PC_GMouldHistory");
  532. sbSql.Append(" set GroutingCount=GroutingCount +1");
  533. sbSql.Append(" where GroutingLineDetailID = " + dailyDetailEntity.GroutingLineDetailID);
  534. sbSql.Append(" and MouldCode = '" + dailyDetailEntity.MouldCode + "'");
  535. NowReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  536. }
  537. if (NowReturn > 0)
  538. {
  539. //然后,修改全部同模具编号,并且注浆日报明细时间大于本注浆日报明细时间的全部注浆明细
  540. sbSql.Clear();
  541. sbSql.Append(" update TP_PM_GroutingDailyDetail");
  542. sbSql.Append(" set GroutingCount=GroutingCount+1");
  543. sbSql.Append(" where MouldCode= '" + dailyDetailEntity.MouldCode + "'");
  544. sbSql.Append(" and (GroutingDate > to_date('" + dailyDetailEntity.GroutingDate + "','yyyy-MM-dd hh24:mi:ss')");
  545. sbSql.Append(" or (GroutingDate = to_date('" + dailyDetailEntity.GroutingDate + "','yyyy-MM-dd hh24:mi:ss') ");
  546. sbSql.Append(" and CreateTime > to_date('" + dailyDetailEntity.CreateTime + "','yyyy-MM-dd hh24:mi:ss')))");
  547. addCountReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  548. }
  549. }
  550. else if (dailyDetailEntity.GroutingFlag == 0) //反之,要减去模具或履历的注浆次数
  551. {
  552. int NowReturn = 0;
  553. sbSql.Clear();
  554. sbSql.Append(" update TP_PC_GroutingLineDetail");
  555. sbSql.Append(" set GroutingCount=GroutingCount - 1 ");
  556. sbSql.Append(" where GroutingLineDetailID = " + dailyDetailEntity.GroutingLineDetailID);
  557. sbSql.Append(" and MouldCode = '" + dailyDetailEntity.MouldCode + "'");
  558. NowReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  559. if (NowReturn == 0)
  560. {
  561. sbSql.Clear();
  562. sbSql.Append(" update TP_PC_GMouldHistory");
  563. sbSql.Append(" set GroutingCount=GroutingCount -1");
  564. sbSql.Append(" where GroutingLineDetailID = " + dailyDetailEntity.GroutingLineDetailID);
  565. sbSql.Append(" and MouldCode = '" + dailyDetailEntity.MouldCode + "'");
  566. NowReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  567. }
  568. if (NowReturn > 0)
  569. {
  570. //然后,修改全部同模具编号,并且注浆日报明细时间大于本注浆日报明细时间的全部注浆明细
  571. sbSql.Clear();
  572. sbSql.Append(" update TP_PM_GroutingDailyDetail");
  573. sbSql.Append(" set GroutingCount=GroutingCount-1");
  574. sbSql.Append(" where MouldCode= '" + dailyDetailEntity.MouldCode + "'");
  575. sbSql.Append(" and (GroutingDate > to_date('" + dailyDetailEntity.GroutingDate + "','yyyy-MM-dd hh24:mi:ss')");
  576. sbSql.Append(" or (GroutingDate = to_date('" + dailyDetailEntity.GroutingDate + "','yyyy-MM-dd hh24:mi:ss') ");
  577. sbSql.Append(" and CreateTime > to_date('" + dailyDetailEntity.CreateTime + "','yyyy-MM-dd hh24:mi:ss')))");
  578. addCountReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString());
  579. }
  580. }
  581. }
  582. }
  583. if (detailReturnRows == 0)
  584. {
  585. oracleTrConn.Rollback();
  586. oracleTrConn.Disconnect();
  587. }
  588. else
  589. {
  590. oracleTrConn.Commit();
  591. oracleTrConn.Disconnect();
  592. }
  593. }
  594. catch (Exception ex)
  595. {
  596. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  597. {
  598. oracleTrConn.Rollback();
  599. oracleTrConn.Disconnect();
  600. }
  601. throw ex;
  602. }
  603. finally
  604. {
  605. if (oracleTrConn.ConnState == ConnectionState.Open)
  606. {
  607. oracleTrConn.Disconnect();
  608. }
  609. }
  610. return detailReturnRows;
  611. }
  612. /// <summary>
  613. /// 修改条码
  614. /// </summary>
  615. /// <param name="barCode">原条码</param>
  616. /// <param name="barCodeUpdate">新条码</param>
  617. /// <param name="user">用户基本信息</param>
  618. /// <returns>int返回值结果</returns>
  619. public static int UpdateBarCode(string barCode, string barCodeUpdate, SUserInfo user)
  620. {
  621. if (BarCodesIsRepeat(barCodeUpdate.ToString()) != "")
  622. {
  623. return -1;
  624. }
  625. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  626. StringBuilder sbSql = new StringBuilder();
  627. try
  628. {
  629. con.Open();
  630. OracleParameter[] Paras = new OracleParameter[] {
  631. new OracleParameter("in_barCode",OracleDbType.NVarchar2,
  632. barCode,ParameterDirection.Input),
  633. new OracleParameter("in_barCodeUpdate",OracleDbType.NVarchar2,
  634. barCodeUpdate,ParameterDirection.Input),
  635. new OracleParameter("in_AccountID",OracleDbType.Int32,
  636. user.AccountID,ParameterDirection.Input),
  637. new OracleParameter("in_CreateUserID",OracleDbType.Int32,
  638. user.UserID,ParameterDirection.Input),
  639. new OracleParameter("out_isRepeat",OracleDbType.Int32,
  640. ParameterDirection.Output)
  641. };
  642. con.ExecStoredProcedure("PRO_PM_UpdateBarCode", Paras);
  643. con.Close();
  644. if (Convert.ToInt32(Paras[4].Value.ToString()) > 0)
  645. {
  646. return 1;
  647. }
  648. else
  649. {
  650. return Convert.ToInt32(Paras[4].Value.ToString());
  651. }
  652. }
  653. catch (Exception ex)
  654. {
  655. if (con.ConnState == ConnectionState.Open)
  656. {
  657. con.Close();
  658. }
  659. throw ex;
  660. }
  661. finally
  662. {
  663. if (con.ConnState == ConnectionState.Open)
  664. {
  665. con.Close();
  666. }
  667. }
  668. }
  669. /// <summary>
  670. /// 验证条码唯一性
  671. /// </summary>
  672. /// <param name="Barcode">需要验证的条码</param>
  673. /// <returns>int结果</returns>
  674. /// <remarks>
  675. /// 庄天威 2014.09.23 新建
  676. /// </remarks>
  677. public static int BarCodeIsRepeat(String BarCode)
  678. {
  679. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  680. StringBuilder sbSql = new StringBuilder();
  681. try
  682. {
  683. con.Open();
  684. OracleParameter[] Paras = new OracleParameter[] {
  685. new OracleParameter("in_barCode",OracleDbType.NVarchar2,
  686. BarCode,ParameterDirection.Input),
  687. new OracleParameter("out_isRepeat",OracleDbType.Int32,
  688. ParameterDirection.Output)
  689. };
  690. con.ExecStoredProcedure("PRO_PM_BarCodeIsRepeat", Paras);
  691. con.Close();
  692. if (Paras[1].Value.ToString() == "0") //可以插入
  693. {
  694. return 0;
  695. }
  696. else
  697. {
  698. return 1;
  699. }
  700. }
  701. catch (Exception ex)
  702. {
  703. if (con.ConnState == ConnectionState.Open)
  704. {
  705. con.Close();
  706. }
  707. throw ex;
  708. }
  709. finally
  710. {
  711. if (con.ConnState == ConnectionState.Open)
  712. {
  713. con.Close();
  714. }
  715. }
  716. }
  717. /// <summary>
  718. /// 根据注浆明细添加条码
  719. /// </summary>
  720. /// <param name="dailyDetailList">明细列表</param>
  721. /// <param name="ScrapIds">报废标记集</param>
  722. /// <param name="user">用户基本信息</param>
  723. /// <returns>int</returns>
  724. /// <remarks>
  725. /// 庄天威 2014.09.30 新建
  726. /// </remarks>
  727. public static int AddBarCode(List<GroutingDailyDetailEntity> dailyDetailList, string ScrapIds, SUserInfo user)
  728. {
  729. int detailReturnRows = 0;
  730. int RepeatReturnRows = 0;
  731. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  732. try
  733. {
  734. oracleTrConn.Connect();
  735. StringBuilder sbSql = new StringBuilder();
  736. int isScrapUpdate = 0;
  737. //循环插入条码
  738. foreach (GroutingDailyDetailEntity dailyDetailEntity in dailyDetailList)
  739. {
  740. //首先处理损坯明细
  741. //当然如果没有就不处理了
  742. if (isScrapUpdate == 0 && ScrapIds != null && ScrapIds != string.Empty)
  743. {
  744. //第一步要先把操作主ID下的所有明细改为非损坯
  745. sbSql.Clear();
  746. sbSql.Append("Update TP_PM_GroutingDailyDetail set ScrapFlag = 0 Where GroutingDailyID=" + dailyDetailEntity.GroutingDailyID);
  747. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  748. //第二步把传入的损坯ID的明细更改为已损坯
  749. sbSql.Clear();
  750. sbSql.Append("Update TP_PM_GroutingDailyDetail set ScrapFlag = 1 Where GroutingDailyDetailID in(" + ScrapIds + ")");
  751. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  752. isScrapUpdate++;
  753. }
  754. if (dailyDetailEntity.BarCodeStrList == null || dailyDetailEntity.BarCodeStrList == string.Empty)
  755. {
  756. continue;
  757. }
  758. sbSql.Clear();
  759. sbSql.Append("Insert into TP_PM_GroutingProduct");
  760. sbSql.Append(" (Barcode,GroutingDailyID,GroutingDailyDetailID,GroutingLineID,GroutingLineCode,GroutingLineName,");
  761. sbSql.Append(" GroutingLineDetailID,GroutingDate,GroutingMouldCode,MouldCode,GroutingUserID,GroutingUserCode,GroutingNum,GoodsID,GoodsCode,GoodsName,");
  762. sbSql.Append(" Remarks,AccountID,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  763. sbSql.Append(" values(:Barcode,:GroutingDailyID,:GroutingDailyDetailID,:GroutingLineID,:GroutingLineCode,:GroutingLineName,");
  764. sbSql.Append(" :GroutingLineDetailID,:GroutingDate,:GroutingMouldCode,:MouldCode,:GroutingUserID,:GroutingUserCode,:GroutingNum,:GoodsID,:GoodsCode,:GoodsName,");
  765. sbSql.Append(" :Remarks,:AccountID,sysdate,:CreateUserID,sysdate,:UpdateUserID,sysdate)");
  766. OracleParameter[] ProParas = new OracleParameter[] {
  767. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  768. dailyDetailEntity.BarCodeStrList,ParameterDirection.Input),
  769. new OracleParameter(":GroutingDailyID",OracleDbType.Int32,
  770. dailyDetailEntity.GroutingDailyID,ParameterDirection.Input),
  771. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  772. dailyDetailEntity.GroutingDailyDetailID,ParameterDirection.Input),
  773. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  774. dailyDetailEntity.GroutingLineID,ParameterDirection.Input),
  775. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  776. dailyDetailEntity.GroutingLineCode,ParameterDirection.Input),
  777. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  778. dailyDetailEntity.GroutingLineName,ParameterDirection.Input),
  779. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  780. dailyDetailEntity.GroutingLineDetailID,ParameterDirection.Input),
  781. new OracleParameter(":GroutingDate",OracleDbType.Date,
  782. dailyDetailEntity.GroutingDate,ParameterDirection.Input),
  783. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  784. dailyDetailEntity.GroutingMouldCode,ParameterDirection.Input),
  785. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  786. dailyDetailEntity.MouldCode,ParameterDirection.Input),
  787. new OracleParameter(":GroutingUserID",OracleDbType.Int32,
  788. dailyDetailEntity.UserID,ParameterDirection.Input),
  789. new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2,
  790. dailyDetailEntity.UserCode,ParameterDirection.Input),
  791. new OracleParameter(":GroutingNum",OracleDbType.Decimal,
  792. dailyDetailEntity.GroutingCount,ParameterDirection.Input),
  793. new OracleParameter(":GoodsID",OracleDbType.Int32,
  794. dailyDetailEntity.GoodsID,ParameterDirection.Input),
  795. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2,
  796. dailyDetailEntity.GoodsCode,ParameterDirection.Input),
  797. new OracleParameter(":GoodsName",OracleDbType.NVarchar2,
  798. dailyDetailEntity.GoodsName,ParameterDirection.Input),
  799. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  800. dailyDetailEntity.Remarks,ParameterDirection.Input),
  801. new OracleParameter(":AccountID",OracleDbType.Int32,
  802. user.AccountID,ParameterDirection.Input),
  803. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  804. user.UserID,ParameterDirection.Input),
  805. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  806. user.UserID,ParameterDirection.Input)
  807. };
  808. detailReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), ProParas);
  809. RepeatReturnRows += AddBarCodeRepeat(dailyDetailEntity.BarCodeStrList, user, oracleTrConn);
  810. }
  811. if (detailReturnRows == 0 || RepeatReturnRows == 0)
  812. {
  813. oracleTrConn.Rollback();
  814. oracleTrConn.Disconnect();
  815. }
  816. else
  817. {
  818. oracleTrConn.Commit();
  819. oracleTrConn.Disconnect();
  820. }
  821. }
  822. catch (Exception ex)
  823. {
  824. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  825. {
  826. oracleTrConn.Rollback();
  827. oracleTrConn.Disconnect();
  828. }
  829. throw ex;
  830. }
  831. finally
  832. {
  833. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  834. {
  835. oracleTrConn.Disconnect();
  836. }
  837. }
  838. return detailReturnRows;
  839. }
  840. /// <summary>
  841. /// 验证条码唯一性
  842. /// </summary>
  843. /// <param name="Barcode">需要验证的条码(多个,逗号分割)</param>
  844. /// <returns>string结果</returns>
  845. /// <remarks>
  846. /// 庄天威 2014.09.23 新建
  847. /// </remarks>
  848. public static string BarCodesIsRepeat(String BarCodes)
  849. {
  850. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  851. try
  852. {
  853. con.Open();
  854. StringBuilder sbSql = new StringBuilder();
  855. sbSql.Append("select Barcode from TP_PM_UsedBarCode");
  856. sbSql.Append(" where Barcode in (" + BarCodes + ")");
  857. DataTable dtReturn = con.GetSqlResultToDt(sbSql.ToString(), null);
  858. if (dtReturn != null)
  859. {
  860. StringBuilder sbCodes = new StringBuilder();
  861. foreach (DataRow drFor in dtReturn.Rows)
  862. {
  863. sbCodes.Append(drFor["Barcode"] + ",");
  864. }
  865. if (sbCodes.Length != 0)
  866. {
  867. return sbCodes.ToString().Substring(0, sbCodes.Length - 1);
  868. }
  869. else
  870. {
  871. return "";
  872. }
  873. }
  874. else
  875. {
  876. return "";
  877. }
  878. }
  879. catch (Exception ex)
  880. {
  881. throw ex;
  882. }
  883. finally
  884. {
  885. if (con.ConnState == ConnectionState.Open)
  886. {
  887. con.Close();
  888. }
  889. }
  890. }
  891. /// <summary>
  892. /// 添加产品条码
  893. /// </summary>
  894. /// <param name="BarCodes">产品条码</param>
  895. /// <param name="user">用户基本信息</param>
  896. /// <param name="oracleTrConn">数据连接</param>
  897. /// <returns>int</returns>
  898. public static int AddBarCodeRepeat(String BarCodes, SUserInfo user, IDBTransaction oracleTrConn)
  899. {
  900. int ReturnRows = 0;
  901. try
  902. {
  903. StringBuilder sbSql = new StringBuilder();
  904. //循环插入条码
  905. sbSql.Append("Insert into TP_PM_UsedBarCode");
  906. sbSql.Append(" (Barcode,AccountID,CreateUserID)");
  907. sbSql.Append(" Values(:Barcode,:AccountID,:CreateUserID)");
  908. OracleParameter[] Paras = new OracleParameter[] {
  909. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  910. BarCodes,ParameterDirection.Input),
  911. new OracleParameter(":AccountID",OracleDbType.Int32,
  912. user.AccountID,ParameterDirection.Input),
  913. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  914. user.UserID,ParameterDirection.Input)
  915. };
  916. ReturnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  917. }
  918. catch (Exception ex)
  919. {
  920. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  921. {
  922. oracleTrConn.Rollback();
  923. oracleTrConn.Disconnect();
  924. }
  925. throw ex;
  926. }
  927. finally
  928. {
  929. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  930. {
  931. oracleTrConn.Disconnect();
  932. }
  933. }
  934. return ReturnRows;
  935. }
  936. /// <summary>
  937. /// 获取某模具某天以前的最大注浆次数,方便补录数据
  938. /// </summary>
  939. /// <param name="MouldCode">模具编号</param>
  940. /// <param name="inTime">注浆时间</param>
  941. /// <returns>int最大注浆次数(如录入数据需+1)</returns>
  942. public static int GetMaxGroutingCountByMouldCode(string MouldCode, DateTime inTime)
  943. {
  944. int MaxCount = 0;
  945. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  946. try
  947. {
  948. con.Open();
  949. StringBuilder sbSql = new StringBuilder();
  950. sbSql.Append("select Max(GroutingCount) from TP_PM_GroutingDailyDetail");
  951. sbSql.Append(" where MouldCode = :MouldCode");
  952. sbSql.Append(" and GroutingDate <= to_date(:GroutingDate,'yyyy-MM-dd hh24:mi:ss')");
  953. OracleParameter[] Paras = new OracleParameter[] {
  954. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  955. MouldCode,ParameterDirection.Input),
  956. new OracleParameter(":GroutingDate",OracleDbType.NVarchar2,
  957. inTime.ToString(),ParameterDirection.Input)
  958. };
  959. DataTable dtReturn = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  960. if (dtReturn != null)
  961. {
  962. if (dtReturn.Rows.Count != 0)
  963. {
  964. if (dtReturn.Rows[0][0] != DBNull.Value)
  965. {
  966. MaxCount = Convert.ToInt32(dtReturn.Rows[0][0]);
  967. }
  968. }
  969. }
  970. }
  971. catch (Exception ex)
  972. {
  973. throw ex;
  974. }
  975. finally
  976. {
  977. if (con.ConnState == ConnectionState.Open)
  978. {
  979. con.Close();
  980. }
  981. }
  982. return MaxCount;
  983. }
  984. /// <summary>
  985. /// 获取某一时间段的某成型线明细的模具编号
  986. /// </summary>
  987. /// <param name="GroutingLineDetailID">成型线明细ID</param>
  988. /// <param name="inTime">注浆时间</param>
  989. /// <returns>string</returns>
  990. public static string GetMouldCodeFromHistoryByTime(int GroutingLineDetailID, DateTime inTime)
  991. {
  992. string MouldCode = null;
  993. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  994. try
  995. {
  996. con.Open();
  997. StringBuilder sbSql = new StringBuilder();
  998. sbSql.Append("select MouldCode from TP_PC_GMouldHistory");
  999. sbSql.Append(" where GroutingLineDetailID = :GroutingLineDetailID");
  1000. sbSql.Append(" and BeginUsedDate <= to_date(:GroutingDate,'yyyy-MM-dd hh24:mi:ss')");
  1001. sbSql.Append(" and EndUsedDate >= to_date(:GroutingDate,'yyyy-MM-dd hh24:mi:ss')");
  1002. OracleParameter[] Paras = new OracleParameter[] {
  1003. new OracleParameter(":GroutingLineDetailID",OracleDbType.NVarchar2,
  1004. GroutingLineDetailID,ParameterDirection.Input),
  1005. new OracleParameter(":GroutingDate",OracleDbType.NVarchar2,
  1006. inTime.ToString(),ParameterDirection.Input)
  1007. };
  1008. DataTable dtReturn = con.GetSqlResultToDt(sbSql.ToString(), Paras);
  1009. if (dtReturn != null)
  1010. {
  1011. if (dtReturn.Rows.Count != 0)
  1012. {
  1013. if (dtReturn.Rows[0][0] != DBNull.Value)
  1014. {
  1015. MouldCode = dtReturn.Rows[0][0].ToString();
  1016. }
  1017. }
  1018. }
  1019. }
  1020. catch (Exception ex)
  1021. {
  1022. throw ex;
  1023. }
  1024. finally
  1025. {
  1026. if (con.ConnState == ConnectionState.Open)
  1027. {
  1028. con.Close();
  1029. }
  1030. }
  1031. return MouldCode;
  1032. }
  1033. #endregion
  1034. #region 生产产品
  1035. /// <summary>
  1036. /// 保存生产数据
  1037. /// </summary>
  1038. /// <param name="productionData">生产数据对象</param>
  1039. /// <param name="sUserInfo">用户基本信息</param>
  1040. /// <returns>string</returns>
  1041. public static string SaveProductionData(ProductionDataEntity productionData, SUserInfo sUserInfo)
  1042. {
  1043. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1044. try
  1045. {
  1046. oracleTrConn.Connect();
  1047. #region SQL
  1048. string sql = "insert into tp_pm_productiondata"
  1049. + " ("
  1050. + " barcode,"
  1051. + " centralizedbatchno,"
  1052. + " productionlineid,"
  1053. + " productionlinecode,"
  1054. + " productionlinename,"
  1055. + " procedureid,"
  1056. + " procedurecode,"
  1057. + " procedurename,"
  1058. + " proceduremodel,"
  1059. + " modeltype,"
  1060. + " piecetype,"
  1061. + " isreworked,"
  1062. + " nodetype,"
  1063. + " ispublicbody,"
  1064. + " isrefire,"
  1065. + " goodsgrade,"
  1066. + " organizationid,"
  1067. + " goodsid,"
  1068. + " goodscode,"
  1069. + " goodsname,"
  1070. + " userid,"
  1071. + " usercode,"
  1072. + " username,"
  1073. + " kilnid,"
  1074. + " kilncode,"
  1075. + " kilnname,"
  1076. + " kilncarid,"
  1077. + " kilncarcode,"
  1078. + " kilncarname,"
  1079. + " kilncarbatchno,"
  1080. + " kilncarposition,"
  1081. + " defectflag,"
  1082. + " isscrap,"
  1083. + " reworkprocedureid,"
  1084. + " reworkprocedurecode,"
  1085. + " reworkprocedurename,"
  1086. + " remarks,"
  1087. + " accountdate,"
  1088. + " accountid,"
  1089. + " createuserid,"
  1090. + " updateuserid)"
  1091. + " values"
  1092. + " ("
  1093. + " :barcode,"
  1094. + " :centralizedbatchno,"
  1095. + " :productionlineid,"
  1096. + " :productionlinecode,"
  1097. + " :productionlinename,"
  1098. + " :procedureid,"
  1099. + " :procedurecode,"
  1100. + " :procedurename,"
  1101. + " :proceduremodel,"
  1102. + " :modeltype,"
  1103. + " :piecetype,"
  1104. + " :isreworked,"
  1105. + " :nodetype,"
  1106. + " :ispublicbody,"
  1107. + " :isrefire,"
  1108. + " :goodsgrade,"
  1109. + " :organizationid,"
  1110. + " :goodsid,"
  1111. + " :goodscode,"
  1112. + " :goodsname,"
  1113. + " :userid,"
  1114. + " :usercode,"
  1115. + " :username,"
  1116. + " :kilnid,"
  1117. + " :kilncode,"
  1118. + " :kilnname,"
  1119. + " :kilncarid,"
  1120. + " :kilncarcode,"
  1121. + " :kilncarname,"
  1122. + " :kilncarbatchno,"
  1123. + " :kilncarposition,"
  1124. + " :defectflag,"
  1125. + " :isscrap,"
  1126. + " :reworkprocedureid,"
  1127. + " :reworkprocedurecode,"
  1128. + " :reworkprocedurename,"
  1129. + " :remarks,"
  1130. + " fun_cmn_getaccountdate(:dataaccountid),"
  1131. + " :accountid,"
  1132. + " :createuserid,"
  1133. + " :updateuserid)";
  1134. #endregion
  1135. #region OracleParameter
  1136. OracleParameter[] paras = new OracleParameter[] {
  1137. new OracleParameter(":barcode",productionData.Barcode),
  1138. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  1139. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  1140. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  1141. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  1142. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  1143. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  1144. new OracleParameter(":procedurename",productionData.ProcedureName),
  1145. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  1146. new OracleParameter(":modeltype",productionData.ModelType),
  1147. new OracleParameter(":piecetype",productionData.PieceType),
  1148. new OracleParameter(":isreworked",productionData.IsReworked),
  1149. new OracleParameter(":nodetype",productionData.NodeType),
  1150. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  1151. new OracleParameter(":isrefire",productionData.IsReFire),
  1152. new OracleParameter(":goodsgrade",productionData.GoodsGrade),
  1153. new OracleParameter(":organizationid",productionData.OrganizationID),
  1154. new OracleParameter(":goodsid",productionData.GoodsID),
  1155. new OracleParameter(":goodscode",productionData.GoodsCode),
  1156. new OracleParameter(":goodsname",productionData.GoodsName),
  1157. new OracleParameter(":userid",productionData.UserID),
  1158. new OracleParameter(":usercode",productionData.UserCode),
  1159. new OracleParameter(":username",productionData.UserName),
  1160. new OracleParameter(":kilnid",productionData.KilnID),
  1161. new OracleParameter(":kilncode",productionData.KilnCode),
  1162. new OracleParameter(":kilnname",productionData.KilnName),
  1163. new OracleParameter(":kilncarid",productionData.KilnCarID),
  1164. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  1165. new OracleParameter(":kilncarname",productionData.KilnCarName),
  1166. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  1167. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  1168. new OracleParameter(":defectflag",productionData.DefectFlag),
  1169. new OracleParameter(":isscrap",productionData.IsScrap),
  1170. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  1171. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  1172. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  1173. new OracleParameter(":remarks",productionData.Remarks),
  1174. new OracleParameter(":dataaccountid",sUserInfo.AccountID),
  1175. new OracleParameter(":accountid",sUserInfo.AccountID),
  1176. new OracleParameter(":createuserid",sUserInfo.UserID),
  1177. new OracleParameter(":updateuserid",sUserInfo.UserID),
  1178. };
  1179. #endregion
  1180. foreach (OracleParameter para in paras)
  1181. {
  1182. if (para.Value + "" == "")
  1183. {
  1184. para.Value = DBNull.Value;
  1185. }
  1186. }
  1187. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1188. oracleTrConn.Commit();
  1189. oracleTrConn.Disconnect();
  1190. // 失败
  1191. if (result != Constant.INT_IS_ONE)
  1192. {
  1193. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1194. }
  1195. return null;
  1196. }
  1197. catch (Exception ex)
  1198. {
  1199. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1200. {
  1201. oracleTrConn.Rollback();
  1202. oracleTrConn.Disconnect();
  1203. }
  1204. throw ex;
  1205. }
  1206. finally
  1207. {
  1208. if (oracleTrConn.ConnState == ConnectionState.Open)
  1209. {
  1210. oracleTrConn.Disconnect();
  1211. }
  1212. }
  1213. }
  1214. #endregion
  1215. #region 废弃产品
  1216. /// <summary>
  1217. /// 添加废弃产品记录
  1218. /// </summary>
  1219. /// <param name="SProductEntity">废弃产品实体</param>
  1220. /// <param name="RProcedureEntity">废弃责任工序实体</param>
  1221. /// <param name="SResponsibleList">责任者集合</param>
  1222. /// <param name="userInfo">用户基本信息</param>
  1223. /// <returns>int结果返回值</returns>
  1224. /// <remarks>
  1225. /// 庄天威 2014.09.24 新建
  1226. /// </remarks>
  1227. public static int AddScrapProduct(ScrapProductEntity SProductEntity,
  1228. ResponProcedureEntity RProcedureEntity,
  1229. List<ScrapResponsibleEntity> SResponsibleList, SUserInfo userInfo)
  1230. {
  1231. int returnRows = 0;
  1232. int sresponsibleReturnRows = 0;
  1233. int rprocedureReturn = 0;
  1234. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1235. try
  1236. {
  1237. oracleTrConn.Connect();
  1238. //#region 判断产品是否被挂起
  1239. //string sqlString = "SELECT 1 AS RES\n" +
  1240. // " FROM TP_PM_PRODUCTSUSPEND PS\n" +
  1241. // " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" +
  1242. // " ON GDD.GROUTINGDAILYDETAILID = PS.GROUTINGDAILYDETAILID\n" +
  1243. // " WHERE GDD.BARCODE = :Barcode";
  1244. //OracleParameter[] pars = new OracleParameter[]
  1245. //{
  1246. // new OracleParameter(":Barcode",OracleDbType.NVarchar2, SProductEntity.BarCode,ParameterDirection.Input),
  1247. //};
  1248. //object objResult = oracleTrConn.GetSqlResultToObj(sqlString, pars);
  1249. //if (objResult != null)
  1250. //{
  1251. // return Constant.INT_IS_NEGATIE_ONE;
  1252. //}
  1253. //#endregion
  1254. object result = DBNull.Value;
  1255. if (SProductEntity.AuditStatus != 0)
  1256. {
  1257. //string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  1258. string strSql1 = "select sysdate from dual";
  1259. // Oracle.DataAccess.Client.OracleParameter[] paras1 = new Oracle.DataAccess.Client.OracleParameter[]
  1260. //{
  1261. // new Oracle.DataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  1262. //};
  1263. object strResult = oracleTrConn.GetSqlResultToObj(strSql1);
  1264. if (strResult == null || strResult == DBNull.Value)
  1265. {
  1266. // 服务器时间错误
  1267. throw new Exception("SystemDateTimeError");
  1268. }
  1269. result = Convert.ToDateTime(strResult);
  1270. }
  1271. // wangx 2016/01/13
  1272. int? ProductionDataID = null;
  1273. int? completeProcdureID = null;
  1274. string completeProcdureName = string.Empty;
  1275. string completeProcdureCode = string.Empty;
  1276. // 重复登记的问题 for update
  1277. //string sqlProductionDataID = @"select tp_pm_inproduction.productiondataid,
  1278. // tp_pc_procedure.procedureid,
  1279. // tp_pc_procedure.procedurename,
  1280. // tp_pc_procedure.procedurecode, tp_pm_inproduction.InScrapFlag
  1281. // from tp_pm_inproduction
  1282. // left join tp_pc_procedure
  1283. // on tp_pm_inproduction.procedureid=tp_pc_procedure.procedureid
  1284. // where tp_pm_inproduction.barcode = :barcode
  1285. // union
  1286. // select tp_pm_inproductiontrash.productiondataid,
  1287. // tp_pc_procedure.procedureid,
  1288. // tp_pc_procedure.procedurename,
  1289. // tp_pc_procedure.procedurecode
  1290. // from tp_pm_inproductiontrash
  1291. // left join tp_pc_procedure
  1292. // on tp_pm_inproductiontrash.procedureid=tp_pc_procedure.procedureid
  1293. // where tp_pm_inproductiontrash.barcode = :barcode
  1294. // for update";
  1295. string sqlProductionDataID = @"select tp_pm_inproduction.productiondataid,
  1296. tp_pc_procedure.procedureid,
  1297. tp_pc_procedure.procedurename,
  1298. tp_pc_procedure.procedurecode, tp_pm_inproduction.InScrapFlag
  1299. from tp_pm_inproduction
  1300. left join tp_pc_procedure
  1301. on tp_pm_inproduction.procedureid=tp_pc_procedure.procedureid
  1302. where tp_pm_inproduction.barcode = :barcode
  1303. for update";
  1304. OracleParameter[] ParasProductionDataID = new OracleParameter[] {
  1305. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1306. SProductEntity.BarCode,ParameterDirection.Input),
  1307. };
  1308. DataSet dsProductionDataID = oracleTrConn.GetSqlResultToDs(sqlProductionDataID, ParasProductionDataID);
  1309. if (dsProductionDataID != null && dsProductionDataID.Tables[0].Rows.Count > 0)
  1310. {
  1311. ProductionDataID = Convert.ToInt32(dsProductionDataID.Tables[0].Rows[0]["productiondataid"]);
  1312. completeProcdureID = Convert.ToInt32(dsProductionDataID.Tables[0].Rows[0]["procedureid"]);
  1313. completeProcdureName = dsProductionDataID.Tables[0].Rows[0]["procedurename"].ToString();
  1314. completeProcdureCode = dsProductionDataID.Tables[0].Rows[0]["procedurecode"].ToString();
  1315. string InScrapFlag = dsProductionDataID.Tables[0].Rows[0]["InScrapFlag"].ToString();
  1316. if (InScrapFlag == "1")
  1317. {
  1318. return Constant.RETURN_IS_DATACHANGED;
  1319. }
  1320. }
  1321. else
  1322. {
  1323. return Constant.RETURN_IS_DATACHANGED;
  1324. }
  1325. // end
  1326. // 如果完成工序ID发生变化,则返回提示;
  1327. if (completeProcdureID != SProductEntity.ProcedureID)
  1328. {
  1329. return Constant.RETURN_IS_DATACHANGED;
  1330. }
  1331. //首先添加废弃产品主体信息
  1332. StringBuilder sbSql = new StringBuilder();
  1333. //获取序列ID
  1334. sbSql.Clear();
  1335. sbSql.Append("select SEQ_PM_ScrapProduct_ID.nextval from dual");
  1336. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1337. sbSql.Clear();
  1338. sbSql.Append("Insert into TP_PM_ScrapProduct");
  1339. sbSql.Append("(ScrapProductID,Barcode,ProductionLineID,ProductionLineCode,ProductionLineName,");
  1340. sbSql.Append("GoodsID,GoodsCode,GoodsName,GroutingDailyID,GroutingDailyDetailID,");
  1341. sbSql.Append("GroutingDate,GroutingLineID,GroutingLineCode,GroutingLineName,");
  1342. sbSql.Append("GMouldTypeID,GroutingLineDetailID,GroutingMouldCode,MouldCode,");
  1343. sbSql.Append("GoodsLevelID,GoodsLevelTypeID,ResponType,ScrapDate,Rreason,");
  1344. sbSql.Append("Remarks,AuditStatus,");
  1345. sbSql.Append("SettlementFlag,AccountID,ValueFlag,CreateTime,CreateUserID,");
  1346. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,GroutingUserID,GroutingUserCode,GroutingNum,IsPublicBody,IsReFire,ScrapFine,Auditor,AuditDate,SpecialRepairflag,Procedureid,ProcedureName,ProcedureCode,logoid,ProductionDataID)");
  1347. sbSql.Append("values(:ScrapProductID,:Barcode,:ProductionLineID,:ProductionLineCode,:ProductionLineName,");
  1348. sbSql.Append(":GoodsID,:GoodsCode,:GoodsName,:GroutingDailyID,:GroutingDailyDetailID,");
  1349. sbSql.Append(":GroutingDate,:GroutingLineID,:GroutingLineCode,:GroutingLineName,");
  1350. sbSql.Append(":GMouldTypeID,:GroutingLineDetailID,:GroutingMouldCode,:MouldCode,");
  1351. sbSql.Append(":GoodsLevelID,:GoodsLevelTypeID,:ResponType,:ScrapDate,:Rreason,");
  1352. sbSql.Append(":Remarks,:AuditStatus,");
  1353. sbSql.Append("0,:AccountID,1,sysdate,:CreateUserID,");
  1354. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:GroutingUserID,:GroutingUserCode,:GroutingNum,:IsPublicBody,:IsReFire,:ScrapFine,:Auditor,:AuditlDate,:SpecialRepairflag,:Procedureid,:ProcedureName,:ProcedureCode,:logoid,:ProductionDataID)");
  1355. OracleParameter[] Paras = new OracleParameter[] {
  1356. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1357. id,ParameterDirection.Input),
  1358. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1359. SProductEntity.BarCode,ParameterDirection.Input),
  1360. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  1361. SProductEntity.ProductionLineID,ParameterDirection.Input),
  1362. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  1363. SProductEntity.ProductionLineCode,ParameterDirection.Input),
  1364. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  1365. SProductEntity.ProductionLineName,ParameterDirection.Input),
  1366. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1367. SProductEntity.GoodsID,ParameterDirection.Input),
  1368. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2,
  1369. SProductEntity.GoodsCode,ParameterDirection.Input),
  1370. new OracleParameter(":GoodsName",OracleDbType.NVarchar2,
  1371. SProductEntity.GoodsName,ParameterDirection.Input),
  1372. new OracleParameter(":GroutingDailyID",OracleDbType.Int32,
  1373. SProductEntity.GroutingDailyID,ParameterDirection.Input),
  1374. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  1375. SProductEntity.GroutingDailyDetailID,ParameterDirection.Input),
  1376. new OracleParameter(":GroutingDate",OracleDbType.Date,
  1377. SProductEntity.GroutingDate,ParameterDirection.Input),
  1378. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1379. SProductEntity.GroutingLineID,ParameterDirection.Input),
  1380. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  1381. SProductEntity.GroutingLineCode,ParameterDirection.Input),
  1382. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  1383. SProductEntity.GroutingLineName,ParameterDirection.Input),
  1384. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  1385. SProductEntity.GMouldTypeID,ParameterDirection.Input),
  1386. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1387. SProductEntity.GroutingLineDetailID,ParameterDirection.Input),
  1388. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1389. SProductEntity.GroutingMouldCode,ParameterDirection.Input),
  1390. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1391. SProductEntity.MouldCode,ParameterDirection.Input),
  1392. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1393. SProductEntity.GoodsLevelID,ParameterDirection.Input),
  1394. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1395. SProductEntity.GoodsLevelTypeID,ParameterDirection.Input),
  1396. new OracleParameter(":ResponType",OracleDbType.Int32,
  1397. Convert.ToInt32(SProductEntity.ResponType),ParameterDirection.Input),
  1398. new OracleParameter(":ScrapDate",OracleDbType.Date,
  1399. SProductEntity.ScrapDate,ParameterDirection.Input),
  1400. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1401. SProductEntity.Rreason,ParameterDirection.Input),
  1402. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1403. SProductEntity.Remarks,ParameterDirection.Input),
  1404. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  1405. SProductEntity.AuditStatus,ParameterDirection.Input),
  1406. new OracleParameter(":AccountID",OracleDbType.Int32,
  1407. userInfo.AccountID,ParameterDirection.Input),
  1408. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1409. userInfo.UserID,ParameterDirection.Input),
  1410. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1411. userInfo.UserID,ParameterDirection.Input),
  1412. new OracleParameter(":GroutingUserID",OracleDbType.Int32,
  1413. SProductEntity.GroutingUserID,ParameterDirection.Input),
  1414. new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2,
  1415. SProductEntity.GroutingUserCode,ParameterDirection.Input),
  1416. new OracleParameter(":GroutingNum",OracleDbType.Decimal,
  1417. SProductEntity.GroutingNum,ParameterDirection.Input),
  1418. new OracleParameter(":IsPublicBody",OracleDbType.Int32,
  1419. SProductEntity.IsPublicBody,ParameterDirection.Input),
  1420. new OracleParameter(":IsReFire",OracleDbType.Int32,
  1421. SProductEntity.IsReFire,ParameterDirection.Input),
  1422. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  1423. SProductEntity.ScrapFine,ParameterDirection.Input),
  1424. new OracleParameter(":Auditor",OracleDbType.Int32,
  1425. userInfo.UserID,ParameterDirection.Input),
  1426. new OracleParameter(":AuditlDate",OracleDbType.Date,
  1427. result,ParameterDirection.Input),
  1428. new OracleParameter(":SpecialRepairflag",OracleDbType.Int32,
  1429. SProductEntity.SpecialRepairflag==null?0:SProductEntity.SpecialRepairflag,ParameterDirection.Input),//SpecialRepairflag
  1430. new OracleParameter(":Procedureid",OracleDbType.Int32,
  1431. completeProcdureID,ParameterDirection.Input),//SProductEntity.ProcedureID
  1432. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  1433. completeProcdureName,ParameterDirection.Input),//SProductEntity.ProcedureName
  1434. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  1435. completeProcdureCode,ParameterDirection.Input),//SProductEntity.ProcedureCode
  1436. new OracleParameter(":logoid",OracleDbType.Int32,
  1437. SProductEntity.LogoID,ParameterDirection.Input),
  1438. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  1439. ProductionDataID,ParameterDirection.Input),
  1440. };
  1441. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1442. //如果是直接审批通过 wangxin 2015-03-24
  1443. if (SProductEntity.AuditStatus == 1)
  1444. {
  1445. int DeleteRows = 0;
  1446. string sqlInsert = @"insert into TP_PM_InProductionTrash
  1447. (
  1448. BarCode,
  1449. ProductionLineID,
  1450. ProductionLineCode,
  1451. ProductionLineName,
  1452. ProcedureModel,
  1453. ModelType,
  1454. DefectFlag,
  1455. ReworkProcedureID,
  1456. IsPublicBody,
  1457. IsReFire,
  1458. GoodsLevelID,
  1459. GoodsLevelTypeID,
  1460. GoodsID,
  1461. GoodsCode,
  1462. GoodsName,
  1463. UserID,
  1464. GroutingDailyID,
  1465. GroutingDailyDetailID,
  1466. GroutingDate,
  1467. GroutingLineID,
  1468. GroutingLineCode,
  1469. GroutingLineName,
  1470. GMouldTypeID,
  1471. CanManyTimes,
  1472. GroutingLineDetailID,
  1473. GroutingMouldCode,
  1474. MouldCode,
  1475. GroutingUserID,
  1476. GroutingUserCode,
  1477. GroutingNum,
  1478. Remarks,
  1479. KilnID,
  1480. KilnCode,
  1481. KilnName,
  1482. KilnCarID,
  1483. KilnCarCode,
  1484. KilnCarName,
  1485. KilnCarBatchNo,
  1486. KilnCarPosition,
  1487. AccountID,
  1488. ValueFlag,
  1489. CreateUserID,
  1490. UpdateUserID,
  1491. SpecialRepairflag,
  1492. FlowProcedureID,
  1493. FlowProcedureTime,
  1494. ProcedureID,
  1495. ProcedureTime,
  1496. ProductionDataID,
  1497. logoid, ISREWORKFLAG, SEMICHECKID
  1498. )
  1499. select
  1500. BarCode,
  1501. ProductionLineID,
  1502. ProductionLineCode,
  1503. ProductionLineName,
  1504. ProcedureModel,
  1505. ModelType,
  1506. DefectFlag,
  1507. ReworkProcedureID,
  1508. IsPublicBody,
  1509. IsReFire,
  1510. :GoodsLevelID,
  1511. :GoodsLevelTypeID,
  1512. GoodsID,
  1513. GoodsCode,
  1514. GoodsName,
  1515. UserID,
  1516. GroutingDailyID,
  1517. GroutingDailyDetailID,
  1518. GroutingDate,
  1519. GroutingLineID,
  1520. GroutingLineCode,
  1521. GroutingLineName,
  1522. GMouldTypeID,
  1523. CanManyTimes,
  1524. GroutingLineDetailID,
  1525. GroutingMouldCode,
  1526. MouldCode,
  1527. GroutingUserID,
  1528. GroutingUserCode,
  1529. GroutingNum,
  1530. Remarks,
  1531. KilnID,
  1532. KilnCode,
  1533. KilnName,
  1534. KilnCarID,
  1535. KilnCarCode,
  1536. KilnCarName,
  1537. KilnCarBatchNo,
  1538. KilnCarPosition,
  1539. AccountID,
  1540. ValueFlag,
  1541. :CreateUserID,
  1542. :UpdateUserID,
  1543. SpecialRepairflag,
  1544. FlowProcedureID,
  1545. FlowProcedureTime,
  1546. ProcedureID,
  1547. ProcedureTime,
  1548. ProductionDataID,
  1549. logoid, ISREWORKFLAG, SEMICHECKID
  1550. from TP_PM_InProduction
  1551. where barcode='" + SProductEntity.BarCode + "'";
  1552. OracleParameter[] Paras2 = new OracleParameter[] {
  1553. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1554. userInfo.UserID,ParameterDirection.Input),
  1555. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1556. userInfo.UserID,ParameterDirection.Input),
  1557. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1558. SProductEntity.GoodsLevelID,ParameterDirection.Input),
  1559. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1560. SProductEntity.GoodsLevelTypeID,ParameterDirection.Input)
  1561. };
  1562. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  1563. //20150714 modify wangx
  1564. if (SProductEntity.ProcedureID != null)//在生产线上报废的,
  1565. {
  1566. sbSql.Clear();
  1567. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + SProductEntity.BarCode + "'");
  1568. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1569. }
  1570. //20150714 modify wangx end
  1571. sbSql.Clear();
  1572. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + SProductEntity.BarCode + "'");
  1573. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1574. //如果没有删除在产产品,那么要去删除成品表
  1575. if (DeleteRows == 0)
  1576. {
  1577. sbSql.Clear();
  1578. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + SProductEntity.BarCode + "'");
  1579. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1580. }
  1581. //并且要把该产品的生产数据的最终状态添加上
  1582. //sbSql.Clear();
  1583. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + SProductEntity.BarCode + "'");
  1584. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1585. }
  1586. else
  1587. {
  1588. if (SProductEntity.ProcedureID != null)//在生产线上报废的,
  1589. {
  1590. sbSql.Clear();
  1591. if (SProductEntity.AuditStatus == 0) //待审核
  1592. {
  1593. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + SProductEntity.BarCode + "'");
  1594. }
  1595. else
  1596. {
  1597. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + SProductEntity.BarCode + "'");
  1598. }
  1599. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1600. }
  1601. }
  1602. //-----------------------------------------------
  1603. //判断一下责任类型,如果是责任工序的话,则添加责任工序信息
  1604. if (Convert.ToInt32(SProductEntity.ResponType) == 3)
  1605. {
  1606. //插入产品废弃责任工序
  1607. sbSql.Clear();
  1608. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  1609. RProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1610. sbSql.Clear();
  1611. sbSql.Append("Insert into TP_PM_ResponProcedure");
  1612. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  1613. sbSql.Append("ProductionLineCode,ProductionLineName,");
  1614. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  1615. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1616. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  1617. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  1618. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  1619. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  1620. OracleParameter[] RPParas = new OracleParameter[] {
  1621. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  1622. RProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  1623. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1624. id,ParameterDirection.Input),
  1625. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1626. RProcedureEntity.BarCode,ParameterDirection.Input),
  1627. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  1628. RProcedureEntity.ProductionDataID,ParameterDirection.Input),
  1629. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  1630. RProcedureEntity.ProductionLineID,ParameterDirection.Input),
  1631. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  1632. RProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  1633. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  1634. RProcedureEntity.ProductionLineName,ParameterDirection.Input),
  1635. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  1636. RProcedureEntity.ProcedureID,ParameterDirection.Input),
  1637. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  1638. RProcedureEntity.ProcedureCode,ParameterDirection.Input),
  1639. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  1640. RProcedureEntity.ProcedureName,ParameterDirection.Input),
  1641. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  1642. RProcedureEntity.UserID,ParameterDirection.Input),
  1643. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  1644. RProcedureEntity.UserCode,ParameterDirection.Input),
  1645. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  1646. RProcedureEntity.UserName,ParameterDirection.Input),
  1647. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1648. RProcedureEntity.Remarks,ParameterDirection.Input),
  1649. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  1650. userInfo.AccountID,ParameterDirection.Input),
  1651. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  1652. userInfo.UserID,ParameterDirection.Input),
  1653. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  1654. userInfo.UserID,ParameterDirection.Input),
  1655. };
  1656. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  1657. #region 更新废弃责任工序的生产工序ID
  1658. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  1659. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  1660. " (SELECT RP.PROCEDUREID\n" +
  1661. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  1662. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  1663. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  1664. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  1665. RPParas = new OracleParameter[]
  1666. {
  1667. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,id,ParameterDirection.Input),
  1668. };
  1669. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, RPParas);
  1670. #endregion
  1671. }
  1672. if (Convert.ToInt32(SProductEntity.ResponType) != 1)
  1673. {
  1674. //计算每个责任人的报废扣罚
  1675. decimal scrapfine = 0;
  1676. if (SResponsibleList.Count > 0)
  1677. {
  1678. scrapfine = SProductEntity.ScrapFine / SResponsibleList.Count;
  1679. }
  1680. //循环插入产品废弃责任者
  1681. OracleParameter[] SPParas;
  1682. foreach (ScrapResponsibleEntity spFor in SResponsibleList)
  1683. {
  1684. sbSql.Clear();
  1685. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  1686. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1687. int? ResponProcedureID = null;
  1688. if (RProcedureEntity != null)
  1689. {
  1690. ResponProcedureID = RProcedureEntity.ResponProcedureID;
  1691. }
  1692. sbSql.Clear();
  1693. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  1694. sbSql.Append("(ResponsibleID,ScrapProductID,ResponType,ResponProcedureID,Barcode,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  1695. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  1696. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  1697. sbSql.Append("values(:ResponsibleID,:ScrapProductID,:ResponType,:ResponProcedureID,:Barcode,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  1698. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  1699. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  1700. SPParas = new OracleParameter[]
  1701. {
  1702. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  1703. spFor.ResponsibleID,ParameterDirection.Input),
  1704. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1705. id,ParameterDirection.Input),
  1706. new OracleParameter(":ResponType",OracleDbType.Int32,
  1707. Convert.ToInt32(SProductEntity.ResponType),ParameterDirection.Input),
  1708. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  1709. ResponProcedureID,ParameterDirection.Input),
  1710. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1711. spFor.BarCode,ParameterDirection.Input),
  1712. new OracleParameter(":StaffID",OracleDbType.Int32,
  1713. spFor.StaffID,ParameterDirection.Input),
  1714. new OracleParameter(":UserID",OracleDbType.Int32,
  1715. spFor.UserID,ParameterDirection.Input),
  1716. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  1717. spFor.UserCode,ParameterDirection.Input),
  1718. new OracleParameter(":UJobsID",OracleDbType.Int32,
  1719. spFor.UJobsID,ParameterDirection.Input),
  1720. new OracleParameter(":SJobsID",OracleDbType.Int32,
  1721. spFor.SJobsID,ParameterDirection.Input),
  1722. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  1723. spFor.StaffStatus,ParameterDirection.Input),
  1724. new OracleParameter(":AccountID",OracleDbType.Int32,
  1725. userInfo.AccountID,ParameterDirection.Input),
  1726. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1727. userInfo.UserID,ParameterDirection.Input),
  1728. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1729. userInfo.UserID,ParameterDirection.Input),
  1730. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  1731. scrapfine,ParameterDirection.Input)
  1732. };
  1733. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  1734. }
  1735. #region 更新废弃责任工序的责任者ID和编码
  1736. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  1737. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  1738. " (SELECT SR.USERID, SR.USERCODE\n" +
  1739. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  1740. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  1741. " GROUP BY SR.USERID, SR.USERCODE)\n" +
  1742. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  1743. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  1744. SPParas = new OracleParameter[]
  1745. {
  1746. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,id,ParameterDirection.Input),
  1747. };
  1748. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, SPParas);
  1749. #endregion
  1750. }
  1751. if (returnRows == 0)
  1752. {
  1753. oracleTrConn.Rollback();
  1754. oracleTrConn.Disconnect();
  1755. }
  1756. else
  1757. {
  1758. oracleTrConn.Commit();
  1759. oracleTrConn.Disconnect();
  1760. }
  1761. }
  1762. catch (Exception ex)
  1763. {
  1764. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1765. {
  1766. oracleTrConn.Rollback();
  1767. oracleTrConn.Disconnect();
  1768. }
  1769. throw ex;
  1770. }
  1771. finally
  1772. {
  1773. if (oracleTrConn.ConnState == ConnectionState.Open)
  1774. {
  1775. oracleTrConn.Disconnect();
  1776. }
  1777. }
  1778. return returnRows;
  1779. }
  1780. /// <summary>
  1781. /// 修改废弃产品记录
  1782. /// </summary>
  1783. /// <param name="UpdateSProductEntity">修改的废弃产品实体</param>
  1784. /// <param name="UpdateRProcedureEntity">修改的废弃责任工序实体</param>
  1785. /// <param name="UpdateSResponsibleList">修改的废弃责任人实体</param>
  1786. /// <param name="YSResponsibleList">修改前的废弃责任人实体</param>
  1787. /// <param name="userInfo">用户基本信息</param>
  1788. /// <returns>int结果返回值</returns>
  1789. /// <remarks>
  1790. /// 庄天威 2014.09.24 新建
  1791. /// </remarks>
  1792. public static int UpdateScrapProduct(ScrapProductEntity UpdateSProductEntity,
  1793. ResponProcedureEntity UpdateRProcedureEntity,
  1794. List<ScrapResponsibleEntity> UpdateSResponsibleList, List<ScrapResponsibleEntity> YSResponsibleList,
  1795. SUserInfo userInfo)
  1796. {
  1797. int returnRows = 0;
  1798. int sresponsibleReturnRows = 0;
  1799. int rprocedureReturn = 0;
  1800. int deleteRprocedureReturn = 0;
  1801. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1802. try
  1803. {
  1804. oracleTrConn.Connect();
  1805. //首先修改废弃产品主体信息
  1806. StringBuilder sbSql = new StringBuilder();
  1807. sbSql.Append("update TP_PM_ScrapProduct");
  1808. sbSql.Append(" set ScrapDate=to_date(:ScrapDate,'yyyy-mm-dd hh24:mi:ss'),");
  1809. sbSql.Append(" Rreason=:Rreason,");
  1810. sbSql.Append(" Remarks=:Remarks,");
  1811. sbSql.Append(" ResponType=:ResponType,");
  1812. sbSql.Append(" UpdateUserID=:UpdateUserID,");
  1813. sbSql.Append(" ScrapFine=:ScrapFine");
  1814. if (UpdateSProductEntity.AuditStatus != null)
  1815. {
  1816. sbSql.Append(" ,AuditStatus=" + UpdateSProductEntity.AuditStatus);
  1817. }
  1818. if (UpdateSProductEntity.AuditStatus == 0) //待审批
  1819. {
  1820. sbSql.Append(" ,AuditDate=null,Auditor=null");
  1821. }
  1822. else
  1823. {
  1824. object result = DBNull.Value;
  1825. string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  1826. Oracle.DataAccess.Client.OracleParameter[] paras1 = new Oracle.DataAccess.Client.OracleParameter[]
  1827. {
  1828. new Oracle.DataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  1829. };
  1830. object strResult = oracleTrConn.GetSqlResultToObj(strSql1, paras1);
  1831. if (strResult == null || strResult == DBNull.Value)
  1832. {
  1833. // 服务器时间错误
  1834. throw new Exception("SystemDateTimeError");
  1835. }
  1836. result = Convert.ToDateTime(strResult);
  1837. sbSql.Append(string.Format(" ,AuditDate=to_date('{0}','yyyy-mm-dd hh24:mi:ss'),Auditor={1}", result.ToString().Replace("/", "-"), userInfo.UserID));
  1838. }
  1839. sbSql.Append(" where ScrapProductID=:ScrapProductID");
  1840. OracleParameter[] Paras = new OracleParameter[]
  1841. {
  1842. new OracleParameter(":ScrapDate",OracleDbType.NVarchar2,
  1843. UpdateSProductEntity.ScrapDate.ToString(),ParameterDirection.Input),
  1844. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1845. UpdateSProductEntity.Rreason,ParameterDirection.Input),
  1846. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1847. UpdateSProductEntity.Remarks,ParameterDirection.Input),
  1848. new OracleParameter(":ResponType",OracleDbType.Int32,
  1849. UpdateSProductEntity.ResponType,ParameterDirection.Input),
  1850. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1851. userInfo.UserID,ParameterDirection.Input),
  1852. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  1853. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  1854. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  1855. UpdateSProductEntity.ScrapFine,ParameterDirection.Input)
  1856. };
  1857. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1858. //如果是直接审批通过 wangxin 2015-03-24
  1859. if (UpdateSProductEntity.AuditStatus == 1)
  1860. {
  1861. int DeleteRows = 0;
  1862. string sqlInsert = @"insert into TP_PM_InProductionTrash
  1863. (
  1864. BarCode,
  1865. ProductionLineID,
  1866. ProductionLineCode,
  1867. ProductionLineName,
  1868. ProcedureModel,
  1869. ModelType,
  1870. DefectFlag,
  1871. ReworkProcedureID,
  1872. IsPublicBody,
  1873. IsReFire,
  1874. GoodsLevelID,
  1875. GoodsLevelTypeID,
  1876. GoodsID,
  1877. GoodsCode,
  1878. GoodsName,
  1879. UserID,
  1880. GroutingDailyID,
  1881. GroutingDailyDetailID,
  1882. GroutingDate,
  1883. GroutingLineID,
  1884. GroutingLineCode,
  1885. GroutingLineName,
  1886. GMouldTypeID,
  1887. CanManyTimes,
  1888. GroutingLineDetailID,
  1889. GroutingMouldCode,
  1890. MouldCode,
  1891. GroutingUserID,
  1892. GroutingUserCode,
  1893. GroutingNum,
  1894. Remarks,
  1895. KilnID,
  1896. KilnCode,
  1897. KilnName,
  1898. KilnCarID,
  1899. KilnCarCode,
  1900. KilnCarName,
  1901. KilnCarBatchNo,
  1902. KilnCarPosition,
  1903. AccountID,
  1904. ValueFlag,
  1905. CreateUserID,
  1906. UpdateUserID,
  1907. SpecialRepairflag,
  1908. FlowProcedureID,
  1909. FlowProcedureTime,
  1910. ProcedureID,
  1911. ProcedureTime,
  1912. ProductionDataID,
  1913. logoid, ISREWORKFLAG, SEMICHECKID
  1914. )
  1915. select
  1916. BarCode,
  1917. ProductionLineID,
  1918. ProductionLineCode,
  1919. ProductionLineName,
  1920. ProcedureModel,
  1921. ModelType,
  1922. DefectFlag,
  1923. ReworkProcedureID,
  1924. IsPublicBody,
  1925. IsReFire,
  1926. :GoodsLevelID,
  1927. :GoodsLevelTypeID,
  1928. GoodsID,
  1929. GoodsCode,
  1930. GoodsName,
  1931. UserID,
  1932. GroutingDailyID,
  1933. GroutingDailyDetailID,
  1934. GroutingDate,
  1935. GroutingLineID,
  1936. GroutingLineCode,
  1937. GroutingLineName,
  1938. GMouldTypeID,
  1939. CanManyTimes,
  1940. GroutingLineDetailID,
  1941. GroutingMouldCode,
  1942. MouldCode,
  1943. GroutingUserID,
  1944. GroutingUserCode,
  1945. GroutingNum,
  1946. Remarks,
  1947. KilnID,
  1948. KilnCode,
  1949. KilnName,
  1950. KilnCarID,
  1951. KilnCarCode,
  1952. KilnCarName,
  1953. KilnCarBatchNo,
  1954. KilnCarPosition,
  1955. AccountID,
  1956. ValueFlag,
  1957. :CreateUserID,
  1958. :UpdateUserID,
  1959. SpecialRepairflag,
  1960. FlowProcedureID,
  1961. FlowProcedureTime,
  1962. ProcedureID,
  1963. ProcedureTime,
  1964. ProductionDataID,
  1965. logoid, ISREWORKFLAG, SEMICHECKID
  1966. from TP_PM_InProduction
  1967. where barcode='" + UpdateSProductEntity.BarCode + "'";
  1968. OracleParameter[] Paras2 = new OracleParameter[] {
  1969. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1970. userInfo.UserID,ParameterDirection.Input),
  1971. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1972. userInfo.UserID,ParameterDirection.Input),
  1973. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1974. UpdateSProductEntity.GoodsLevelID,ParameterDirection.Input),
  1975. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1976. UpdateSProductEntity.GoodsLevelTypeID,ParameterDirection.Input)
  1977. };
  1978. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  1979. //20150714 modify wangx
  1980. if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  1981. {
  1982. sbSql.Clear();
  1983. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1984. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1985. }
  1986. //20150714 modify wangx end
  1987. sbSql.Clear();
  1988. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1989. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1990. //如果没有删除在产产品,那么要去删除成品表
  1991. if (DeleteRows == 0)
  1992. {
  1993. sbSql.Clear();
  1994. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1995. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1996. }
  1997. //并且要把该产品的生产数据的最终状态添加上
  1998. //sbSql.Clear();
  1999. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2000. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2001. }
  2002. else
  2003. {
  2004. //if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  2005. //{
  2006. sbSql.Clear();
  2007. if (UpdateSProductEntity.AuditStatus == 0) //待审核
  2008. {
  2009. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2010. }
  2011. else
  2012. {
  2013. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2014. }
  2015. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2016. //}
  2017. }
  2018. //-----------------------------------------------
  2019. //无论如何,要把原始的责任者数据删除
  2020. foreach (ScrapResponsibleEntity spFor in YSResponsibleList)
  2021. {
  2022. sbSql.Clear();
  2023. sbSql.Append("delete from TP_PM_ScrapResponsible");
  2024. sbSql.Append(" where ResponsibleID=:ResponsibleID ");
  2025. OracleParameter[] SPParas = new OracleParameter[] {
  2026. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2027. spFor.ResponsibleID,ParameterDirection.Input)
  2028. };
  2029. deleteRprocedureReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2030. }
  2031. //判断一下责任类型,如果有责任工序的话,则修改责任工序信息
  2032. if (Convert.ToInt32(UpdateSProductEntity.ResponType) == 3)
  2033. {
  2034. if (UpdateRProcedureEntity != null)
  2035. {
  2036. if (UpdateRProcedureEntity.ResponProcedureID != null)
  2037. {
  2038. sbSql.Clear();
  2039. sbSql.Append("update TP_PM_ResponProcedure");
  2040. sbSql.Append(" set ProcedureID=:ProcedureID,");
  2041. sbSql.Append(" ProcedureCode=:ProcedureCode,");
  2042. sbSql.Append(" ProcedureName=:ProcedureName,");
  2043. sbSql.Append(" UserID=:UserID,");
  2044. sbSql.Append(" UserCode=:UserCode,");
  2045. sbSql.Append(" UserName=:UserName,");
  2046. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2047. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2048. OracleParameter[] RPParas = new OracleParameter[]
  2049. {
  2050. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2051. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2052. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2053. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2054. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2055. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2056. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2057. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2058. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2059. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2060. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2061. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2062. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2063. userInfo.UserID,ParameterDirection.Input),
  2064. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2065. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2066. };
  2067. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2068. }
  2069. else
  2070. {
  2071. //插入产品废弃责任工序
  2072. sbSql.Clear();
  2073. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  2074. UpdateRProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2075. sbSql.Clear();
  2076. sbSql.Append("Insert into TP_PM_ResponProcedure");
  2077. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  2078. sbSql.Append("ProductionLineCode,ProductionLineName,");
  2079. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  2080. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2081. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  2082. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  2083. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  2084. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  2085. OracleParameter[] RPParas = new OracleParameter[]
  2086. {
  2087. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2088. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  2089. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2090. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2091. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2092. UpdateRProcedureEntity.BarCode,ParameterDirection.Input),
  2093. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  2094. UpdateRProcedureEntity.ProductionDataID,ParameterDirection.Input),
  2095. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  2096. UpdateRProcedureEntity.ProductionLineID,ParameterDirection.Input),
  2097. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  2098. UpdateRProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  2099. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  2100. UpdateRProcedureEntity.ProductionLineName,ParameterDirection.Input),
  2101. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2102. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2103. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2104. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2105. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2106. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2107. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2108. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2109. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2110. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2111. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2112. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2113. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2114. UpdateRProcedureEntity.Remarks,ParameterDirection.Input),
  2115. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  2116. userInfo.AccountID,ParameterDirection.Input),
  2117. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  2118. userInfo.UserID,ParameterDirection.Input),
  2119. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2120. userInfo.UserID,ParameterDirection.Input)
  2121. };
  2122. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2123. }
  2124. }
  2125. }
  2126. else //责任类型改为不存在责任工序了,要把原来的删除
  2127. {
  2128. if (UpdateRProcedureEntity != null) //本来就没有的话就不用删了
  2129. {
  2130. if (UpdateRProcedureEntity.ValueFlag == 0) //直接删除即可
  2131. {
  2132. sbSql.Clear();
  2133. sbSql.Append("Delete from TP_PM_ResponProcedure");
  2134. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2135. OracleParameter[] RPParas = new OracleParameter[] {
  2136. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2137. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2138. };
  2139. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2140. }
  2141. }
  2142. }
  2143. //如果存在修改的产品废弃责任者
  2144. if (Convert.ToInt32(UpdateSProductEntity.ResponType) != 1)
  2145. {
  2146. //计算每个责任人的报废扣罚
  2147. decimal scrapfine = 0;
  2148. if (UpdateSResponsibleList.Count > 0)
  2149. {
  2150. scrapfine = UpdateSProductEntity.ScrapFine / UpdateSResponsibleList.Count;
  2151. }
  2152. //循环插入产品废弃责任者
  2153. foreach (ScrapResponsibleEntity spFor in UpdateSResponsibleList)
  2154. {
  2155. sbSql.Clear();
  2156. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  2157. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2158. int? ResponProcedureID = null;
  2159. if (UpdateRProcedureEntity != null)
  2160. {
  2161. if (UpdateRProcedureEntity.ValueFlag != 0)
  2162. {
  2163. ResponProcedureID = UpdateRProcedureEntity.ResponProcedureID;
  2164. }
  2165. }
  2166. sbSql.Clear();
  2167. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  2168. sbSql.Append("(ResponsibleID,ResponType,ResponProcedureID,Barcode,ScrapProductID,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  2169. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  2170. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  2171. sbSql.Append("values(:ResponsibleID,:ResponType,:ResponProcedureID,:Barcode,:ScrapProductID,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  2172. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  2173. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  2174. OracleParameter[] SPParas = new OracleParameter[]
  2175. {
  2176. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2177. spFor.ResponsibleID,ParameterDirection.Input),
  2178. new OracleParameter(":ResponType",OracleDbType.Int32,
  2179. Convert.ToInt32(UpdateSProductEntity.ResponType),ParameterDirection.Input),
  2180. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2181. ResponProcedureID,ParameterDirection.Input),
  2182. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2183. spFor.BarCode,ParameterDirection.Input),
  2184. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2185. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2186. new OracleParameter(":StaffID",OracleDbType.Int32,
  2187. spFor.StaffID,ParameterDirection.Input),
  2188. new OracleParameter(":UserID",OracleDbType.Int32,
  2189. spFor.UserID,ParameterDirection.Input),
  2190. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2191. spFor.UserCode,ParameterDirection.Input),
  2192. new OracleParameter(":UJobsID",OracleDbType.Int32,
  2193. spFor.UJobsID,ParameterDirection.Input),
  2194. new OracleParameter(":SJobsID",OracleDbType.Int32,
  2195. spFor.SJobsID,ParameterDirection.Input),
  2196. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  2197. spFor.StaffStatus,ParameterDirection.Input),
  2198. new OracleParameter(":AccountID",OracleDbType.Int32,
  2199. userInfo.AccountID,ParameterDirection.Input),
  2200. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2201. userInfo.UserID,ParameterDirection.Input),
  2202. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2203. userInfo.UserID,ParameterDirection.Input),
  2204. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  2205. scrapfine,ParameterDirection.Input)
  2206. };
  2207. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2208. }
  2209. }
  2210. #region 更新废弃责任工序的生产工序ID
  2211. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2212. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  2213. " (SELECT RP.PROCEDUREID\n" +
  2214. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  2215. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  2216. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2217. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2218. Paras = new OracleParameter[]
  2219. {
  2220. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2221. };
  2222. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2223. #endregion
  2224. #region 更新废弃责任工序的责任者ID和编码
  2225. sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2226. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  2227. " (SELECT SR.USERID, SR.USERCODE\n" +
  2228. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  2229. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  2230. " GROUP BY SR.USERID, SR.USERCODE)\n" +
  2231. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2232. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2233. Paras = new OracleParameter[]
  2234. {
  2235. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2236. };
  2237. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2238. #endregion
  2239. if (returnRows == 0)
  2240. {
  2241. oracleTrConn.Rollback();
  2242. oracleTrConn.Disconnect();
  2243. }
  2244. else
  2245. {
  2246. oracleTrConn.Commit();
  2247. oracleTrConn.Disconnect();
  2248. }
  2249. }
  2250. catch (Exception ex)
  2251. {
  2252. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2253. {
  2254. oracleTrConn.Rollback();
  2255. oracleTrConn.Disconnect();
  2256. }
  2257. throw ex;
  2258. }
  2259. finally
  2260. {
  2261. if (oracleTrConn.ConnState == ConnectionState.Open)
  2262. {
  2263. oracleTrConn.Disconnect();
  2264. }
  2265. }
  2266. return returnRows;
  2267. }
  2268. /// <summary>
  2269. /// 审核报损产品信息
  2270. /// </summary>
  2271. /// <param name="spEntity">被审核的产品实体</param>
  2272. /// <param name="userInfo">用户基本信息</param>
  2273. /// <returns>int</returns>
  2274. public static int AuditScrapProduct(ScrapProductEntity spEntity, SUserInfo userInfo)
  2275. {
  2276. int returnRows = 0;
  2277. int DeleteRows = 0;
  2278. //int UpdateRows = 0;
  2279. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2280. try
  2281. {
  2282. oracleTrConn.Connect();
  2283. StringBuilder sbSql = new StringBuilder();
  2284. sbSql.Append("update TP_PM_ScrapProduct");
  2285. sbSql.Append(" set AuditStatus=:AuditStatus,");
  2286. sbSql.Append(" Auditor=:Auditor,");
  2287. //sbSql.Append(" AuditDate=to_date(:AuditDate,'yyyy-MM-dd'),");
  2288. sbSql.Append(" AuditDate=:AuditDate,");
  2289. sbSql.Append(" AuditOpinion=:AuditOpinion,");
  2290. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2291. sbSql.Append(" where ScrapProductID=:ScrapProductID and OPTimeStamp=:OPTimeStamp");
  2292. OracleParameter[] RPParas = new OracleParameter[] {
  2293. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  2294. spEntity.AuditStatus,ParameterDirection.Input),
  2295. new OracleParameter(":Auditor",OracleDbType.Int32,
  2296. spEntity.Auditor,ParameterDirection.Input),
  2297. //new OracleParameter(":AuditDate",OracleDbType.NVarchar2,
  2298. //Convert.ToDateTime(spEntity.AuditlDate).ToString("yyyy-MM-dd"),ParameterDirection.Input),
  2299. new OracleParameter(":AuditDate",OracleDbType.Date,
  2300. spEntity.AuditlDate,ParameterDirection.Input),
  2301. new OracleParameter(":AuditOpinion",OracleDbType.NVarchar2,
  2302. spEntity.AuditOpinion,ParameterDirection.Input),
  2303. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2304. userInfo.UserID,ParameterDirection.Input),
  2305. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  2306. spEntity.ScrapProductID,ParameterDirection.Input),
  2307. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  2308. spEntity.OPTimeStamp,ParameterDirection.Input)
  2309. };
  2310. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2311. if (returnRows == 0)
  2312. {
  2313. oracleTrConn.Rollback();
  2314. oracleTrConn.Disconnect();
  2315. return -500;
  2316. }
  2317. //如果审核通过,要删除在产产品表中对应的信息
  2318. if (spEntity.AuditStatus == 1)
  2319. {
  2320. string sqlInsert = @"insert into TP_PM_InProductionTrash
  2321. (
  2322. BarCode,
  2323. ProductionLineID,
  2324. ProductionLineCode,
  2325. ProductionLineName,
  2326. ProcedureModel,
  2327. ModelType,
  2328. DefectFlag,
  2329. ReworkProcedureID,
  2330. IsPublicBody,
  2331. IsReFire,
  2332. GoodsLevelID,
  2333. GoodsLevelTypeID,
  2334. GoodsID,
  2335. GoodsCode,
  2336. GoodsName,
  2337. UserID,
  2338. GroutingDailyID,
  2339. GroutingDailyDetailID,
  2340. GroutingDate,
  2341. GroutingLineID,
  2342. GroutingLineCode,
  2343. GroutingLineName,
  2344. GMouldTypeID,
  2345. CanManyTimes,
  2346. GroutingLineDetailID,
  2347. GroutingMouldCode,
  2348. MouldCode,
  2349. GroutingUserID,
  2350. GroutingUserCode,
  2351. GroutingNum,
  2352. Remarks,
  2353. KilnID,
  2354. KilnCode,
  2355. KilnName,
  2356. KilnCarID,
  2357. KilnCarCode,
  2358. KilnCarName,
  2359. KilnCarBatchNo,
  2360. KilnCarPosition,
  2361. AccountID,
  2362. ValueFlag,
  2363. CreateUserID,
  2364. UpdateUserID,
  2365. SpecialRepairflag,
  2366. FlowProcedureID,
  2367. FlowProcedureTime,
  2368. ProcedureID,
  2369. ProcedureTime,
  2370. ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  2371. )
  2372. select
  2373. BarCode,
  2374. ProductionLineID,
  2375. ProductionLineCode,
  2376. ProductionLineName,
  2377. ProcedureModel,
  2378. ModelType,
  2379. DefectFlag,
  2380. ReworkProcedureID,
  2381. IsPublicBody,
  2382. IsReFire,
  2383. :GoodsLevelID,
  2384. :GoodsLevelTypeID,
  2385. GoodsID,
  2386. GoodsCode,
  2387. GoodsName,
  2388. UserID,
  2389. GroutingDailyID,
  2390. GroutingDailyDetailID,
  2391. GroutingDate,
  2392. GroutingLineID,
  2393. GroutingLineCode,
  2394. GroutingLineName,
  2395. GMouldTypeID,
  2396. CanManyTimes,
  2397. GroutingLineDetailID,
  2398. GroutingMouldCode,
  2399. MouldCode,
  2400. GroutingUserID,
  2401. GroutingUserCode,
  2402. GroutingNum,
  2403. Remarks,
  2404. KilnID,
  2405. KilnCode,
  2406. KilnName,
  2407. KilnCarID,
  2408. KilnCarCode,
  2409. KilnCarName,
  2410. KilnCarBatchNo,
  2411. KilnCarPosition,
  2412. AccountID,
  2413. ValueFlag,
  2414. :CreateUserID,
  2415. :UpdateUserID,
  2416. SpecialRepairflag,
  2417. FlowProcedureID,
  2418. FlowProcedureTime,
  2419. ProcedureID,
  2420. ProcedureTime,
  2421. ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  2422. from TP_PM_InProduction
  2423. where barcode='" + spEntity.BarCode + "'";
  2424. OracleParameter[] Paras = new OracleParameter[] {
  2425. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2426. userInfo.UserID,ParameterDirection.Input),
  2427. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2428. userInfo.UserID,ParameterDirection.Input),
  2429. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  2430. spEntity.GoodsLevelID,ParameterDirection.Input),
  2431. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  2432. spEntity.GoodsLevelTypeID,ParameterDirection.Input)
  2433. };
  2434. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras);
  2435. sbSql.Clear();
  2436. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + spEntity.BarCode + "'");
  2437. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2438. //如果没有删除在产产品,那么要去删除成品表
  2439. if (DeleteRows == 0)
  2440. {
  2441. sbSql.Clear();
  2442. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + spEntity.BarCode + "'");
  2443. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2444. }
  2445. //并且要把该产品的生产数据的最终状态添加上
  2446. //sbSql.Clear();
  2447. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + spEntity.BarCode + "'");
  2448. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2449. }
  2450. if (spEntity.AuditStatus != 1) //审批未通过
  2451. {
  2452. sbSql.Clear();
  2453. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + spEntity.BarCode + "'");
  2454. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2455. }
  2456. if (spEntity.AuditStatus == 1 && DeleteRows == 0)
  2457. {
  2458. oracleTrConn.Rollback();
  2459. oracleTrConn.Disconnect();
  2460. }
  2461. else
  2462. {
  2463. oracleTrConn.Commit();
  2464. oracleTrConn.Disconnect();
  2465. }
  2466. return returnRows;
  2467. }
  2468. catch (Exception ex)
  2469. {
  2470. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2471. {
  2472. oracleTrConn.Rollback();
  2473. oracleTrConn.Disconnect();
  2474. }
  2475. throw ex;
  2476. }
  2477. finally
  2478. {
  2479. if (oracleTrConn.ConnState == ConnectionState.Open)
  2480. {
  2481. oracleTrConn.Disconnect();
  2482. }
  2483. }
  2484. }
  2485. #endregion
  2486. #region 温湿计信息
  2487. /// <summary>
  2488. /// 添加温湿计信息
  2489. /// </summary>
  2490. /// <param name="crEntity">温湿计信息实体</param>
  2491. /// <param name="userInfo">当前用户</param>
  2492. /// <returns>影响行/结果</returns>
  2493. public static int AddCelsiusRecord(CelsiusRecordEntity crEntity, SUserInfo userInfo)
  2494. {
  2495. int RowsCount = 0;
  2496. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2497. try
  2498. {
  2499. oracleTrConn.Connect();
  2500. StringBuilder sbSql = new StringBuilder();
  2501. //获取序列ID
  2502. sbSql.Clear();
  2503. sbSql.Append("select SEQ_MST_Thermometer_ID.nextval from dual");
  2504. int entityId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2505. sbSql.Clear();
  2506. //添加温湿计信息
  2507. sbSql.Append(@"Insert into TP_PM_CelsiusRecord
  2508. (RecordID,ThermometerID,RecorderID,RecordDate,Celsius,Humidity,
  2509. Remarks,AccountID,CreateUserID,UpdateUserID)
  2510. Values
  2511. (:RecordID,:ThermometerID,:RecorderID,:RecordDate,:Celsius,:Humidity,
  2512. :Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  2513. OracleParameter[] CRParas = new OracleParameter[] {
  2514. new OracleParameter(":RecordID",OracleDbType.Int32,
  2515. entityId,ParameterDirection.Input),
  2516. new OracleParameter(":ThermometerID",OracleDbType.Int32,
  2517. crEntity.ThermometerID,ParameterDirection.Input),
  2518. new OracleParameter(":RecorderID",OracleDbType.Int32,
  2519. userInfo.UserID,ParameterDirection.Input),
  2520. new OracleParameter(":RecordDate",OracleDbType.Date,
  2521. crEntity.RecordDate,ParameterDirection.Input),
  2522. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2523. crEntity.Celsius,ParameterDirection.Input),
  2524. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2525. crEntity.Humidity,ParameterDirection.Input),
  2526. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2527. crEntity.Remarks,ParameterDirection.Input),
  2528. new OracleParameter(":AccountID",OracleDbType.Int32,
  2529. userInfo.AccountID,ParameterDirection.Input),
  2530. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2531. userInfo.UserID,ParameterDirection.Input),
  2532. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2533. userInfo.UserID,ParameterDirection.Input),
  2534. };
  2535. //连接数据库并返回结果
  2536. RowsCount = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2537. oracleTrConn.Commit();
  2538. oracleTrConn.Disconnect();
  2539. return RowsCount;
  2540. }
  2541. catch (Exception ex)
  2542. {
  2543. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2544. {
  2545. oracleTrConn.Rollback();
  2546. oracleTrConn.Disconnect();
  2547. }
  2548. throw ex;
  2549. }
  2550. finally
  2551. {
  2552. if (oracleTrConn.ConnState == ConnectionState.Open)
  2553. {
  2554. oracleTrConn.Disconnect();
  2555. }
  2556. }
  2557. }
  2558. /// <summary>
  2559. /// 修改温湿计信息
  2560. /// </summary>
  2561. /// <param name="crEntity">温湿计信息实体</param>
  2562. /// <param name="userInfo">当前用户</param>
  2563. /// <returns>影响行/结果</returns>
  2564. public static int UpdateCelsiusRecord(CelsiusRecordEntity crEntity, SUserInfo userInfo)
  2565. {
  2566. int RowsCount = 0;
  2567. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2568. try
  2569. {
  2570. oracleTrConn.Connect();
  2571. StringBuilder sbSql = new StringBuilder();
  2572. //修改温湿度信息
  2573. sbSql.Append(@"Update TP_PM_CelsiusRecord
  2574. Set RecordDate = :RecordDate,
  2575. Celsius = :Celsius,
  2576. Humidity = :Humidity,
  2577. Remarks = :Remarks,
  2578. UpdateUserID = :UpdateUserID
  2579. Where RecordId = :RecordID");
  2580. OracleParameter[] CRParas = new OracleParameter[] {
  2581. new OracleParameter(":RecordDate",OracleDbType.Date,
  2582. crEntity.RecordDate,ParameterDirection.Input),
  2583. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2584. crEntity.Celsius,ParameterDirection.Input),
  2585. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2586. crEntity.Humidity,ParameterDirection.Input),
  2587. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2588. crEntity.Remarks,ParameterDirection.Input),
  2589. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2590. userInfo.UserID,ParameterDirection.Input),
  2591. new OracleParameter(":RecordID",OracleDbType.Int32,
  2592. crEntity.RecordID,ParameterDirection.Input),
  2593. };
  2594. //连接数据库并返回结果
  2595. RowsCount = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2596. oracleTrConn.Commit();
  2597. oracleTrConn.Disconnect();
  2598. return RowsCount;
  2599. }
  2600. catch (Exception ex)
  2601. {
  2602. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2603. {
  2604. oracleTrConn.Rollback();
  2605. oracleTrConn.Disconnect();
  2606. }
  2607. throw ex;
  2608. }
  2609. finally
  2610. {
  2611. if (oracleTrConn.ConnState == ConnectionState.Open)
  2612. {
  2613. oracleTrConn.Disconnect();
  2614. }
  2615. }
  2616. }
  2617. /// <summary>
  2618. /// 批量操作温湿计信息
  2619. /// </summary>
  2620. /// <param name="RecordTime">记录时间</param>
  2621. /// <param name="dtCelsius">信息数据集</param>
  2622. /// <param name="userInfo">用户信息</param>
  2623. /// <returns>影响行数</returns>
  2624. public static int EditCelsiusRecord(DateTime RecordTime, DataTable dtCelsius, SUserInfo userInfo)
  2625. {
  2626. int RowsCount = 0;
  2627. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2628. try
  2629. {
  2630. oracleTrConn.Connect();
  2631. StringBuilder sbSql = new StringBuilder();
  2632. foreach (DataRow drFor in dtCelsius.Rows)
  2633. {
  2634. sbSql.Clear();
  2635. if (drFor.RowState == DataRowState.Added)
  2636. {
  2637. //获取序列ID
  2638. sbSql.Append("select SEQ_MST_Thermometer_ID.nextval from dual");
  2639. int entityId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2640. sbSql.Clear();
  2641. //添加温湿计信息
  2642. sbSql.Append(@"Insert into TP_PM_CelsiusRecord
  2643. (RecordID,ThermometerID,RecorderID,RecordDate,Celsius,Humidity,
  2644. Remarks,AccountID,CreateUserID,UpdateUserID)
  2645. Values
  2646. (:RecordID,:ThermometerID,:RecorderID,:RecordDate,:Celsius,:Humidity,
  2647. :Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  2648. OracleParameter[] CRParas = new OracleParameter[] {
  2649. new OracleParameter(":RecordID",OracleDbType.Int32,
  2650. entityId,ParameterDirection.Input),
  2651. new OracleParameter(":ThermometerID",OracleDbType.Int32,
  2652. drFor["ThermometerID"],ParameterDirection.Input),
  2653. new OracleParameter(":RecorderID",OracleDbType.Int32,
  2654. userInfo.UserID,ParameterDirection.Input),
  2655. new OracleParameter(":RecordDate",OracleDbType.Date,
  2656. RecordTime,ParameterDirection.Input),
  2657. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2658. drFor["Celsius"]==DBNull.Value?0: drFor["Celsius"],ParameterDirection.Input),
  2659. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2660. drFor["Humidity"]==DBNull.Value?0: drFor["Humidity"],ParameterDirection.Input),
  2661. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2662. drFor["Remarks"],ParameterDirection.Input),
  2663. new OracleParameter(":AccountID",OracleDbType.Int32,
  2664. userInfo.AccountID,ParameterDirection.Input),
  2665. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2666. userInfo.UserID,ParameterDirection.Input),
  2667. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2668. userInfo.UserID,ParameterDirection.Input),
  2669. };
  2670. //连接数据库并返回结果
  2671. RowsCount += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2672. }
  2673. else if (drFor.RowState == DataRowState.Modified)
  2674. {
  2675. //修改
  2676. sbSql.Append(@"Update TP_PM_CelsiusRecord
  2677. Set RecordDate = :RecordDate,
  2678. Celsius = :Celsius,
  2679. Humidity = :Humidity,
  2680. Remarks = :Remarks,
  2681. UpdateUserID = :UpdateUserID
  2682. Where RecordId = :RecordID");
  2683. OracleParameter[] CRParas = new OracleParameter[] {
  2684. new OracleParameter(":RecordDate",OracleDbType.Date,
  2685. RecordTime,ParameterDirection.Input),
  2686. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2687. drFor["Celsius"]==DBNull.Value?0: drFor["Celsius"],ParameterDirection.Input),
  2688. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2689. drFor["Humidity"]==DBNull.Value?0: drFor["Humidity"],ParameterDirection.Input),
  2690. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2691. drFor["Remarks"],ParameterDirection.Input),
  2692. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2693. userInfo.UserID,ParameterDirection.Input),
  2694. new OracleParameter(":RecordID",OracleDbType.Int32,
  2695. drFor["RecordID"],ParameterDirection.Input),
  2696. };
  2697. //连接数据库并返回结果
  2698. RowsCount += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2699. }
  2700. }
  2701. oracleTrConn.Commit();
  2702. oracleTrConn.Disconnect();
  2703. return RowsCount;
  2704. }
  2705. catch (Exception ex)
  2706. {
  2707. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2708. {
  2709. oracleTrConn.Rollback();
  2710. oracleTrConn.Disconnect();
  2711. }
  2712. throw ex;
  2713. }
  2714. finally
  2715. {
  2716. if (oracleTrConn.ConnState == ConnectionState.Open)
  2717. {
  2718. oracleTrConn.Disconnect();
  2719. }
  2720. }
  2721. }
  2722. /// <summary>
  2723. /// 删除温湿计信息
  2724. /// </summary>
  2725. /// <param name="recordID">记录id</param>
  2726. /// <param name="user">用户基本信息</param>
  2727. /// <returns>影响行数</returns>
  2728. /// <remarks>
  2729. /// 陈晓野 2016.09.13 新建
  2730. /// </remarks>
  2731. public static int DeleteCelsiusRecord(int recordID, SUserInfo user)
  2732. {
  2733. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2734. try
  2735. {
  2736. oracleTrConn.Connect();
  2737. string sql = "Update TP_PM_CelsiusRecord t "
  2738. + " Set t.ValueFlag = '0' Where t.RecordId = :RecordID";
  2739. OracleParameter[] paras = new OracleParameter[] {
  2740. new OracleParameter(":RecordID",OracleDbType.Int32,
  2741. recordID,ParameterDirection.Input),
  2742. };
  2743. //连接数据库并返回结果
  2744. int rowsCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  2745. oracleTrConn.Commit();
  2746. return rowsCount;
  2747. }
  2748. catch (Exception ex)
  2749. {
  2750. oracleTrConn.Rollback();
  2751. throw ex;
  2752. }
  2753. finally
  2754. {
  2755. if (oracleTrConn.ConnState == ConnectionState.Open)
  2756. {
  2757. oracleTrConn.Disconnect();
  2758. }
  2759. }
  2760. }
  2761. #endregion
  2762. /// <summary>
  2763. /// 添加撤销装车
  2764. /// </summary>
  2765. /// <param name="procedureID"><工序ID/param>
  2766. /// <param name="barcode">产品条码</param>
  2767. /// <param name="sUserInfo">用户基本信息</param>
  2768. /// <returns>string</returns>
  2769. public static string AddCancelLoadCar(int procedureID, string barcode, SUserInfo sUserInfo)
  2770. {
  2771. string errMsg = "";
  2772. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2773. try
  2774. {
  2775. oracleTrConn.Connect();
  2776. OracleParameter[] paras = new OracleParameter[]{
  2777. new OracleParameter("in_barcode",OracleDbType.Varchar2,
  2778. barcode,ParameterDirection.Input),
  2779. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  2780. new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2781. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,200,null,ParameterDirection.Output),
  2782. new OracleParameter("out_goodscode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2783. new OracleParameter("out_goodsname",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2784. new OracleParameter("out_kilncarcode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2785. };
  2786. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckCancelLoadCar", paras);
  2787. errMsg = paras[3].Value.ToString() == "null" ? "" : paras[3].Value.ToString().Replace("\\n\\r", "\n\r");
  2788. if (string.IsNullOrEmpty(errMsg))
  2789. {
  2790. #region 先查询生产数据最后2条
  2791. // string sqlString = @"select ProductionDataID,
  2792. // ProcedureID,
  2793. // ProcedureModel,
  2794. // ModelType,
  2795. // ReworkProcedureID,
  2796. // UserID
  2797. // from (select ProductionDataID,
  2798. // ProcedureID,
  2799. // ProcedureModel,
  2800. // ModelType,
  2801. // ReworkProcedureID,
  2802. // UserID
  2803. // from Tp_Pm_ProductiondataIn
  2804. // where barcode = :barcode
  2805. // and valueflag = 1
  2806. // order by ProductionDataID desc)
  2807. // where rownum <= 2";
  2808. string sqlString = @"select ProductionDataID,
  2809. ProcedureID,
  2810. ProcedureName,
  2811. ProcedureModel,
  2812. ModelType,
  2813. ReworkProcedureID,
  2814. UserID,
  2815. logoid,
  2816. KILNID ,
  2817. KILNCODE,
  2818. KILNNAME,
  2819. KilnCarID,
  2820. KILNCARCODE,
  2821. KILNCARNAME,
  2822. KILNCARBATCHNO,
  2823. KILNCARPOSITION,
  2824. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  2825. from (select ProductionDataID,
  2826. ProcedureID,
  2827. ProcedureName,
  2828. ProcedureModel,
  2829. ModelType,
  2830. ReworkProcedureID,
  2831. UserID,
  2832. logoid,
  2833. KILNID ,
  2834. KILNCODE,
  2835. KILNNAME,
  2836. KilnCarID,
  2837. KILNCARCODE,
  2838. KILNCARNAME,
  2839. KILNCARBATCHNO,
  2840. KILNCARPOSITION
  2841. from Tp_Pm_ProductiondataIn
  2842. where barcode = :barcode
  2843. and valueflag = 1 and ModelType<>1 and ModelType<>8
  2844. order by ProductionDataID desc) t
  2845. where rownum <= 1";
  2846. paras = new OracleParameter[]{
  2847. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2848. };
  2849. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2850. if (productionData == null
  2851. || productionData.Tables.Count == Constant.INT_IS_ZERO
  2852. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)//INT_IS_TWO
  2853. {
  2854. // 条码至少要有2次数据采集
  2855. errMsg = "条码没有登窑前数据";// Messages.MSG_PM_W016;
  2856. return errMsg;
  2857. }
  2858. #endregion
  2859. #region 回滚在产数据
  2860. // 重烧撤销装车要恢复到本烧窑车信息 modify by chenxy 2017-07-11 begin
  2861. // sqlString = @"update TP_PM_InProduction
  2862. // set FlowProcedureID = :flowProcedureID,
  2863. // ProcedureModel = :procedureModel,
  2864. // ProcedureID = :flowProcedureID,
  2865. // ModelType = :modelType,
  2866. // ReworkProcedureID = :reworkProcedureID,
  2867. // UserID = :userID,
  2868. // updateuserid = :updateuserid,
  2869. // --logoid = :logoid,
  2870. // KILNID = null,
  2871. // KILNCODE = null,
  2872. // KILNNAME = null,
  2873. // KilnCarID = null,
  2874. // KILNCARCODE = null,
  2875. // KILNCARNAME = null,
  2876. // KILNCARBATCHNO = null,
  2877. // KILNCARPOSITION = null
  2878. // where barcode = :barcode";
  2879. sqlString = "UPDATE TP_PM_INPRODUCTION\n" +
  2880. " SET FLOWPROCEDUREID = :FLOWPROCEDUREID,\n" +
  2881. " PROCEDUREMODEL = :PROCEDUREMODEL,\n" +
  2882. " PROCEDUREID = :PROCEDUREID,\n" +
  2883. " MODELTYPE = :MODELTYPE,\n" +
  2884. " REWORKPROCEDUREID = :REWORKPROCEDUREID,\n" +
  2885. " USERID = :USERID,\n" +
  2886. " UPDATEUSERID = :UPDATEUSERID,\n" +
  2887. " KILNID = :KILNID,\n" +
  2888. " KILNCODE = :KILNCODE,\n" +
  2889. " KILNNAME = :KILNNAME,\n" +
  2890. " KILNCARID = :KILNCARID,\n" +
  2891. " KILNCARCODE = :KILNCARCODE,\n" +
  2892. " KILNCARNAME = :KILNCARNAME,\n" +
  2893. " KILNCARBATCHNO = :KILNCARBATCHNO,\n" +
  2894. " KILNCARPOSITION = :KILNCARPOSITION,\n" +
  2895. " PRODUCTIONDATAID = :PRODUCTIONDATAID,\n" +
  2896. " PROCEDURETIME =\n" +
  2897. " (SELECT CREATETIME\n" +
  2898. " FROM TP_PM_PRODUCTIONDATAIN\n" +
  2899. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID)\n" +
  2900. " WHERE BARCODE = :BARCODE";
  2901. object pid = productionData.Tables[0].Rows[0]["p8id"];
  2902. if (pid == null || pid == DBNull.Value)
  2903. {
  2904. pid = productionData.Tables[0].Rows[0]["ProcedureID"];
  2905. }
  2906. paras = new OracleParameter[]{
  2907. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  2908. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//1--->0
  2909. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  2910. pid,ParameterDirection.Input),
  2911. new OracleParameter(":procedureModel",OracleDbType.Int32,
  2912. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  2913. new OracleParameter(":modelType",OracleDbType.Int32,
  2914. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  2915. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  2916. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  2917. new OracleParameter(":userID",OracleDbType.Int32,
  2918. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  2919. new OracleParameter(":KILNID",OracleDbType.Int32,
  2920. productionData.Tables[0].Rows[0]["KILNID"],ParameterDirection.Input),
  2921. new OracleParameter(":KILNCODE",OracleDbType.NVarchar2,
  2922. productionData.Tables[0].Rows[0]["KILNCODE"],ParameterDirection.Input),
  2923. new OracleParameter(":KILNNAME",OracleDbType.NVarchar2,
  2924. productionData.Tables[0].Rows[0]["KILNNAME"],ParameterDirection.Input),
  2925. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  2926. productionData.Tables[0].Rows[0]["KilnCarID"],ParameterDirection.Input),
  2927. new OracleParameter(":KILNCARCODE",OracleDbType.NVarchar2,
  2928. productionData.Tables[0].Rows[0]["KILNCARCODE"],ParameterDirection.Input),
  2929. new OracleParameter(":KILNCARNAME",OracleDbType.NVarchar2,
  2930. productionData.Tables[0].Rows[0]["KILNCARNAME"],ParameterDirection.Input),
  2931. new OracleParameter(":KILNCARBATCHNO",OracleDbType.NVarchar2,
  2932. productionData.Tables[0].Rows[0]["KILNCARBATCHNO"],ParameterDirection.Input),
  2933. new OracleParameter(":KILNCARPOSITION",OracleDbType.Int32,
  2934. productionData.Tables[0].Rows[0]["KILNCARPOSITION"],ParameterDirection.Input),
  2935. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2936. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2937. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  2938. productionData.Tables[0].Rows[0]["ProductionDataID"],ParameterDirection.Input)
  2939. //new OracleParameter(":logoid",OracleDbType.Int32,
  2940. // productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  2941. };
  2942. // 重烧撤销装车要恢复到本烧窑车信息 modify by chenxy 2017-07-11 end
  2943. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2944. if (rutenRows == Constant.INT_IS_ZERO)
  2945. {
  2946. // 保存失败
  2947. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2948. return errMsg;
  2949. }
  2950. #endregion
  2951. #region 删除生产者和最后一条生产数据
  2952. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  2953. //paras = new OracleParameter[]{
  2954. // new OracleParameter(":productionDataID",OracleDbType.Int32,
  2955. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  2956. //};
  2957. //rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2958. //if (rutenRows == Constant.INT_IS_ZERO)
  2959. //{
  2960. // // 保存失败
  2961. // errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2962. // return errMsg;
  2963. //}
  2964. //modify 2015/05/13 wangx GoodsLevelTypeID=11 撤销装车
  2965. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=11 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  2966. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  2967. int? GoodsLevelID = null;
  2968. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  2969. {
  2970. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  2971. }
  2972. //modify end
  2973. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  2974. if (GoodsLevelID != null)
  2975. {
  2976. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  2977. sqlString += ",GoodsLevelTypeID=11";
  2978. }
  2979. //sqlString += " where ProductionDataID=:productionDataID";
  2980. //新添加的 begin
  2981. paras = new OracleParameter[]{
  2982. new OracleParameter(":productionDataID",OracleDbType.Int32,
  2983. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  2984. new OracleParameter(":barcode",OracleDbType.Varchar2,
  2985. barcode,ParameterDirection.Input),
  2986. };
  2987. //新添加的 end
  2988. // 干补 数据不能撤销
  2989. //sqlString += " where ProductionDataID>:productionDataID and barcode=:barcode";
  2990. sqlString += " where ProductionDataID>:productionDataID and barcode=:barcode and ModelType=1 and valueflag='1'";
  2991. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2992. if (rutenRows == Constant.INT_IS_ZERO)
  2993. {
  2994. // 保存失败
  2995. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2996. return errMsg;
  2997. }
  2998. #endregion
  2999. #region 删除窑车产品
  3000. sqlString = "SELECT KILNCARID, kilncarbatchno from TP_PM_KilnCarGoods where BarCode=:barCode";
  3001. paras = new OracleParameter[]{
  3002. new OracleParameter(":barCode",OracleDbType.Varchar2,
  3003. barcode,ParameterDirection.Input),
  3004. };
  3005. DataTable kilnCar = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  3006. if (kilnCar == null || kilnCar.Rows.Count == 0)
  3007. {
  3008. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3009. return errMsg;
  3010. }
  3011. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  3012. paras = new OracleParameter[]{
  3013. new OracleParameter(":barCode",OracleDbType.Varchar2,
  3014. barcode,ParameterDirection.Input),
  3015. };
  3016. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3017. if (rutenRows == Constant.INT_IS_ZERO)
  3018. {
  3019. // 保存失败
  3020. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3021. return errMsg;
  3022. }
  3023. #endregion
  3024. #region 撤销窑车上最后一个产品
  3025. // 撤销窑车上最后一个产品后,删除窑车装车记录 add by chenxy 2017-06-06 begin
  3026. sqlString = "select count(*) from TP_PM_KilnCarGoods where KILNCARID = :KILNCARID";
  3027. paras = new OracleParameter[]{
  3028. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3029. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3030. };
  3031. string goodsCount = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  3032. if (string.IsNullOrWhiteSpace(goodsCount) || "0" == goodsCount)
  3033. {
  3034. // 撤销窑车上最后一个产品后,删除窑车装车记录(窑车生产数据)
  3035. sqlString = "UPDATE tp_pm_kilncardata kcd SET kcd.valueflag = '0' WHERE kcd.modeltype = 1 and kcd.kilncarbatchno = '" + kilnCar.Rows[0]["kilncarbatchno"] + "'";
  3036. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3037. // 最后一条窑车生产数据
  3038. sqlString = "select max(kilncardataid) kilncardataid from tp_pm_kilncardata where modeltype = 4 and valueflag = '1' and KILNCARID = :KILNCARID";
  3039. paras = new OracleParameter[]{
  3040. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3041. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3042. };
  3043. string kilncardataid = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  3044. // 回退窑车状态
  3045. if (string.IsNullOrWhiteSpace(kilncardataid))
  3046. {
  3047. // 第一次装车被撤销
  3048. sqlString = "delete from TP_PM_Kilncarstatus where KILNCARID = :KILNCARID";
  3049. paras = new OracleParameter[]{
  3050. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3051. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3052. };
  3053. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3054. }
  3055. else
  3056. {
  3057. sqlString = "UPDATE TP_PM_Kilncarstatus kcs\n" +
  3058. " SET (kcs.productionlineid,\n" +
  3059. " kcs.procedureid,\n" +
  3060. " kcs.procedurecode,\n" +
  3061. " kcs.procedurename,\n" +
  3062. " kcs.proceduremodel,\n" +
  3063. " kcs.modeltype,\n" +
  3064. " kcs.piecetype,\n" +
  3065. " kcs.kilncarstatus,\n" +
  3066. " kcs.loadingtime,\n" +
  3067. " kcs.intokilntime,\n" +
  3068. " kcs.outkilntime,\n" +
  3069. " kcs.unloadingtime,\n" +
  3070. " kcs.kilncarbatchno) =\n" +
  3071. " (SELECT kcd.productionlineid\n" +
  3072. " ,kcd.procedureid\n" +
  3073. " ,kcd.procedurecode\n" +
  3074. " ,kcd.procedurename\n" +
  3075. " ,kcd.proceduremodel\n" +
  3076. " ,kcd.modeltype\n" +
  3077. " ,kcd.piecetype\n" +
  3078. " ,kcd.kilncarstatus\n" +
  3079. " ,kcd.loadingtime\n" +
  3080. " ,kcd.intokilntime\n" +
  3081. " ,kcd.outkilntime\n" +
  3082. " ,kcd.unloadingtime\n" +
  3083. " ,kcd.kilncarbatchno\n" +
  3084. " FROM TP_PM_KILNCARDATA kcd\n" +
  3085. " WHERE kcd.kilncardataid = :kilncardataid)\n" +
  3086. " WHERE kcs.kilncarid = :kilncarid";
  3087. paras = new OracleParameter[]{
  3088. new OracleParameter(":kilncarid",OracleDbType.Int32,
  3089. kilnCar.Rows[0]["kilncarid"],ParameterDirection.Input),
  3090. new OracleParameter(":kilncardataid",OracleDbType.Int32,
  3091. kilncardataid,ParameterDirection.Input),
  3092. };
  3093. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3094. }
  3095. }
  3096. // 撤销窑车上最后一个产品后,删除窑车装车记录 add by chenxy 2017-06-06 end
  3097. #endregion
  3098. }
  3099. // 没有错误 提交事务
  3100. if (string.IsNullOrEmpty(errMsg))
  3101. {
  3102. oracleTrConn.Commit();
  3103. }
  3104. }
  3105. catch (Exception ex)
  3106. {
  3107. oracleTrConn.Rollback();
  3108. throw ex;
  3109. }
  3110. finally
  3111. {
  3112. // 释放资源
  3113. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3114. {
  3115. oracleTrConn.Disconnect();
  3116. }
  3117. }
  3118. return errMsg;
  3119. }
  3120. /// <summary>
  3121. /// 保存半检测信息
  3122. /// </summary>
  3123. /// <param name="semiTestEntitys">半检实体类</param>
  3124. /// <param name="sUserInfo">用户基本信息</param>
  3125. /// <returns>string</returns>
  3126. public static string AddSemiTest(SemiTestEntity[] semiTestEntitys, SUserInfo sUserInfo)
  3127. {
  3128. string errMsg = "";
  3129. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3130. try
  3131. {
  3132. oracleTrConn.Connect();
  3133. foreach (SemiTestEntity semiTest in semiTestEntitys)
  3134. {
  3135. #region 添加半检数据
  3136. // 查询新插入的半检数据ID
  3137. string sql = "select SEQ_PM_SemiTest_SemiTestID.nextval from dual";
  3138. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3139. semiTest.SemiTestID = Convert.ToInt32(idStr);
  3140. errMsg = AddSemiTestInfo(oracleTrConn, semiTest, sUserInfo);
  3141. if (!string.IsNullOrEmpty(errMsg))
  3142. {
  3143. return errMsg;
  3144. }
  3145. //// 查询新插入的半检数据ID
  3146. //string sql = "select SEQ_PM_SemiTest_SemiTestID.Currval from dual";
  3147. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3148. errMsg = AddSemiTestStaff(oracleTrConn, Convert.ToInt32(idStr), semiTest.TestUserID);
  3149. if (!string.IsNullOrEmpty(errMsg))
  3150. {
  3151. return errMsg;
  3152. }
  3153. // 存在半检明细
  3154. if (semiTest.SemiTestDetails != null)
  3155. {
  3156. foreach (SemiTestDetailEntity semiTestDetail in semiTest.SemiTestDetails)
  3157. {
  3158. errMsg = AddSemiTestDetails(oracleTrConn, semiTestDetail, sUserInfo, Convert.ToInt32(idStr), semiTest.TestDate);
  3159. if (!string.IsNullOrEmpty(errMsg))
  3160. {
  3161. return errMsg;
  3162. }
  3163. }
  3164. }
  3165. #endregion
  3166. }
  3167. // 没有错误 提交事务
  3168. if (string.IsNullOrEmpty(errMsg))
  3169. {
  3170. oracleTrConn.Commit();
  3171. }
  3172. }
  3173. catch (Exception ex)
  3174. {
  3175. oracleTrConn.Rollback();
  3176. throw ex;
  3177. }
  3178. finally
  3179. {
  3180. // 释放资源
  3181. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3182. {
  3183. oracleTrConn.Disconnect();
  3184. }
  3185. }
  3186. return errMsg;
  3187. }
  3188. /// <summary>
  3189. /// 添加半检数据
  3190. /// </summary>
  3191. /// <param name="oracleTrConn">数据连接事务</param>
  3192. /// <param name="semiTestEntity">半检实体类</param>
  3193. /// <param name="sUserInfo">用户基本信息</param>
  3194. /// <returns>string</returns>
  3195. private static string AddSemiTestInfo(IDBTransaction oracleTrConn, SemiTestEntity semiTestEntity, SUserInfo sUserInfo)
  3196. {
  3197. string errMsg = "";
  3198. #region SQL
  3199. string sql = "insert into TP_PM_SemiTest"
  3200. + " (SemiTestID,"
  3201. + " TestUserID,"
  3202. + " TestDate,"
  3203. + " Remarks,"
  3204. + " AuditStatus,"
  3205. + " Auditor,"
  3206. + " AuditlDate,"
  3207. + " AccountID,"
  3208. + " ValueFlag,"
  3209. + " CreateUserID,"
  3210. + " UpdateUserID,"
  3211. + " SemiTestType"
  3212. + ")"
  3213. + " values"
  3214. + " (:SemiTestID,"
  3215. + " :TestUserID,"
  3216. + " :TestDate,"
  3217. + " :Remarks,"
  3218. + " :AuditStatus,"
  3219. + " :Auditor,"
  3220. + " :AuditlDate,"
  3221. + " :AccountID,"
  3222. + " :ValueFlag,"
  3223. + " :CreateUserID,"
  3224. + " :UpdateUserID,"
  3225. + " :SemiTestType"
  3226. + ")";
  3227. #endregion
  3228. #region OracleParameter
  3229. OracleParameter[] oracleParameters = new OracleParameter[] {
  3230. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestEntity.SemiTestID,ParameterDirection.Input),
  3231. new OracleParameter(":TestUserID",OracleDbType.Int32, semiTestEntity.TestUserID,ParameterDirection.Input),
  3232. new OracleParameter(":TestDate",OracleDbType.Date, semiTestEntity.TestDate,ParameterDirection.Input),
  3233. new OracleParameter(":Remarks",OracleDbType.Varchar2, semiTestEntity.Remarks,ParameterDirection.Input),
  3234. new OracleParameter(":AuditStatus",OracleDbType.Int32, semiTestEntity.AuditStatus,ParameterDirection.Input),
  3235. new OracleParameter(":Auditor",OracleDbType.Int32, semiTestEntity.Auditor,ParameterDirection.Input),
  3236. new OracleParameter(":AuditlDate",OracleDbType.Date, semiTestEntity.AuditlDate,ParameterDirection.Input),
  3237. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3238. new OracleParameter(":ValueFlag",OracleDbType.Int32, semiTestEntity.ValueFlag,ParameterDirection.Input),
  3239. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3240. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3241. new OracleParameter(":SemiTestType",OracleDbType.Int32, semiTestEntity.SemiTestType,ParameterDirection.Input),
  3242. };
  3243. #endregion
  3244. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3245. // 保存失败
  3246. if (result != Constant.INT_IS_ONE)
  3247. {
  3248. return string.Format(Messages.MSG_CMN_W001, "半检", "保存");
  3249. }
  3250. return errMsg;
  3251. }
  3252. /// <summary>
  3253. /// 保存半检员工
  3254. /// </summary>
  3255. /// <param name="oracleTrConn">数据连接事务</param>
  3256. /// <param name="SemiTestID">半检数据ID</param>
  3257. /// <param name="UserID">工号ID</param>
  3258. /// <returns>string</returns>
  3259. private static string AddSemiTestStaff(IDBTransaction oracleTrConn, int SemiTestID, int UserID)
  3260. {
  3261. string errMsg = "";
  3262. #region SQL
  3263. string sql = @"insert into TP_PM_SemiTestStaff(SemiTestID,StaffID)
  3264. select :SemiTestID ,StaffID from TP_MST_UserStaff where UserID=:UserID";
  3265. #endregion
  3266. #region OracleParameter
  3267. OracleParameter[] oracleParameters = new OracleParameter[] {
  3268. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3269. new OracleParameter(":UserID",OracleDbType.Int32, UserID,ParameterDirection.Input),
  3270. };
  3271. #endregion
  3272. int resultCount = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3273. // 失败
  3274. if (resultCount == Constant.INT_IS_ZERO)
  3275. {
  3276. return string.Format(Messages.MSG_CMN_W001, "半检员工", "保存");
  3277. }
  3278. return errMsg;
  3279. }
  3280. /// <summary>
  3281. /// 添加半检数据明细
  3282. /// </summary>
  3283. /// <param name="oracleTrConn">数据连接事务</param>
  3284. /// <param name="semiTestDetail">半检明细实体类</param>
  3285. /// <param name="sUserInfo">用户基本信息</param>
  3286. /// <param name="SemiTestID">半检ID</param>
  3287. /// <param name="SemiTestDate">检验日期</param>
  3288. /// <returns>string</returns>
  3289. private static string AddSemiTestDetails(IDBTransaction oracleTrConn, SemiTestDetailEntity semiTestDetail, SUserInfo sUserInfo, int SemiTestID, DateTime SemiTestDate)
  3290. {
  3291. string errMsg = "";
  3292. #region SQL
  3293. // 查询新插入的半检数据ID
  3294. string sqlView = "select SEQ_PM_SemiTestDetail_ID.nextval from dual";
  3295. string idStr = oracleTrConn.GetSqlResultToStr(sqlView);
  3296. string sql = "insert into TP_PM_SemiTestDetail"
  3297. + " (SemiTestDetailID,"
  3298. + " SemiTestID,"
  3299. + " SemiTestDate,"
  3300. + " GroutingUserID,"
  3301. + " GoodsID,"
  3302. + " GoodsCode,"
  3303. + " GoodsName,"
  3304. + " TestNum,"
  3305. + " ScrapNum,"
  3306. + " ScrapReason,"
  3307. + " Feedback,"
  3308. + " AccountID,"
  3309. + " ValueFlag,"
  3310. + " CreateUserID,"
  3311. + " UpdateUserID"
  3312. + ")"
  3313. + " values"
  3314. + " (:SemiTestDetailID,"
  3315. + " :SemiTestID,"
  3316. + " :SemiTestDate,"
  3317. + " :GroutingUserID,"
  3318. + " :GoodsID,"
  3319. + " :GoodsCode,"
  3320. + " :GoodsName,"
  3321. + " :TestNum,"
  3322. + " :ScrapNum,"
  3323. + " :ScrapReason,"
  3324. + " :Feedback,"
  3325. + " :AccountID,"
  3326. + " 1,"
  3327. + " :CreateUserID,"
  3328. + " :UpdateUserID"
  3329. + ")";
  3330. #endregion
  3331. #region OracleParameter
  3332. OracleParameter[] oracleParameters = new OracleParameter[] {
  3333. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, Convert.ToInt32(idStr),ParameterDirection.Input),
  3334. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3335. new OracleParameter(":SemiTestDate",OracleDbType.Date, SemiTestDate,ParameterDirection.Input),
  3336. new OracleParameter(":GroutingUserID",OracleDbType.Int32, semiTestDetail.GroutingUserID,ParameterDirection.Input),
  3337. new OracleParameter(":GoodsID",OracleDbType.Int32, semiTestDetail.GoodsID,ParameterDirection.Input),
  3338. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, semiTestDetail.GoodsCode,ParameterDirection.Input),
  3339. new OracleParameter(":GoodsName",OracleDbType.Varchar2, semiTestDetail.GoodsName,ParameterDirection.Input),
  3340. new OracleParameter(":TestNum",OracleDbType.Decimal, semiTestDetail.TestNum,ParameterDirection.Input),
  3341. new OracleParameter(":ScrapNum",OracleDbType.Decimal, semiTestDetail.ScrapNum,ParameterDirection.Input),
  3342. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3343. new OracleParameter(":ScrapReason",OracleDbType.Varchar2, semiTestDetail.ScrapReason,ParameterDirection.Input),
  3344. new OracleParameter(":Feedback",OracleDbType.Varchar2, semiTestDetail.Feedback,ParameterDirection.Input),
  3345. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3346. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3347. };
  3348. #endregion
  3349. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3350. // 保存失败
  3351. if (result != Constant.INT_IS_ONE)
  3352. {
  3353. return string.Format(Messages.MSG_CMN_W001, "半检明细", "保存");
  3354. }
  3355. errMsg = AddSemiTestGStaff(oracleTrConn, Convert.ToInt32(idStr), Convert.ToInt32(semiTestDetail.GroutingUserID));
  3356. if (!string.IsNullOrEmpty(errMsg))
  3357. {
  3358. return errMsg;
  3359. }
  3360. // 存在半检明细
  3361. if (semiTestDetail.SemiTestDefects != null)
  3362. {
  3363. foreach (SemiTestDefectEntity semiTestDefect in semiTestDetail.SemiTestDefects)
  3364. {
  3365. errMsg = AddSemiTestDefect(oracleTrConn, semiTestDefect, sUserInfo, SemiTestID, Convert.ToInt32(idStr), SemiTestDate);
  3366. if (!string.IsNullOrEmpty(errMsg))
  3367. {
  3368. return errMsg;
  3369. }
  3370. }
  3371. }
  3372. return null;
  3373. }
  3374. /// <summary>
  3375. /// 保存半检成型员工
  3376. /// </summary>
  3377. /// <param name="oracleTrConn">数据连接事务</param>
  3378. /// <param name="SemiTestID">半检ID</param>
  3379. /// <param name="UserID">成型工号</param>
  3380. /// <returns>string</returns>
  3381. private static string AddSemiTestGStaff(IDBTransaction oracleTrConn, int SemiTestDetailID, int UserID)
  3382. {
  3383. string errMsg = "";
  3384. #region SQL
  3385. string sql = @"insert into TP_PM_SemiTestGStaff(SemiTestDetailID,StaffID)
  3386. select :SemiTestDetailID ,StaffID from TP_MST_UserStaff where UserID=:UserID";
  3387. #endregion
  3388. #region OracleParameter
  3389. OracleParameter[] oracleParameters = new OracleParameter[] {
  3390. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, SemiTestDetailID,ParameterDirection.Input),
  3391. new OracleParameter(":UserID",OracleDbType.Int32, UserID,ParameterDirection.Input),
  3392. };
  3393. #endregion
  3394. int resultCount = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3395. // 失败
  3396. if (resultCount == Constant.INT_IS_ZERO)
  3397. {
  3398. return string.Format(Messages.MSG_CMN_W001, "半检成型员工", "保存");
  3399. }
  3400. return errMsg;
  3401. }
  3402. /// <summary>
  3403. /// 添加半检缺陷
  3404. /// </summary>
  3405. /// <param name="oracleTrConn">数据连接事务</param>
  3406. /// <param name="semiTestDefect">半检缺陷</param>
  3407. /// <param name="sUserInfo">用户基本信息</param>
  3408. /// <param name="SemiTestID"><半检ID/param>
  3409. /// <param name="SemiTestDetailID">半检明细ID</param>
  3410. /// <param name="SemiTestDate">检验日期</param>
  3411. /// <returns>string</returns>
  3412. private static string AddSemiTestDefect(IDBTransaction oracleTrConn, SemiTestDefectEntity semiTestDefect, SUserInfo sUserInfo, int SemiTestID, int SemiTestDetailID, DateTime SemiTestDate)
  3413. {
  3414. string errMsg = "";
  3415. #region SQL
  3416. string sql = "insert into TP_PM_SemiTestDefect"
  3417. + " ("
  3418. + " SemiTestDetailID,"
  3419. + " SemiTestID,"
  3420. + " SemiTestDate,"
  3421. + " DefectID,"
  3422. + " DefectPositionID,"
  3423. + " DefectNum,"
  3424. + " AccountID,"
  3425. + " ValueFlag,"
  3426. + " CreateUserID,"
  3427. + " UpdateUserID"
  3428. + ")"
  3429. + " values"
  3430. + " ("
  3431. + " :SemiTestDetailID,"
  3432. + " :SemiTestID,"
  3433. + " :SemiTestDate,"
  3434. + " :DefectID,"
  3435. + " :DefectPositionID,"
  3436. + " :DefectNum,"
  3437. + " :AccountID,"
  3438. + " 1,"
  3439. + " :CreateUserID,"
  3440. + " :UpdateUserID"
  3441. + ")";
  3442. #endregion
  3443. #region OracleParameter
  3444. OracleParameter[] oracleParameters = new OracleParameter[] {
  3445. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, SemiTestDetailID,ParameterDirection.Input),
  3446. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3447. new OracleParameter(":SemiTestDate",OracleDbType.Date, SemiTestDate,ParameterDirection.Input),
  3448. new OracleParameter(":DefectID",OracleDbType.Int32, semiTestDefect.DefectID,ParameterDirection.Input),
  3449. new OracleParameter(":DefectPositionID",OracleDbType.Int32, semiTestDefect.DefectPositionID,ParameterDirection.Input),
  3450. new OracleParameter(":DefectNum",OracleDbType.Int32, semiTestDefect.DefectNum,ParameterDirection.Input),
  3451. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3452. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3453. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3454. };
  3455. #endregion
  3456. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3457. // 保存失败
  3458. if (result != Constant.INT_IS_ONE)
  3459. {
  3460. return string.Format(Messages.MSG_CMN_W001, "半检缺陷", "保存");
  3461. }
  3462. return errMsg;
  3463. }
  3464. /// <summary>
  3465. /// 编辑后禁用半检数据
  3466. /// </summary>
  3467. /// <param name="semiTestID">半检数据ID</param>
  3468. /// <returns>int</returns>
  3469. public static int DeleteSemiTestDataByID(int semiTestID)
  3470. {
  3471. int deleteRow = 0;
  3472. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3473. try
  3474. {
  3475. oracleTrConn.Connect();
  3476. string sqlString1 = @" update TP_PM_SemiTestDefect set ValueFlag=0 where SemiTestID=:SemiTestID";
  3477. string sqlString2 = @" update TP_PM_SemiTestDetail set ValueFlag=0 where SemiTestID=:SemiTestID";
  3478. string sqlString3 = @" update TP_PM_SemiTest set ValueFlag=0 where SemiTestID=:SemiTestID";
  3479. OracleParameter[] paras = new OracleParameter[]{
  3480. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  3481. };
  3482. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString1, paras);
  3483. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  3484. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  3485. // 没有错误 提交事务
  3486. if (deleteRow > 0)
  3487. {
  3488. oracleTrConn.Commit();
  3489. }
  3490. else
  3491. {
  3492. oracleTrConn.Rollback();
  3493. }
  3494. }
  3495. catch (Exception ex)
  3496. {
  3497. oracleTrConn.Rollback();
  3498. throw ex;
  3499. }
  3500. finally
  3501. {
  3502. // 释放资源
  3503. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3504. {
  3505. oracleTrConn.Disconnect();
  3506. }
  3507. }
  3508. return deleteRow;
  3509. }
  3510. /// <summary>
  3511. /// 验证时间戳
  3512. /// </summary>
  3513. /// <param name="semiTestID">半检ID</param>
  3514. /// <param name="opTimeStamp">时间戳</param>
  3515. /// <returns>int</returns>
  3516. public static int ValidateOPTimeStamp(int semiTestID, DateTime opTimeStamp)
  3517. {
  3518. int Row = 0;
  3519. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3520. try
  3521. {
  3522. oracleTrConn.Connect();
  3523. string sql = "SELECT OPTimeStamp FROM TP_PM_SemiTest"
  3524. + " WHERE SemiTestID =:SemiTestID and OPTimeStamp = :OPTimeStamp";
  3525. OracleParameter[] paras = new OracleParameter[]{
  3526. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  3527. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, opTimeStamp, ParameterDirection.Input),
  3528. };
  3529. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  3530. if (returnDataset != null
  3531. && returnDataset.Tables[0].Rows.Count == 0)
  3532. {
  3533. oracleTrConn.Commit();
  3534. oracleTrConn.Disconnect();
  3535. return -1;
  3536. }
  3537. oracleTrConn.Commit();
  3538. }
  3539. catch (Exception ex)
  3540. {
  3541. oracleTrConn.Rollback();
  3542. throw ex;
  3543. }
  3544. finally
  3545. {
  3546. // 释放资源
  3547. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3548. {
  3549. oracleTrConn.Disconnect();
  3550. }
  3551. }
  3552. return Row;
  3553. }
  3554. /// <summary>
  3555. /// 更新审核状态
  3556. /// </summary>
  3557. /// <param name="semiTestID">半检ID</param>
  3558. /// <param name="auditStatus">审核状态</param>
  3559. /// <param name="sUserInfo">用户基本信息</param>
  3560. /// <returns>int</returns>
  3561. public static int UpdateSemiTestByID(int semiTestID, int auditStatus, SUserInfo sUserInfo)
  3562. {
  3563. int UpdateRow = 0;
  3564. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3565. try
  3566. {
  3567. oracleTrConn.Connect();
  3568. string sql = "update TP_PM_SemiTest set AuditStatus=:AuditStatus,Auditor=:Auditor,AuditlDate=sysdate "
  3569. + " WHERE SemiTestID =:SemiTestID";
  3570. OracleParameter[] paras = new OracleParameter[]{
  3571. new OracleParameter(":AuditStatus",OracleDbType.Int32, auditStatus,ParameterDirection.Input),
  3572. new OracleParameter(":semiTestID", OracleDbType.Int32, semiTestID, ParameterDirection.Input),
  3573. new OracleParameter(":Auditor", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3574. };
  3575. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  3576. if (UpdateRow > 0)
  3577. {
  3578. oracleTrConn.Commit();
  3579. }
  3580. else
  3581. {
  3582. oracleTrConn.Rollback();
  3583. }
  3584. }
  3585. catch (Exception ex)
  3586. {
  3587. oracleTrConn.Rollback();
  3588. throw ex;
  3589. }
  3590. finally
  3591. {
  3592. // 释放资源
  3593. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3594. {
  3595. oracleTrConn.Disconnect();
  3596. }
  3597. }
  3598. return UpdateRow;
  3599. }
  3600. #region 撤销产品报损
  3601. /// <summary>
  3602. /// 撤销产品报损
  3603. /// </summary>
  3604. /// <param name="barcode">产品条码</param>
  3605. /// <param name="sUserInfo"></param>
  3606. /// <returns></returns>
  3607. public static ServiceResultEntity AddCancelScrapProduction(string barcode, SUserInfo sUserInfo)
  3608. {
  3609. ServiceResultEntity entity = new ServiceResultEntity();
  3610. int returnRows = 0;
  3611. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3612. try
  3613. {
  3614. oracleTrConn.Connect();
  3615. DateTime? auditDate = null;
  3616. int ScrapProductID = 0;
  3617. //string sql = "select ScrapProductID,AuditDate from TP_PM_ScrapProduct where barcode=:barcode and valueflag=1 and AuditStatus=1 and goodsleveltypeid=8";
  3618. string sql = @"select ScrapProductID,AuditDate,recyclingflag from TP_PM_ScrapProduct
  3619. where barcode=:barcode and valueflag=1 and AuditStatus=1
  3620. and goodsleveltypeid=8 and
  3621. createtime=(select max(createtime) from TP_PM_ScrapProduct where barcode=:barcode and valueflag=1 and AuditStatus=1 and goodsleveltypeid=8)";
  3622. OracleParameter[] paras = new OracleParameter[]{
  3623. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3624. };
  3625. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  3626. if (ds != null && ds.Tables[0].Rows.Count == 0)
  3627. {
  3628. //此产品没有损坯,不能撤销
  3629. returnRows = -1;
  3630. oracleTrConn.Rollback();
  3631. oracleTrConn.Disconnect();
  3632. entity.Result = returnRows;
  3633. return entity;
  3634. }
  3635. else
  3636. {
  3637. if (Convert.ToInt32(ds.Tables[0].Rows[0]["recyclingflag"]) > 0)
  3638. {
  3639. //已经回收不允许撤销
  3640. returnRows = -200;
  3641. oracleTrConn.Rollback();
  3642. oracleTrConn.Disconnect();
  3643. entity.Result = returnRows;
  3644. entity.Message = "此产品已经回收,不能撤销";
  3645. return entity;
  3646. }
  3647. ScrapProductID = Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapProductID"]);
  3648. auditDate = Convert.ToDateTime(ds.Tables[0].Rows[0]["auditDate"]);
  3649. }
  3650. #region 是否启用损坯撤销限制天数
  3651. if (auditDate != null)
  3652. {
  3653. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  3654. paras = new OracleParameter[] {
  3655. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  3656. Constant.SettingType.S_PM_006.ToString(),ParameterDirection.Input),
  3657. new OracleParameter(":accountid",OracleDbType.Int32,
  3658. sUserInfo.AccountID,ParameterDirection.Input)
  3659. };
  3660. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  3661. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3662. {
  3663. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  3664. {
  3665. // 开启了限制
  3666. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(auditDate),
  3667. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_006.ToString(), sUserInfo);
  3668. if (Convert.ToInt32(resultEntity.Result) < 0)
  3669. {
  3670. //超过损坯撤销限制天数
  3671. returnRows = -200;
  3672. oracleTrConn.Rollback();
  3673. oracleTrConn.Disconnect();
  3674. entity.Result = returnRows;
  3675. entity.Message = resultEntity.Message;
  3676. return entity;
  3677. }
  3678. }
  3679. }
  3680. }
  3681. #endregion
  3682. //第二步,回收站中数据回到在产中。
  3683. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3684. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3685. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3686. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3687. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3688. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3689. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3690. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  3691. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  3692. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3693. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3694. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  3695. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3696. )
  3697. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3698. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3699. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3700. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3701. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3702. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3703. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3704. CREATEUSERID, UPDATETIME, :UpdateUserID,
  3705. ISREFIRE, null, null, DEFECTFLAG,
  3706. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3707. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3708. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  3709. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3710. from TP_PM_InProductionTrash where barcode=:barcode ";
  3711. OracleParameter[] InProductparas = new OracleParameter[]{
  3712. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3713. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3714. };
  3715. returnRows += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  3716. //第三步,删除回收站中的条码
  3717. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  3718. OracleParameter[] TrashProductparas = new OracleParameter[]{
  3719. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  3720. };
  3721. returnRows += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  3722. //第四步,停用对应报损产品
  3723. string sqlString = "update TP_PM_ScrapProduct set valueflag=0 where ScrapProductid=:ScrapProductid ";
  3724. OracleParameter[] parasScrapProduct = new OracleParameter[]{
  3725. new OracleParameter(":ScrapProductid",OracleDbType.Int32,ScrapProductID,ParameterDirection.Input)
  3726. };
  3727. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, parasScrapProduct);
  3728. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  3729. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  3730. OracleParameter[] Paras = new OracleParameter[] {
  3731. new OracleParameter(":barcode",OracleDbType.Varchar2,
  3732. barcode,ParameterDirection.Input)
  3733. };
  3734. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  3735. if (ds.Tables[0].Rows.Count == 0)
  3736. {
  3737. // 2 生产数据恢复到在产生产数据
  3738. sql = @"insert into tp_pm_productiondatain
  3739. (
  3740. ProductionDataID,
  3741. BarCode,
  3742. CentralizedBatchNo,
  3743. ProductionLineID,
  3744. ProductionLineCode,
  3745. ProductionLineName,
  3746. ProcedureID,
  3747. ProcedureCode,
  3748. ProcedureName,
  3749. ProcedureModel,
  3750. ModelType,
  3751. PieceType,
  3752. IsReworked,
  3753. NodeType,
  3754. IsPublicBody,
  3755. IsReFire,
  3756. GoodsLevelID,
  3757. GoodsLevelTypeID,
  3758. SpecialRepairFlag,
  3759. OrganizationID,
  3760. GoodsID,
  3761. GoodsCode,
  3762. GoodsName,
  3763. UserID,
  3764. UserCode,
  3765. UserName,
  3766. ClassesSettingID,
  3767. KilnID,
  3768. KilnCode,
  3769. KilnName,
  3770. KilnCarID,
  3771. KilnCarCode,
  3772. KilnCarName,
  3773. KilnCarBatchNo,
  3774. KilnCarPosition,
  3775. ReworkProcedureID,
  3776. ReworkProcedureCode,
  3777. ReworkProcedureName,
  3778. GroutingDailyID,
  3779. GroutingDailyDetailID,
  3780. GroutingLineID,
  3781. GroutingLineCode,
  3782. GroutingLineName,
  3783. GMouldTypeID,
  3784. CanManyTimes,
  3785. GroutingLineDetailID,
  3786. GroutingDate,
  3787. GroutingMouldCode,
  3788. MouldCode,
  3789. GroutingUserID,
  3790. GroutingUserCode,
  3791. GroutingNum,
  3792. Remarks,
  3793. AccountDate,
  3794. SettlementFlag,
  3795. AccountID,
  3796. ValueFlag,
  3797. CreateTime,
  3798. CreateUserID,
  3799. UpdateTime,
  3800. UpdateUserID,
  3801. OPTimeStamp,
  3802. TriggerFlag,
  3803. logoid,
  3804. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  3805. )
  3806. select
  3807. ProductionDataID,
  3808. BarCode,
  3809. CentralizedBatchNo,
  3810. ProductionLineID,
  3811. ProductionLineCode,
  3812. ProductionLineName,
  3813. ProcedureID,
  3814. ProcedureCode,
  3815. ProcedureName,
  3816. ProcedureModel,
  3817. ModelType,
  3818. PieceType,
  3819. IsReworked,
  3820. NodeType,
  3821. IsPublicBody,
  3822. IsReFire,
  3823. GoodsLevelID,
  3824. GoodsLevelTypeID,
  3825. SpecialRepairFlag,
  3826. OrganizationID,
  3827. GoodsID,
  3828. GoodsCode,
  3829. GoodsName,
  3830. UserID,
  3831. UserCode,
  3832. UserName,
  3833. ClassesSettingID,
  3834. KilnID,
  3835. KilnCode,
  3836. KilnName,
  3837. KilnCarID,
  3838. KilnCarCode,
  3839. KilnCarName,
  3840. KilnCarBatchNo,
  3841. KilnCarPosition,
  3842. ReworkProcedureID,
  3843. ReworkProcedureCode,
  3844. ReworkProcedureName,
  3845. GroutingDailyID,
  3846. GroutingDailyDetailID,
  3847. GroutingLineID,
  3848. GroutingLineCode,
  3849. GroutingLineName,
  3850. GMouldTypeID,
  3851. CanManyTimes,
  3852. GroutingLineDetailID,
  3853. GroutingDate,
  3854. GroutingMouldCode,
  3855. MouldCode,
  3856. GroutingUserID,
  3857. GroutingUserCode,
  3858. GroutingNum,
  3859. Remarks,
  3860. AccountDate,
  3861. SettlementFlag,
  3862. AccountID,
  3863. ValueFlag,
  3864. CreateTime,
  3865. CreateUserID,
  3866. UpdateTime,
  3867. UpdateUserID,
  3868. OPTimeStamp,
  3869. 1,
  3870. logoid,
  3871. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  3872. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  3873. ";
  3874. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  3875. }
  3876. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  3877. if (returnRows <= 0)
  3878. {
  3879. oracleTrConn.Rollback();
  3880. oracleTrConn.Disconnect();
  3881. }
  3882. else
  3883. {
  3884. oracleTrConn.Commit();
  3885. oracleTrConn.Disconnect();
  3886. }
  3887. }
  3888. catch (Exception ex)
  3889. {
  3890. oracleTrConn.Rollback();
  3891. throw ex;
  3892. }
  3893. finally
  3894. {
  3895. // 释放资源
  3896. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3897. {
  3898. oracleTrConn.Disconnect();
  3899. }
  3900. }
  3901. entity.Result = returnRows;
  3902. return entity;
  3903. }
  3904. #endregion
  3905. }
  3906. }