PMModuleLogicDALPartial.cs 173 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065
  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.ManagedDataAccess.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.ManagedDataAccess.Client.OracleParameter[] paras1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  1260. //{
  1261. // new Oracle.ManagedDataAccess.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. //2021年12月6日10:58:08 by fy modify 取系统时间
  1825. //object result = DBNull.Value;
  1826. //string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  1827. //Oracle.ManagedDataAccess.Client.OracleParameter[] paras1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  1828. //{
  1829. // new Oracle.ManagedDataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  1830. //};
  1831. //object strResult = oracleTrConn.GetSqlResultToObj(strSql1, paras1);
  1832. //if (strResult == null || strResult == DBNull.Value)
  1833. //{
  1834. // // 服务器时间错误
  1835. // throw new Exception("SystemDateTimeError");
  1836. //}
  1837. //result = Convert.ToDateTime(strResult);
  1838. //sbSql.Append(string.Format(" ,AuditDate=to_date('{0}','yyyy-mm-dd hh24:mi:ss'),Auditor={1}", result.ToString().Replace("/", "-"), userInfo.UserID));
  1839. sbSql.Append(string.Format(" ,AuditDate=sysdate,Auditor={0},AccountDate=trunc(sysdate)", userInfo.UserID));
  1840. }
  1841. sbSql.Append(" where ScrapProductID=:ScrapProductID");
  1842. OracleParameter[] Paras = new OracleParameter[]
  1843. {
  1844. new OracleParameter(":ScrapDate",OracleDbType.NVarchar2,
  1845. UpdateSProductEntity.ScrapDate.ToString(),ParameterDirection.Input),
  1846. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1847. UpdateSProductEntity.Rreason,ParameterDirection.Input),
  1848. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1849. UpdateSProductEntity.Remarks,ParameterDirection.Input),
  1850. new OracleParameter(":ResponType",OracleDbType.Int32,
  1851. UpdateSProductEntity.ResponType,ParameterDirection.Input),
  1852. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1853. userInfo.UserID,ParameterDirection.Input),
  1854. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  1855. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  1856. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  1857. UpdateSProductEntity.ScrapFine,ParameterDirection.Input)
  1858. };
  1859. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1860. //如果是直接审批通过 wangxin 2015-03-24
  1861. if (UpdateSProductEntity.AuditStatus == 1)
  1862. {
  1863. int DeleteRows = 0;
  1864. string sqlInsert = @"insert into TP_PM_InProductionTrash
  1865. (
  1866. BarCode,
  1867. ProductionLineID,
  1868. ProductionLineCode,
  1869. ProductionLineName,
  1870. ProcedureModel,
  1871. ModelType,
  1872. DefectFlag,
  1873. ReworkProcedureID,
  1874. IsPublicBody,
  1875. IsReFire,
  1876. GoodsLevelID,
  1877. GoodsLevelTypeID,
  1878. GoodsID,
  1879. GoodsCode,
  1880. GoodsName,
  1881. UserID,
  1882. GroutingDailyID,
  1883. GroutingDailyDetailID,
  1884. GroutingDate,
  1885. GroutingLineID,
  1886. GroutingLineCode,
  1887. GroutingLineName,
  1888. GMouldTypeID,
  1889. CanManyTimes,
  1890. GroutingLineDetailID,
  1891. GroutingMouldCode,
  1892. MouldCode,
  1893. GroutingUserID,
  1894. GroutingUserCode,
  1895. GroutingNum,
  1896. Remarks,
  1897. KilnID,
  1898. KilnCode,
  1899. KilnName,
  1900. KilnCarID,
  1901. KilnCarCode,
  1902. KilnCarName,
  1903. KilnCarBatchNo,
  1904. KilnCarPosition,
  1905. AccountID,
  1906. ValueFlag,
  1907. CreateUserID,
  1908. UpdateUserID,
  1909. SpecialRepairflag,
  1910. FlowProcedureID,
  1911. FlowProcedureTime,
  1912. ProcedureID,
  1913. ProcedureTime,
  1914. ProductionDataID,
  1915. logoid, ISREWORKFLAG, SEMICHECKID
  1916. )
  1917. select
  1918. BarCode,
  1919. ProductionLineID,
  1920. ProductionLineCode,
  1921. ProductionLineName,
  1922. ProcedureModel,
  1923. ModelType,
  1924. DefectFlag,
  1925. ReworkProcedureID,
  1926. IsPublicBody,
  1927. IsReFire,
  1928. :GoodsLevelID,
  1929. :GoodsLevelTypeID,
  1930. GoodsID,
  1931. GoodsCode,
  1932. GoodsName,
  1933. UserID,
  1934. GroutingDailyID,
  1935. GroutingDailyDetailID,
  1936. GroutingDate,
  1937. GroutingLineID,
  1938. GroutingLineCode,
  1939. GroutingLineName,
  1940. GMouldTypeID,
  1941. CanManyTimes,
  1942. GroutingLineDetailID,
  1943. GroutingMouldCode,
  1944. MouldCode,
  1945. GroutingUserID,
  1946. GroutingUserCode,
  1947. GroutingNum,
  1948. Remarks,
  1949. KilnID,
  1950. KilnCode,
  1951. KilnName,
  1952. KilnCarID,
  1953. KilnCarCode,
  1954. KilnCarName,
  1955. KilnCarBatchNo,
  1956. KilnCarPosition,
  1957. AccountID,
  1958. ValueFlag,
  1959. :CreateUserID,
  1960. :UpdateUserID,
  1961. SpecialRepairflag,
  1962. FlowProcedureID,
  1963. FlowProcedureTime,
  1964. ProcedureID,
  1965. ProcedureTime,
  1966. ProductionDataID,
  1967. logoid, ISREWORKFLAG, SEMICHECKID
  1968. from TP_PM_InProduction
  1969. where barcode='" + UpdateSProductEntity.BarCode + "'";
  1970. OracleParameter[] Paras2 = new OracleParameter[] {
  1971. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1972. userInfo.UserID,ParameterDirection.Input),
  1973. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1974. userInfo.UserID,ParameterDirection.Input),
  1975. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1976. UpdateSProductEntity.GoodsLevelID,ParameterDirection.Input),
  1977. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1978. UpdateSProductEntity.GoodsLevelTypeID,ParameterDirection.Input)
  1979. };
  1980. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  1981. //20150714 modify wangx
  1982. if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  1983. {
  1984. sbSql.Clear();
  1985. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1986. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1987. }
  1988. //20150714 modify wangx end
  1989. sbSql.Clear();
  1990. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1991. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1992. //如果没有删除在产产品,那么要去删除成品表
  1993. if (DeleteRows == 0)
  1994. {
  1995. sbSql.Clear();
  1996. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1997. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1998. }
  1999. //并且要把该产品的生产数据的最终状态添加上
  2000. //sbSql.Clear();
  2001. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2002. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2003. }
  2004. else
  2005. {
  2006. //if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  2007. //{
  2008. sbSql.Clear();
  2009. if (UpdateSProductEntity.AuditStatus == 0) //待审核
  2010. {
  2011. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2012. }
  2013. else
  2014. {
  2015. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2016. }
  2017. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2018. //}
  2019. }
  2020. //-----------------------------------------------
  2021. //无论如何,要把原始的责任者数据删除
  2022. foreach (ScrapResponsibleEntity spFor in YSResponsibleList)
  2023. {
  2024. sbSql.Clear();
  2025. sbSql.Append("delete from TP_PM_ScrapResponsible");
  2026. sbSql.Append(" where ResponsibleID=:ResponsibleID ");
  2027. OracleParameter[] SPParas = new OracleParameter[] {
  2028. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2029. spFor.ResponsibleID,ParameterDirection.Input)
  2030. };
  2031. deleteRprocedureReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2032. }
  2033. //判断一下责任类型,如果有责任工序的话,则修改责任工序信息
  2034. if (Convert.ToInt32(UpdateSProductEntity.ResponType) == 3)
  2035. {
  2036. if (UpdateRProcedureEntity != null)
  2037. {
  2038. if (UpdateRProcedureEntity.ResponProcedureID != null)
  2039. {
  2040. sbSql.Clear();
  2041. sbSql.Append("update TP_PM_ResponProcedure");
  2042. sbSql.Append(" set ProcedureID=:ProcedureID,");
  2043. sbSql.Append(" ProcedureCode=:ProcedureCode,");
  2044. sbSql.Append(" ProcedureName=:ProcedureName,");
  2045. sbSql.Append(" UserID=:UserID,");
  2046. sbSql.Append(" UserCode=:UserCode,");
  2047. sbSql.Append(" UserName=:UserName,");
  2048. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2049. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2050. OracleParameter[] RPParas = new OracleParameter[]
  2051. {
  2052. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2053. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2054. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2055. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2056. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2057. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2058. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2059. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2060. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2061. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2062. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2063. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2064. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2065. userInfo.UserID,ParameterDirection.Input),
  2066. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2067. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2068. };
  2069. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2070. }
  2071. else
  2072. {
  2073. //插入产品废弃责任工序
  2074. sbSql.Clear();
  2075. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  2076. UpdateRProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2077. sbSql.Clear();
  2078. sbSql.Append("Insert into TP_PM_ResponProcedure");
  2079. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  2080. sbSql.Append("ProductionLineCode,ProductionLineName,");
  2081. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  2082. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2083. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  2084. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  2085. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  2086. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  2087. OracleParameter[] RPParas = new OracleParameter[]
  2088. {
  2089. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2090. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  2091. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2092. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2093. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2094. UpdateRProcedureEntity.BarCode,ParameterDirection.Input),
  2095. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  2096. UpdateRProcedureEntity.ProductionDataID,ParameterDirection.Input),
  2097. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  2098. UpdateRProcedureEntity.ProductionLineID,ParameterDirection.Input),
  2099. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  2100. UpdateRProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  2101. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  2102. UpdateRProcedureEntity.ProductionLineName,ParameterDirection.Input),
  2103. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2104. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2105. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2106. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2107. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2108. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2109. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2110. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2111. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2112. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2113. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2114. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2115. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2116. UpdateRProcedureEntity.Remarks,ParameterDirection.Input),
  2117. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  2118. userInfo.AccountID,ParameterDirection.Input),
  2119. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  2120. userInfo.UserID,ParameterDirection.Input),
  2121. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2122. userInfo.UserID,ParameterDirection.Input)
  2123. };
  2124. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2125. }
  2126. }
  2127. }
  2128. else //责任类型改为不存在责任工序了,要把原来的删除
  2129. {
  2130. if (UpdateRProcedureEntity != null) //本来就没有的话就不用删了
  2131. {
  2132. if (UpdateRProcedureEntity.ValueFlag == 0) //直接删除即可
  2133. {
  2134. sbSql.Clear();
  2135. sbSql.Append("Delete from TP_PM_ResponProcedure");
  2136. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2137. OracleParameter[] RPParas = new OracleParameter[] {
  2138. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2139. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2140. };
  2141. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2142. }
  2143. }
  2144. }
  2145. //如果存在修改的产品废弃责任者
  2146. if (Convert.ToInt32(UpdateSProductEntity.ResponType) != 1)
  2147. {
  2148. //计算每个责任人的报废扣罚
  2149. decimal scrapfine = 0;
  2150. if (UpdateSResponsibleList.Count > 0)
  2151. {
  2152. scrapfine = UpdateSProductEntity.ScrapFine / UpdateSResponsibleList.Count;
  2153. }
  2154. //循环插入产品废弃责任者
  2155. foreach (ScrapResponsibleEntity spFor in UpdateSResponsibleList)
  2156. {
  2157. sbSql.Clear();
  2158. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  2159. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2160. int? ResponProcedureID = null;
  2161. if (UpdateRProcedureEntity != null)
  2162. {
  2163. if (UpdateRProcedureEntity.ValueFlag != 0)
  2164. {
  2165. ResponProcedureID = UpdateRProcedureEntity.ResponProcedureID;
  2166. }
  2167. }
  2168. sbSql.Clear();
  2169. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  2170. sbSql.Append("(ResponsibleID,ResponType,ResponProcedureID,Barcode,ScrapProductID,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  2171. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  2172. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  2173. sbSql.Append("values(:ResponsibleID,:ResponType,:ResponProcedureID,:Barcode,:ScrapProductID,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  2174. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  2175. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  2176. OracleParameter[] SPParas = new OracleParameter[]
  2177. {
  2178. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2179. spFor.ResponsibleID,ParameterDirection.Input),
  2180. new OracleParameter(":ResponType",OracleDbType.Int32,
  2181. Convert.ToInt32(UpdateSProductEntity.ResponType),ParameterDirection.Input),
  2182. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2183. ResponProcedureID,ParameterDirection.Input),
  2184. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2185. spFor.BarCode,ParameterDirection.Input),
  2186. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2187. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2188. new OracleParameter(":StaffID",OracleDbType.Int32,
  2189. spFor.StaffID,ParameterDirection.Input),
  2190. new OracleParameter(":UserID",OracleDbType.Int32,
  2191. spFor.UserID,ParameterDirection.Input),
  2192. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2193. spFor.UserCode,ParameterDirection.Input),
  2194. new OracleParameter(":UJobsID",OracleDbType.Int32,
  2195. spFor.UJobsID,ParameterDirection.Input),
  2196. new OracleParameter(":SJobsID",OracleDbType.Int32,
  2197. spFor.SJobsID,ParameterDirection.Input),
  2198. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  2199. spFor.StaffStatus,ParameterDirection.Input),
  2200. new OracleParameter(":AccountID",OracleDbType.Int32,
  2201. userInfo.AccountID,ParameterDirection.Input),
  2202. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2203. userInfo.UserID,ParameterDirection.Input),
  2204. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2205. userInfo.UserID,ParameterDirection.Input),
  2206. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  2207. scrapfine,ParameterDirection.Input)
  2208. };
  2209. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2210. }
  2211. }
  2212. #region 更新废弃责任工序的生产工序ID
  2213. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2214. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  2215. " (SELECT RP.PROCEDUREID\n" +
  2216. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  2217. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  2218. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2219. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2220. Paras = new OracleParameter[]
  2221. {
  2222. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2223. };
  2224. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2225. #endregion
  2226. #region 更新废弃责任工序的责任者ID和编码
  2227. sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2228. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  2229. " (SELECT SR.USERID, SR.USERCODE\n" +
  2230. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  2231. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  2232. " GROUP BY SR.USERID, SR.USERCODE)\n" +
  2233. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2234. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2235. Paras = new OracleParameter[]
  2236. {
  2237. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2238. };
  2239. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2240. #endregion
  2241. if (returnRows == 0)
  2242. {
  2243. oracleTrConn.Rollback();
  2244. oracleTrConn.Disconnect();
  2245. }
  2246. else
  2247. {
  2248. oracleTrConn.Commit();
  2249. oracleTrConn.Disconnect();
  2250. }
  2251. }
  2252. catch (Exception ex)
  2253. {
  2254. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2255. {
  2256. oracleTrConn.Rollback();
  2257. oracleTrConn.Disconnect();
  2258. }
  2259. throw ex;
  2260. }
  2261. finally
  2262. {
  2263. if (oracleTrConn.ConnState == ConnectionState.Open)
  2264. {
  2265. oracleTrConn.Disconnect();
  2266. }
  2267. }
  2268. return returnRows;
  2269. }
  2270. /// <summary>
  2271. /// 审核报损产品信息
  2272. /// </summary>
  2273. /// <param name="spEntity">被审核的产品实体</param>
  2274. /// <param name="userInfo">用户基本信息</param>
  2275. /// <returns>int</returns>
  2276. public static int AuditScrapProduct(ScrapProductEntity spEntity, SUserInfo userInfo)
  2277. {
  2278. int returnRows = 0;
  2279. int DeleteRows = 0;
  2280. //int UpdateRows = 0;
  2281. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2282. try
  2283. {
  2284. oracleTrConn.Connect();
  2285. StringBuilder sbSql = new StringBuilder();
  2286. sbSql.Append("update TP_PM_ScrapProduct");
  2287. sbSql.Append(" set AuditStatus=:AuditStatus,");
  2288. sbSql.Append(" Auditor=:Auditor,");
  2289. //sbSql.Append(" AuditDate=to_date(:AuditDate,'yyyy-MM-dd'),");
  2290. //sbSql.Append(" AuditDate=:AuditDate,");
  2291. sbSql.Append(" AuditDate=sysdate,");
  2292. sbSql.Append(" AuditOpinion=:AuditOpinion,");
  2293. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2294. sbSql.Append(" where ScrapProductID=:ScrapProductID and OPTimeStamp=:OPTimeStamp");
  2295. OracleParameter[] RPParas = new OracleParameter[] {
  2296. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  2297. spEntity.AuditStatus,ParameterDirection.Input),
  2298. new OracleParameter(":Auditor",OracleDbType.Int32,
  2299. spEntity.Auditor,ParameterDirection.Input),
  2300. //new OracleParameter(":AuditDate",OracleDbType.NVarchar2,
  2301. //Convert.ToDateTime(spEntity.AuditlDate).ToString("yyyy-MM-dd"),ParameterDirection.Input),
  2302. //2021年12月6日10:45:35 by fy modify将审核时间修改为系统当前时间
  2303. //new OracleParameter(":AuditDate",OracleDbType.Date,
  2304. //spEntity.AuditlDate,ParameterDirection.Input),
  2305. new OracleParameter(":AuditOpinion",OracleDbType.NVarchar2,
  2306. spEntity.AuditOpinion,ParameterDirection.Input),
  2307. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2308. userInfo.UserID,ParameterDirection.Input),
  2309. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  2310. spEntity.ScrapProductID,ParameterDirection.Input),
  2311. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  2312. spEntity.OPTimeStamp,ParameterDirection.Input)
  2313. };
  2314. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2315. if (returnRows == 0)
  2316. {
  2317. oracleTrConn.Rollback();
  2318. oracleTrConn.Disconnect();
  2319. return -500;
  2320. }
  2321. //如果审核通过,要删除在产产品表中对应的信息
  2322. if (spEntity.AuditStatus == 1)
  2323. {
  2324. string sqlInsert = @"insert into TP_PM_InProductionTrash
  2325. (
  2326. BarCode,
  2327. ProductionLineID,
  2328. ProductionLineCode,
  2329. ProductionLineName,
  2330. ProcedureModel,
  2331. ModelType,
  2332. DefectFlag,
  2333. ReworkProcedureID,
  2334. IsPublicBody,
  2335. IsReFire,
  2336. GoodsLevelID,
  2337. GoodsLevelTypeID,
  2338. GoodsID,
  2339. GoodsCode,
  2340. GoodsName,
  2341. UserID,
  2342. GroutingDailyID,
  2343. GroutingDailyDetailID,
  2344. GroutingDate,
  2345. GroutingLineID,
  2346. GroutingLineCode,
  2347. GroutingLineName,
  2348. GMouldTypeID,
  2349. CanManyTimes,
  2350. GroutingLineDetailID,
  2351. GroutingMouldCode,
  2352. MouldCode,
  2353. GroutingUserID,
  2354. GroutingUserCode,
  2355. GroutingNum,
  2356. Remarks,
  2357. KilnID,
  2358. KilnCode,
  2359. KilnName,
  2360. KilnCarID,
  2361. KilnCarCode,
  2362. KilnCarName,
  2363. KilnCarBatchNo,
  2364. KilnCarPosition,
  2365. AccountID,
  2366. ValueFlag,
  2367. CreateUserID,
  2368. UpdateUserID,
  2369. SpecialRepairflag,
  2370. FlowProcedureID,
  2371. FlowProcedureTime,
  2372. ProcedureID,
  2373. ProcedureTime,
  2374. ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  2375. )
  2376. select
  2377. BarCode,
  2378. ProductionLineID,
  2379. ProductionLineCode,
  2380. ProductionLineName,
  2381. ProcedureModel,
  2382. ModelType,
  2383. DefectFlag,
  2384. ReworkProcedureID,
  2385. IsPublicBody,
  2386. IsReFire,
  2387. :GoodsLevelID,
  2388. :GoodsLevelTypeID,
  2389. GoodsID,
  2390. GoodsCode,
  2391. GoodsName,
  2392. UserID,
  2393. GroutingDailyID,
  2394. GroutingDailyDetailID,
  2395. GroutingDate,
  2396. GroutingLineID,
  2397. GroutingLineCode,
  2398. GroutingLineName,
  2399. GMouldTypeID,
  2400. CanManyTimes,
  2401. GroutingLineDetailID,
  2402. GroutingMouldCode,
  2403. MouldCode,
  2404. GroutingUserID,
  2405. GroutingUserCode,
  2406. GroutingNum,
  2407. Remarks,
  2408. KilnID,
  2409. KilnCode,
  2410. KilnName,
  2411. KilnCarID,
  2412. KilnCarCode,
  2413. KilnCarName,
  2414. KilnCarBatchNo,
  2415. KilnCarPosition,
  2416. AccountID,
  2417. ValueFlag,
  2418. :CreateUserID,
  2419. :UpdateUserID,
  2420. SpecialRepairflag,
  2421. FlowProcedureID,
  2422. FlowProcedureTime,
  2423. ProcedureID,
  2424. ProcedureTime,
  2425. ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  2426. from TP_PM_InProduction
  2427. where barcode='" + spEntity.BarCode + "'";
  2428. OracleParameter[] Paras = new OracleParameter[] {
  2429. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2430. userInfo.UserID,ParameterDirection.Input),
  2431. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2432. userInfo.UserID,ParameterDirection.Input),
  2433. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  2434. spEntity.GoodsLevelID,ParameterDirection.Input),
  2435. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  2436. spEntity.GoodsLevelTypeID,ParameterDirection.Input)
  2437. };
  2438. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras);
  2439. sbSql.Clear();
  2440. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + spEntity.BarCode + "'");
  2441. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2442. //如果没有删除在产产品,那么要去删除成品表
  2443. if (DeleteRows == 0)
  2444. {
  2445. sbSql.Clear();
  2446. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + spEntity.BarCode + "'");
  2447. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2448. }
  2449. //并且要把该产品的生产数据的最终状态添加上
  2450. //sbSql.Clear();
  2451. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + spEntity.BarCode + "'");
  2452. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2453. }
  2454. if (spEntity.AuditStatus != 1) //审批未通过
  2455. {
  2456. sbSql.Clear();
  2457. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + spEntity.BarCode + "'");
  2458. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2459. }
  2460. if (spEntity.AuditStatus == 1 && DeleteRows == 0)
  2461. {
  2462. oracleTrConn.Rollback();
  2463. oracleTrConn.Disconnect();
  2464. }
  2465. else
  2466. {
  2467. oracleTrConn.Commit();
  2468. oracleTrConn.Disconnect();
  2469. }
  2470. return returnRows;
  2471. }
  2472. catch (Exception ex)
  2473. {
  2474. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2475. {
  2476. oracleTrConn.Rollback();
  2477. oracleTrConn.Disconnect();
  2478. }
  2479. throw ex;
  2480. }
  2481. finally
  2482. {
  2483. if (oracleTrConn.ConnState == ConnectionState.Open)
  2484. {
  2485. oracleTrConn.Disconnect();
  2486. }
  2487. }
  2488. }
  2489. #endregion
  2490. #region 温湿计信息
  2491. /// <summary>
  2492. /// 添加温湿计信息
  2493. /// </summary>
  2494. /// <param name="crEntity">温湿计信息实体</param>
  2495. /// <param name="userInfo">当前用户</param>
  2496. /// <returns>影响行/结果</returns>
  2497. public static int AddCelsiusRecord(CelsiusRecordEntity crEntity, SUserInfo userInfo)
  2498. {
  2499. int RowsCount = 0;
  2500. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2501. try
  2502. {
  2503. oracleTrConn.Connect();
  2504. StringBuilder sbSql = new StringBuilder();
  2505. //获取序列ID
  2506. sbSql.Clear();
  2507. sbSql.Append("select SEQ_MST_Thermometer_ID.nextval from dual");
  2508. int entityId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2509. sbSql.Clear();
  2510. //添加温湿计信息
  2511. sbSql.Append(@"Insert into TP_PM_CelsiusRecord
  2512. (RecordID,ThermometerID,RecorderID,RecordDate,Celsius,Humidity,
  2513. Remarks,AccountID,CreateUserID,UpdateUserID)
  2514. Values
  2515. (:RecordID,:ThermometerID,:RecorderID,:RecordDate,:Celsius,:Humidity,
  2516. :Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  2517. OracleParameter[] CRParas = new OracleParameter[] {
  2518. new OracleParameter(":RecordID",OracleDbType.Int32,
  2519. entityId,ParameterDirection.Input),
  2520. new OracleParameter(":ThermometerID",OracleDbType.Int32,
  2521. crEntity.ThermometerID,ParameterDirection.Input),
  2522. new OracleParameter(":RecorderID",OracleDbType.Int32,
  2523. userInfo.UserID,ParameterDirection.Input),
  2524. new OracleParameter(":RecordDate",OracleDbType.Date,
  2525. crEntity.RecordDate,ParameterDirection.Input),
  2526. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2527. crEntity.Celsius,ParameterDirection.Input),
  2528. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2529. crEntity.Humidity,ParameterDirection.Input),
  2530. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2531. crEntity.Remarks,ParameterDirection.Input),
  2532. new OracleParameter(":AccountID",OracleDbType.Int32,
  2533. userInfo.AccountID,ParameterDirection.Input),
  2534. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2535. userInfo.UserID,ParameterDirection.Input),
  2536. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2537. userInfo.UserID,ParameterDirection.Input),
  2538. };
  2539. //连接数据库并返回结果
  2540. RowsCount = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2541. oracleTrConn.Commit();
  2542. oracleTrConn.Disconnect();
  2543. return RowsCount;
  2544. }
  2545. catch (Exception ex)
  2546. {
  2547. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2548. {
  2549. oracleTrConn.Rollback();
  2550. oracleTrConn.Disconnect();
  2551. }
  2552. throw ex;
  2553. }
  2554. finally
  2555. {
  2556. if (oracleTrConn.ConnState == ConnectionState.Open)
  2557. {
  2558. oracleTrConn.Disconnect();
  2559. }
  2560. }
  2561. }
  2562. /// <summary>
  2563. /// 修改温湿计信息
  2564. /// </summary>
  2565. /// <param name="crEntity">温湿计信息实体</param>
  2566. /// <param name="userInfo">当前用户</param>
  2567. /// <returns>影响行/结果</returns>
  2568. public static int UpdateCelsiusRecord(CelsiusRecordEntity crEntity, SUserInfo userInfo)
  2569. {
  2570. int RowsCount = 0;
  2571. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2572. try
  2573. {
  2574. oracleTrConn.Connect();
  2575. StringBuilder sbSql = new StringBuilder();
  2576. //修改温湿度信息
  2577. sbSql.Append(@"Update TP_PM_CelsiusRecord
  2578. Set RecordDate = :RecordDate,
  2579. Celsius = :Celsius,
  2580. Humidity = :Humidity,
  2581. Remarks = :Remarks,
  2582. UpdateUserID = :UpdateUserID
  2583. Where RecordId = :RecordID");
  2584. OracleParameter[] CRParas = new OracleParameter[] {
  2585. new OracleParameter(":RecordDate",OracleDbType.Date,
  2586. crEntity.RecordDate,ParameterDirection.Input),
  2587. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2588. crEntity.Celsius,ParameterDirection.Input),
  2589. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2590. crEntity.Humidity,ParameterDirection.Input),
  2591. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2592. crEntity.Remarks,ParameterDirection.Input),
  2593. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2594. userInfo.UserID,ParameterDirection.Input),
  2595. new OracleParameter(":RecordID",OracleDbType.Int32,
  2596. crEntity.RecordID,ParameterDirection.Input),
  2597. };
  2598. //连接数据库并返回结果
  2599. RowsCount = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2600. oracleTrConn.Commit();
  2601. oracleTrConn.Disconnect();
  2602. return RowsCount;
  2603. }
  2604. catch (Exception ex)
  2605. {
  2606. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2607. {
  2608. oracleTrConn.Rollback();
  2609. oracleTrConn.Disconnect();
  2610. }
  2611. throw ex;
  2612. }
  2613. finally
  2614. {
  2615. if (oracleTrConn.ConnState == ConnectionState.Open)
  2616. {
  2617. oracleTrConn.Disconnect();
  2618. }
  2619. }
  2620. }
  2621. /// <summary>
  2622. /// 批量操作温湿计信息
  2623. /// </summary>
  2624. /// <param name="RecordTime">记录时间</param>
  2625. /// <param name="dtCelsius">信息数据集</param>
  2626. /// <param name="userInfo">用户信息</param>
  2627. /// <returns>影响行数</returns>
  2628. public static int EditCelsiusRecord(DateTime RecordTime, DataTable dtCelsius, SUserInfo userInfo)
  2629. {
  2630. int RowsCount = 0;
  2631. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2632. try
  2633. {
  2634. oracleTrConn.Connect();
  2635. StringBuilder sbSql = new StringBuilder();
  2636. foreach (DataRow drFor in dtCelsius.Rows)
  2637. {
  2638. sbSql.Clear();
  2639. if (drFor.RowState == DataRowState.Added)
  2640. {
  2641. //获取序列ID
  2642. sbSql.Append("select SEQ_MST_Thermometer_ID.nextval from dual");
  2643. int entityId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2644. sbSql.Clear();
  2645. //添加温湿计信息
  2646. sbSql.Append(@"Insert into TP_PM_CelsiusRecord
  2647. (RecordID,ThermometerID,RecorderID,RecordDate,Celsius,Humidity,
  2648. Remarks,AccountID,CreateUserID,UpdateUserID)
  2649. Values
  2650. (:RecordID,:ThermometerID,:RecorderID,:RecordDate,:Celsius,:Humidity,
  2651. :Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  2652. OracleParameter[] CRParas = new OracleParameter[] {
  2653. new OracleParameter(":RecordID",OracleDbType.Int32,
  2654. entityId,ParameterDirection.Input),
  2655. new OracleParameter(":ThermometerID",OracleDbType.Int32,
  2656. drFor["ThermometerID"],ParameterDirection.Input),
  2657. new OracleParameter(":RecorderID",OracleDbType.Int32,
  2658. userInfo.UserID,ParameterDirection.Input),
  2659. new OracleParameter(":RecordDate",OracleDbType.Date,
  2660. RecordTime,ParameterDirection.Input),
  2661. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2662. drFor["Celsius"]==DBNull.Value?0: drFor["Celsius"],ParameterDirection.Input),
  2663. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2664. drFor["Humidity"]==DBNull.Value?0: drFor["Humidity"],ParameterDirection.Input),
  2665. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2666. drFor["Remarks"],ParameterDirection.Input),
  2667. new OracleParameter(":AccountID",OracleDbType.Int32,
  2668. userInfo.AccountID,ParameterDirection.Input),
  2669. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2670. userInfo.UserID,ParameterDirection.Input),
  2671. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2672. userInfo.UserID,ParameterDirection.Input),
  2673. };
  2674. //连接数据库并返回结果
  2675. RowsCount += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2676. }
  2677. else if (drFor.RowState == DataRowState.Modified)
  2678. {
  2679. //修改
  2680. sbSql.Append(@"Update TP_PM_CelsiusRecord
  2681. Set RecordDate = :RecordDate,
  2682. Celsius = :Celsius,
  2683. Humidity = :Humidity,
  2684. Remarks = :Remarks,
  2685. UpdateUserID = :UpdateUserID
  2686. Where RecordId = :RecordID");
  2687. OracleParameter[] CRParas = new OracleParameter[] {
  2688. new OracleParameter(":RecordDate",OracleDbType.Date,
  2689. RecordTime,ParameterDirection.Input),
  2690. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2691. drFor["Celsius"]==DBNull.Value?0: drFor["Celsius"],ParameterDirection.Input),
  2692. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2693. drFor["Humidity"]==DBNull.Value?0: drFor["Humidity"],ParameterDirection.Input),
  2694. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2695. drFor["Remarks"],ParameterDirection.Input),
  2696. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2697. userInfo.UserID,ParameterDirection.Input),
  2698. new OracleParameter(":RecordID",OracleDbType.Int32,
  2699. drFor["RecordID"],ParameterDirection.Input),
  2700. };
  2701. //连接数据库并返回结果
  2702. RowsCount += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2703. }
  2704. }
  2705. oracleTrConn.Commit();
  2706. oracleTrConn.Disconnect();
  2707. return RowsCount;
  2708. }
  2709. catch (Exception ex)
  2710. {
  2711. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2712. {
  2713. oracleTrConn.Rollback();
  2714. oracleTrConn.Disconnect();
  2715. }
  2716. throw ex;
  2717. }
  2718. finally
  2719. {
  2720. if (oracleTrConn.ConnState == ConnectionState.Open)
  2721. {
  2722. oracleTrConn.Disconnect();
  2723. }
  2724. }
  2725. }
  2726. /// <summary>
  2727. /// 删除温湿计信息
  2728. /// </summary>
  2729. /// <param name="recordID">记录id</param>
  2730. /// <param name="user">用户基本信息</param>
  2731. /// <returns>影响行数</returns>
  2732. /// <remarks>
  2733. /// 陈晓野 2016.09.13 新建
  2734. /// </remarks>
  2735. public static int DeleteCelsiusRecord(int recordID, SUserInfo user)
  2736. {
  2737. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2738. try
  2739. {
  2740. oracleTrConn.Connect();
  2741. string sql = "Update TP_PM_CelsiusRecord t "
  2742. + " Set t.ValueFlag = '0' Where t.RecordId = :RecordID";
  2743. OracleParameter[] paras = new OracleParameter[] {
  2744. new OracleParameter(":RecordID",OracleDbType.Int32,
  2745. recordID,ParameterDirection.Input),
  2746. };
  2747. //连接数据库并返回结果
  2748. int rowsCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  2749. oracleTrConn.Commit();
  2750. return rowsCount;
  2751. }
  2752. catch (Exception ex)
  2753. {
  2754. oracleTrConn.Rollback();
  2755. throw ex;
  2756. }
  2757. finally
  2758. {
  2759. if (oracleTrConn.ConnState == ConnectionState.Open)
  2760. {
  2761. oracleTrConn.Disconnect();
  2762. }
  2763. }
  2764. }
  2765. #endregion
  2766. /// <summary>
  2767. /// 添加撤销装车
  2768. /// </summary>
  2769. /// <param name="procedureID"><工序ID/param>
  2770. /// <param name="barcode">产品条码</param>
  2771. /// <param name="sUserInfo">用户基本信息</param>
  2772. /// <returns>string</returns>
  2773. public static string AddCancelLoadCar(int procedureID, string barcode, SUserInfo sUserInfo)
  2774. {
  2775. string errMsg = "";
  2776. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2777. try
  2778. {
  2779. oracleTrConn.Connect();
  2780. OracleParameter[] paras = new OracleParameter[]{
  2781. new OracleParameter("in_barcode",OracleDbType.Varchar2,
  2782. barcode,ParameterDirection.Input),
  2783. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  2784. new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2785. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,200,null,ParameterDirection.Output),
  2786. new OracleParameter("out_goodscode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2787. new OracleParameter("out_goodsname",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2788. new OracleParameter("out_kilncarcode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2789. };
  2790. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckCancelLoadCar", paras);
  2791. errMsg = paras[3].Value.ToString() == "null" ? "" : paras[3].Value.ToString().Replace("\\n\\r", "\n\r");
  2792. if (string.IsNullOrEmpty(errMsg))
  2793. {
  2794. #region 先查询生产数据最后2条
  2795. // string sqlString = @"select ProductionDataID,
  2796. // ProcedureID,
  2797. // ProcedureModel,
  2798. // ModelType,
  2799. // ReworkProcedureID,
  2800. // UserID
  2801. // from (select ProductionDataID,
  2802. // ProcedureID,
  2803. // ProcedureModel,
  2804. // ModelType,
  2805. // ReworkProcedureID,
  2806. // UserID
  2807. // from Tp_Pm_ProductiondataIn
  2808. // where barcode = :barcode
  2809. // and valueflag = 1
  2810. // order by ProductionDataID desc)
  2811. // where rownum <= 2";
  2812. string sqlString = @"select ProductionDataID,
  2813. ProcedureID,
  2814. ProcedureName,
  2815. ProcedureModel,
  2816. ModelType,
  2817. ReworkProcedureID,
  2818. UserID,
  2819. logoid,
  2820. KILNID ,
  2821. KILNCODE,
  2822. KILNNAME,
  2823. KilnCarID,
  2824. KILNCARCODE,
  2825. KILNCARNAME,
  2826. KILNCARBATCHNO,
  2827. KILNCARPOSITION,
  2828. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  2829. from (select ProductionDataID,
  2830. ProcedureID,
  2831. ProcedureName,
  2832. ProcedureModel,
  2833. ModelType,
  2834. ReworkProcedureID,
  2835. UserID,
  2836. logoid,
  2837. KILNID ,
  2838. KILNCODE,
  2839. KILNNAME,
  2840. KilnCarID,
  2841. KILNCARCODE,
  2842. KILNCARNAME,
  2843. KILNCARBATCHNO,
  2844. KILNCARPOSITION
  2845. from Tp_Pm_ProductiondataIn
  2846. where barcode = :barcode
  2847. and valueflag = 1 and ModelType<>1 and ModelType<>8
  2848. order by ProductionDataID desc) t
  2849. where rownum <= 1";
  2850. paras = new OracleParameter[]{
  2851. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2852. };
  2853. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2854. if (productionData == null
  2855. || productionData.Tables.Count == Constant.INT_IS_ZERO
  2856. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)//INT_IS_TWO
  2857. {
  2858. // 条码至少要有2次数据采集
  2859. errMsg = "条码没有登窑前数据";// Messages.MSG_PM_W016;
  2860. return errMsg;
  2861. }
  2862. #endregion
  2863. #region 回滚在产数据
  2864. // 重烧撤销装车要恢复到本烧窑车信息 modify by chenxy 2017-07-11 begin
  2865. // sqlString = @"update TP_PM_InProduction
  2866. // set FlowProcedureID = :flowProcedureID,
  2867. // ProcedureModel = :procedureModel,
  2868. // ProcedureID = :flowProcedureID,
  2869. // ModelType = :modelType,
  2870. // ReworkProcedureID = :reworkProcedureID,
  2871. // UserID = :userID,
  2872. // updateuserid = :updateuserid,
  2873. // --logoid = :logoid,
  2874. // KILNID = null,
  2875. // KILNCODE = null,
  2876. // KILNNAME = null,
  2877. // KilnCarID = null,
  2878. // KILNCARCODE = null,
  2879. // KILNCARNAME = null,
  2880. // KILNCARBATCHNO = null,
  2881. // KILNCARPOSITION = null
  2882. // where barcode = :barcode";
  2883. sqlString = "UPDATE TP_PM_INPRODUCTION\n" +
  2884. " SET FLOWPROCEDUREID = :FLOWPROCEDUREID,\n" +
  2885. " PROCEDUREMODEL = :PROCEDUREMODEL,\n" +
  2886. " PROCEDUREID = :PROCEDUREID,\n" +
  2887. " MODELTYPE = :MODELTYPE,\n" +
  2888. " REWORKPROCEDUREID = :REWORKPROCEDUREID,\n" +
  2889. " USERID = :USERID,\n" +
  2890. " UPDATEUSERID = :UPDATEUSERID,\n" +
  2891. " KILNID = :KILNID,\n" +
  2892. " KILNCODE = :KILNCODE,\n" +
  2893. " KILNNAME = :KILNNAME,\n" +
  2894. " KILNCARID = :KILNCARID,\n" +
  2895. " KILNCARCODE = :KILNCARCODE,\n" +
  2896. " KILNCARNAME = :KILNCARNAME,\n" +
  2897. " KILNCARBATCHNO = :KILNCARBATCHNO,\n" +
  2898. " KILNCARPOSITION = :KILNCARPOSITION,\n" +
  2899. " PRODUCTIONDATAID = :PRODUCTIONDATAID,\n" +
  2900. " PROCEDURETIME =\n" +
  2901. " (SELECT CREATETIME\n" +
  2902. " FROM TP_PM_PRODUCTIONDATAIN\n" +
  2903. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID)\n" +
  2904. " WHERE BARCODE = :BARCODE";
  2905. object pid = productionData.Tables[0].Rows[0]["p8id"];
  2906. if (pid == null || pid == DBNull.Value)
  2907. {
  2908. pid = productionData.Tables[0].Rows[0]["ProcedureID"];
  2909. }
  2910. paras = new OracleParameter[]{
  2911. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  2912. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//1--->0
  2913. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  2914. pid,ParameterDirection.Input),
  2915. new OracleParameter(":procedureModel",OracleDbType.Int32,
  2916. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  2917. new OracleParameter(":modelType",OracleDbType.Int32,
  2918. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  2919. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  2920. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  2921. new OracleParameter(":userID",OracleDbType.Int32,
  2922. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  2923. new OracleParameter(":KILNID",OracleDbType.Int32,
  2924. productionData.Tables[0].Rows[0]["KILNID"],ParameterDirection.Input),
  2925. new OracleParameter(":KILNCODE",OracleDbType.NVarchar2,
  2926. productionData.Tables[0].Rows[0]["KILNCODE"],ParameterDirection.Input),
  2927. new OracleParameter(":KILNNAME",OracleDbType.NVarchar2,
  2928. productionData.Tables[0].Rows[0]["KILNNAME"],ParameterDirection.Input),
  2929. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  2930. productionData.Tables[0].Rows[0]["KilnCarID"],ParameterDirection.Input),
  2931. new OracleParameter(":KILNCARCODE",OracleDbType.NVarchar2,
  2932. productionData.Tables[0].Rows[0]["KILNCARCODE"],ParameterDirection.Input),
  2933. new OracleParameter(":KILNCARNAME",OracleDbType.NVarchar2,
  2934. productionData.Tables[0].Rows[0]["KILNCARNAME"],ParameterDirection.Input),
  2935. new OracleParameter(":KILNCARBATCHNO",OracleDbType.NVarchar2,
  2936. productionData.Tables[0].Rows[0]["KILNCARBATCHNO"],ParameterDirection.Input),
  2937. new OracleParameter(":KILNCARPOSITION",OracleDbType.Int32,
  2938. productionData.Tables[0].Rows[0]["KILNCARPOSITION"],ParameterDirection.Input),
  2939. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2940. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2941. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  2942. productionData.Tables[0].Rows[0]["ProductionDataID"],ParameterDirection.Input)
  2943. //new OracleParameter(":logoid",OracleDbType.Int32,
  2944. // productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  2945. };
  2946. // 重烧撤销装车要恢复到本烧窑车信息 modify by chenxy 2017-07-11 end
  2947. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2948. if (rutenRows == Constant.INT_IS_ZERO)
  2949. {
  2950. // 保存失败
  2951. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2952. return errMsg;
  2953. }
  2954. #endregion
  2955. #region 删除生产者和最后一条生产数据
  2956. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  2957. //paras = new OracleParameter[]{
  2958. // new OracleParameter(":productionDataID",OracleDbType.Int32,
  2959. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  2960. //};
  2961. //rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2962. //if (rutenRows == Constant.INT_IS_ZERO)
  2963. //{
  2964. // // 保存失败
  2965. // errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2966. // return errMsg;
  2967. //}
  2968. //modify 2015/05/13 wangx GoodsLevelTypeID=11 撤销装车
  2969. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=11 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  2970. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  2971. int? GoodsLevelID = null;
  2972. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  2973. {
  2974. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  2975. }
  2976. //modify end
  2977. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  2978. if (GoodsLevelID != null)
  2979. {
  2980. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  2981. sqlString += ",GoodsLevelTypeID=11";
  2982. }
  2983. //sqlString += " where ProductionDataID=:productionDataID";
  2984. //新添加的 begin
  2985. paras = new OracleParameter[]{
  2986. new OracleParameter(":productionDataID",OracleDbType.Int32,
  2987. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  2988. new OracleParameter(":barcode",OracleDbType.Varchar2,
  2989. barcode,ParameterDirection.Input),
  2990. };
  2991. //新添加的 end
  2992. // 干补 数据不能撤销
  2993. //sqlString += " where ProductionDataID>:productionDataID and barcode=:barcode";
  2994. sqlString += " where ProductionDataID>:productionDataID and barcode=:barcode and ModelType=1 and valueflag='1'";
  2995. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2996. if (rutenRows == Constant.INT_IS_ZERO)
  2997. {
  2998. // 保存失败
  2999. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3000. return errMsg;
  3001. }
  3002. #endregion
  3003. #region 删除窑车产品
  3004. sqlString = "SELECT KILNCARID, kilncarbatchno from TP_PM_KilnCarGoods where BarCode=:barCode";
  3005. paras = new OracleParameter[]{
  3006. new OracleParameter(":barCode",OracleDbType.Varchar2,
  3007. barcode,ParameterDirection.Input),
  3008. };
  3009. DataTable kilnCar = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  3010. if (kilnCar == null || kilnCar.Rows.Count == 0)
  3011. {
  3012. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3013. return errMsg;
  3014. }
  3015. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  3016. paras = new OracleParameter[]{
  3017. new OracleParameter(":barCode",OracleDbType.Varchar2,
  3018. barcode,ParameterDirection.Input),
  3019. };
  3020. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3021. if (rutenRows == Constant.INT_IS_ZERO)
  3022. {
  3023. // 保存失败
  3024. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3025. return errMsg;
  3026. }
  3027. #endregion
  3028. #region 撤销窑车上最后一个产品
  3029. // 撤销窑车上最后一个产品后,删除窑车装车记录 add by chenxy 2017-06-06 begin
  3030. sqlString = "select count(*) from TP_PM_KilnCarGoods where KILNCARID = :KILNCARID";
  3031. paras = new OracleParameter[]{
  3032. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3033. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3034. };
  3035. string goodsCount = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  3036. if (string.IsNullOrWhiteSpace(goodsCount) || "0" == goodsCount)
  3037. {
  3038. // 撤销窑车上最后一个产品后,删除窑车装车记录(窑车生产数据)
  3039. sqlString = "UPDATE tp_pm_kilncardata kcd SET kcd.valueflag = '0' WHERE kcd.modeltype = 1 and kcd.kilncarbatchno = '" + kilnCar.Rows[0]["kilncarbatchno"] + "'";
  3040. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3041. // 最后一条窑车生产数据
  3042. sqlString = "select max(kilncardataid) kilncardataid from tp_pm_kilncardata where modeltype = 4 and valueflag = '1' and KILNCARID = :KILNCARID";
  3043. paras = new OracleParameter[]{
  3044. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3045. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3046. };
  3047. string kilncardataid = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  3048. // 回退窑车状态
  3049. if (string.IsNullOrWhiteSpace(kilncardataid))
  3050. {
  3051. // 第一次装车被撤销
  3052. sqlString = "delete from TP_PM_Kilncarstatus where KILNCARID = :KILNCARID";
  3053. paras = new OracleParameter[]{
  3054. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3055. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3056. };
  3057. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3058. }
  3059. else
  3060. {
  3061. sqlString = "UPDATE TP_PM_Kilncarstatus kcs\n" +
  3062. " SET (kcs.productionlineid,\n" +
  3063. " kcs.procedureid,\n" +
  3064. " kcs.procedurecode,\n" +
  3065. " kcs.procedurename,\n" +
  3066. " kcs.proceduremodel,\n" +
  3067. " kcs.modeltype,\n" +
  3068. " kcs.piecetype,\n" +
  3069. " kcs.kilncarstatus,\n" +
  3070. " kcs.loadingtime,\n" +
  3071. " kcs.intokilntime,\n" +
  3072. " kcs.outkilntime,\n" +
  3073. " kcs.unloadingtime,\n" +
  3074. " kcs.kilncarbatchno) =\n" +
  3075. " (SELECT kcd.productionlineid\n" +
  3076. " ,kcd.procedureid\n" +
  3077. " ,kcd.procedurecode\n" +
  3078. " ,kcd.procedurename\n" +
  3079. " ,kcd.proceduremodel\n" +
  3080. " ,kcd.modeltype\n" +
  3081. " ,kcd.piecetype\n" +
  3082. " ,kcd.kilncarstatus\n" +
  3083. " ,kcd.loadingtime\n" +
  3084. " ,kcd.intokilntime\n" +
  3085. " ,kcd.outkilntime\n" +
  3086. " ,kcd.unloadingtime\n" +
  3087. " ,kcd.kilncarbatchno\n" +
  3088. " FROM TP_PM_KILNCARDATA kcd\n" +
  3089. " WHERE kcd.kilncardataid = :kilncardataid)\n" +
  3090. " WHERE kcs.kilncarid = :kilncarid";
  3091. paras = new OracleParameter[]{
  3092. new OracleParameter(":kilncarid",OracleDbType.Int32,
  3093. kilnCar.Rows[0]["kilncarid"],ParameterDirection.Input),
  3094. new OracleParameter(":kilncardataid",OracleDbType.Int32,
  3095. kilncardataid,ParameterDirection.Input),
  3096. };
  3097. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3098. }
  3099. }
  3100. // 撤销窑车上最后一个产品后,删除窑车装车记录 add by chenxy 2017-06-06 end
  3101. #endregion
  3102. }
  3103. // 没有错误 提交事务
  3104. if (string.IsNullOrEmpty(errMsg))
  3105. {
  3106. oracleTrConn.Commit();
  3107. }
  3108. }
  3109. catch (Exception ex)
  3110. {
  3111. oracleTrConn.Rollback();
  3112. throw ex;
  3113. }
  3114. finally
  3115. {
  3116. // 释放资源
  3117. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3118. {
  3119. oracleTrConn.Disconnect();
  3120. }
  3121. }
  3122. return errMsg;
  3123. }
  3124. /// <summary>
  3125. /// 保存半检测信息
  3126. /// </summary>
  3127. /// <param name="semiTestEntitys">半检实体类</param>
  3128. /// <param name="sUserInfo">用户基本信息</param>
  3129. /// <returns>string</returns>
  3130. public static string AddSemiTest(SemiTestEntity[] semiTestEntitys, SUserInfo sUserInfo)
  3131. {
  3132. string errMsg = "";
  3133. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3134. try
  3135. {
  3136. oracleTrConn.Connect();
  3137. foreach (SemiTestEntity semiTest in semiTestEntitys)
  3138. {
  3139. #region 添加半检数据
  3140. // 查询新插入的半检数据ID
  3141. string sql = "select SEQ_PM_SemiTest_SemiTestID.nextval from dual";
  3142. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3143. semiTest.SemiTestID = Convert.ToInt32(idStr);
  3144. errMsg = AddSemiTestInfo(oracleTrConn, semiTest, sUserInfo);
  3145. if (!string.IsNullOrEmpty(errMsg))
  3146. {
  3147. return errMsg;
  3148. }
  3149. //// 查询新插入的半检数据ID
  3150. //string sql = "select SEQ_PM_SemiTest_SemiTestID.Currval from dual";
  3151. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3152. errMsg = AddSemiTestStaff(oracleTrConn, Convert.ToInt32(idStr), semiTest.TestUserID);
  3153. if (!string.IsNullOrEmpty(errMsg))
  3154. {
  3155. return errMsg;
  3156. }
  3157. // 存在半检明细
  3158. if (semiTest.SemiTestDetails != null)
  3159. {
  3160. foreach (SemiTestDetailEntity semiTestDetail in semiTest.SemiTestDetails)
  3161. {
  3162. errMsg = AddSemiTestDetails(oracleTrConn, semiTestDetail, sUserInfo, Convert.ToInt32(idStr), semiTest.TestDate);
  3163. if (!string.IsNullOrEmpty(errMsg))
  3164. {
  3165. return errMsg;
  3166. }
  3167. }
  3168. }
  3169. #endregion
  3170. }
  3171. // 没有错误 提交事务
  3172. if (string.IsNullOrEmpty(errMsg))
  3173. {
  3174. oracleTrConn.Commit();
  3175. }
  3176. }
  3177. catch (Exception ex)
  3178. {
  3179. oracleTrConn.Rollback();
  3180. throw ex;
  3181. }
  3182. finally
  3183. {
  3184. // 释放资源
  3185. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3186. {
  3187. oracleTrConn.Disconnect();
  3188. }
  3189. }
  3190. return errMsg;
  3191. }
  3192. /// <summary>
  3193. /// 添加半检数据
  3194. /// </summary>
  3195. /// <param name="oracleTrConn">数据连接事务</param>
  3196. /// <param name="semiTestEntity">半检实体类</param>
  3197. /// <param name="sUserInfo">用户基本信息</param>
  3198. /// <returns>string</returns>
  3199. private static string AddSemiTestInfo(IDBTransaction oracleTrConn, SemiTestEntity semiTestEntity, SUserInfo sUserInfo)
  3200. {
  3201. string errMsg = "";
  3202. #region SQL
  3203. string sql = "insert into TP_PM_SemiTest"
  3204. + " (SemiTestID,"
  3205. + " TestUserID,"
  3206. + " TestDate,"
  3207. + " Remarks,"
  3208. + " AuditStatus,"
  3209. + " Auditor,"
  3210. + " AuditlDate,"
  3211. + " AccountID,"
  3212. + " ValueFlag,"
  3213. + " CreateUserID,"
  3214. + " UpdateUserID,"
  3215. + " SemiTestType"
  3216. + ")"
  3217. + " values"
  3218. + " (:SemiTestID,"
  3219. + " :TestUserID,"
  3220. + " :TestDate,"
  3221. + " :Remarks,"
  3222. + " :AuditStatus,"
  3223. + " :Auditor,"
  3224. + " :AuditlDate,"
  3225. + " :AccountID,"
  3226. + " :ValueFlag,"
  3227. + " :CreateUserID,"
  3228. + " :UpdateUserID,"
  3229. + " :SemiTestType"
  3230. + ")";
  3231. #endregion
  3232. #region OracleParameter
  3233. OracleParameter[] oracleParameters = new OracleParameter[] {
  3234. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestEntity.SemiTestID,ParameterDirection.Input),
  3235. new OracleParameter(":TestUserID",OracleDbType.Int32, semiTestEntity.TestUserID,ParameterDirection.Input),
  3236. new OracleParameter(":TestDate",OracleDbType.Date, semiTestEntity.TestDate,ParameterDirection.Input),
  3237. new OracleParameter(":Remarks",OracleDbType.Varchar2, semiTestEntity.Remarks,ParameterDirection.Input),
  3238. new OracleParameter(":AuditStatus",OracleDbType.Int32, semiTestEntity.AuditStatus,ParameterDirection.Input),
  3239. new OracleParameter(":Auditor",OracleDbType.Int32, semiTestEntity.Auditor,ParameterDirection.Input),
  3240. new OracleParameter(":AuditlDate",OracleDbType.Date, semiTestEntity.AuditlDate,ParameterDirection.Input),
  3241. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3242. new OracleParameter(":ValueFlag",OracleDbType.Int32, semiTestEntity.ValueFlag,ParameterDirection.Input),
  3243. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3244. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3245. new OracleParameter(":SemiTestType",OracleDbType.Int32, semiTestEntity.SemiTestType,ParameterDirection.Input),
  3246. };
  3247. #endregion
  3248. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3249. // 保存失败
  3250. if (result != Constant.INT_IS_ONE)
  3251. {
  3252. return string.Format(Messages.MSG_CMN_W001, "半检", "保存");
  3253. }
  3254. return errMsg;
  3255. }
  3256. /// <summary>
  3257. /// 保存半检员工
  3258. /// </summary>
  3259. /// <param name="oracleTrConn">数据连接事务</param>
  3260. /// <param name="SemiTestID">半检数据ID</param>
  3261. /// <param name="UserID">工号ID</param>
  3262. /// <returns>string</returns>
  3263. private static string AddSemiTestStaff(IDBTransaction oracleTrConn, int SemiTestID, int UserID)
  3264. {
  3265. string errMsg = "";
  3266. #region SQL
  3267. string sql = @"insert into TP_PM_SemiTestStaff(SemiTestID,StaffID)
  3268. select :SemiTestID ,StaffID from TP_MST_UserStaff where UserID=:UserID";
  3269. #endregion
  3270. #region OracleParameter
  3271. OracleParameter[] oracleParameters = new OracleParameter[] {
  3272. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3273. new OracleParameter(":UserID",OracleDbType.Int32, UserID,ParameterDirection.Input),
  3274. };
  3275. #endregion
  3276. int resultCount = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3277. // 失败
  3278. if (resultCount == Constant.INT_IS_ZERO)
  3279. {
  3280. return string.Format(Messages.MSG_CMN_W001, "半检员工", "保存");
  3281. }
  3282. return errMsg;
  3283. }
  3284. /// <summary>
  3285. /// 添加半检数据明细
  3286. /// </summary>
  3287. /// <param name="oracleTrConn">数据连接事务</param>
  3288. /// <param name="semiTestDetail">半检明细实体类</param>
  3289. /// <param name="sUserInfo">用户基本信息</param>
  3290. /// <param name="SemiTestID">半检ID</param>
  3291. /// <param name="SemiTestDate">检验日期</param>
  3292. /// <returns>string</returns>
  3293. private static string AddSemiTestDetails(IDBTransaction oracleTrConn, SemiTestDetailEntity semiTestDetail, SUserInfo sUserInfo, int SemiTestID, DateTime SemiTestDate)
  3294. {
  3295. string errMsg = "";
  3296. #region SQL
  3297. // 查询新插入的半检数据ID
  3298. string sqlView = "select SEQ_PM_SemiTestDetail_ID.nextval from dual";
  3299. string idStr = oracleTrConn.GetSqlResultToStr(sqlView);
  3300. string sql = "insert into TP_PM_SemiTestDetail"
  3301. + " (SemiTestDetailID,"
  3302. + " SemiTestID,"
  3303. + " SemiTestDate,"
  3304. + " GroutingUserID,"
  3305. + " GoodsID,"
  3306. + " GoodsCode,"
  3307. + " GoodsName,"
  3308. + " TestNum,"
  3309. + " ScrapNum,"
  3310. + " ScrapReason,"
  3311. + " Feedback,"
  3312. + " AccountID,"
  3313. + " ValueFlag,"
  3314. + " CreateUserID,"
  3315. + " UpdateUserID"
  3316. + ")"
  3317. + " values"
  3318. + " (:SemiTestDetailID,"
  3319. + " :SemiTestID,"
  3320. + " :SemiTestDate,"
  3321. + " :GroutingUserID,"
  3322. + " :GoodsID,"
  3323. + " :GoodsCode,"
  3324. + " :GoodsName,"
  3325. + " :TestNum,"
  3326. + " :ScrapNum,"
  3327. + " :ScrapReason,"
  3328. + " :Feedback,"
  3329. + " :AccountID,"
  3330. + " 1,"
  3331. + " :CreateUserID,"
  3332. + " :UpdateUserID"
  3333. + ")";
  3334. #endregion
  3335. #region OracleParameter
  3336. OracleParameter[] oracleParameters = new OracleParameter[] {
  3337. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, Convert.ToInt32(idStr),ParameterDirection.Input),
  3338. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3339. new OracleParameter(":SemiTestDate",OracleDbType.Date, SemiTestDate,ParameterDirection.Input),
  3340. new OracleParameter(":GroutingUserID",OracleDbType.Int32, semiTestDetail.GroutingUserID,ParameterDirection.Input),
  3341. new OracleParameter(":GoodsID",OracleDbType.Int32, semiTestDetail.GoodsID,ParameterDirection.Input),
  3342. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, semiTestDetail.GoodsCode,ParameterDirection.Input),
  3343. new OracleParameter(":GoodsName",OracleDbType.Varchar2, semiTestDetail.GoodsName,ParameterDirection.Input),
  3344. new OracleParameter(":TestNum",OracleDbType.Decimal, semiTestDetail.TestNum,ParameterDirection.Input),
  3345. new OracleParameter(":ScrapNum",OracleDbType.Decimal, semiTestDetail.ScrapNum,ParameterDirection.Input),
  3346. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3347. new OracleParameter(":ScrapReason",OracleDbType.Varchar2, semiTestDetail.ScrapReason,ParameterDirection.Input),
  3348. new OracleParameter(":Feedback",OracleDbType.Varchar2, semiTestDetail.Feedback,ParameterDirection.Input),
  3349. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3350. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3351. };
  3352. #endregion
  3353. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3354. // 保存失败
  3355. if (result != Constant.INT_IS_ONE)
  3356. {
  3357. return string.Format(Messages.MSG_CMN_W001, "半检明细", "保存");
  3358. }
  3359. errMsg = AddSemiTestGStaff(oracleTrConn, Convert.ToInt32(idStr), Convert.ToInt32(semiTestDetail.GroutingUserID));
  3360. if (!string.IsNullOrEmpty(errMsg))
  3361. {
  3362. return errMsg;
  3363. }
  3364. // 存在半检明细
  3365. if (semiTestDetail.SemiTestDefects != null)
  3366. {
  3367. foreach (SemiTestDefectEntity semiTestDefect in semiTestDetail.SemiTestDefects)
  3368. {
  3369. errMsg = AddSemiTestDefect(oracleTrConn, semiTestDefect, sUserInfo, SemiTestID, Convert.ToInt32(idStr), SemiTestDate);
  3370. if (!string.IsNullOrEmpty(errMsg))
  3371. {
  3372. return errMsg;
  3373. }
  3374. }
  3375. }
  3376. return null;
  3377. }
  3378. /// <summary>
  3379. /// 保存半检成型员工
  3380. /// </summary>
  3381. /// <param name="oracleTrConn">数据连接事务</param>
  3382. /// <param name="SemiTestID">半检ID</param>
  3383. /// <param name="UserID">成型工号</param>
  3384. /// <returns>string</returns>
  3385. private static string AddSemiTestGStaff(IDBTransaction oracleTrConn, int SemiTestDetailID, int UserID)
  3386. {
  3387. string errMsg = "";
  3388. #region SQL
  3389. string sql = @"insert into TP_PM_SemiTestGStaff(SemiTestDetailID,StaffID)
  3390. select :SemiTestDetailID ,StaffID from TP_MST_UserStaff where UserID=:UserID";
  3391. #endregion
  3392. #region OracleParameter
  3393. OracleParameter[] oracleParameters = new OracleParameter[] {
  3394. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, SemiTestDetailID,ParameterDirection.Input),
  3395. new OracleParameter(":UserID",OracleDbType.Int32, UserID,ParameterDirection.Input),
  3396. };
  3397. #endregion
  3398. int resultCount = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3399. // 失败
  3400. if (resultCount == Constant.INT_IS_ZERO)
  3401. {
  3402. return string.Format(Messages.MSG_CMN_W001, "半检成型员工", "保存");
  3403. }
  3404. return errMsg;
  3405. }
  3406. /// <summary>
  3407. /// 添加半检缺陷
  3408. /// </summary>
  3409. /// <param name="oracleTrConn">数据连接事务</param>
  3410. /// <param name="semiTestDefect">半检缺陷</param>
  3411. /// <param name="sUserInfo">用户基本信息</param>
  3412. /// <param name="SemiTestID"><半检ID/param>
  3413. /// <param name="SemiTestDetailID">半检明细ID</param>
  3414. /// <param name="SemiTestDate">检验日期</param>
  3415. /// <returns>string</returns>
  3416. private static string AddSemiTestDefect(IDBTransaction oracleTrConn, SemiTestDefectEntity semiTestDefect, SUserInfo sUserInfo, int SemiTestID, int SemiTestDetailID, DateTime SemiTestDate)
  3417. {
  3418. string errMsg = "";
  3419. #region SQL
  3420. string sql = "insert into TP_PM_SemiTestDefect"
  3421. + " ("
  3422. + " SemiTestDetailID,"
  3423. + " SemiTestID,"
  3424. + " SemiTestDate,"
  3425. + " DefectID,"
  3426. + " DefectPositionID,"
  3427. + " DefectNum,"
  3428. + " AccountID,"
  3429. + " ValueFlag,"
  3430. + " CreateUserID,"
  3431. + " UpdateUserID"
  3432. + ")"
  3433. + " values"
  3434. + " ("
  3435. + " :SemiTestDetailID,"
  3436. + " :SemiTestID,"
  3437. + " :SemiTestDate,"
  3438. + " :DefectID,"
  3439. + " :DefectPositionID,"
  3440. + " :DefectNum,"
  3441. + " :AccountID,"
  3442. + " 1,"
  3443. + " :CreateUserID,"
  3444. + " :UpdateUserID"
  3445. + ")";
  3446. #endregion
  3447. #region OracleParameter
  3448. OracleParameter[] oracleParameters = new OracleParameter[] {
  3449. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, SemiTestDetailID,ParameterDirection.Input),
  3450. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3451. new OracleParameter(":SemiTestDate",OracleDbType.Date, SemiTestDate,ParameterDirection.Input),
  3452. new OracleParameter(":DefectID",OracleDbType.Int32, semiTestDefect.DefectID,ParameterDirection.Input),
  3453. new OracleParameter(":DefectPositionID",OracleDbType.Int32, semiTestDefect.DefectPositionID,ParameterDirection.Input),
  3454. new OracleParameter(":DefectNum",OracleDbType.Int32, semiTestDefect.DefectNum,ParameterDirection.Input),
  3455. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3456. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3457. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3458. };
  3459. #endregion
  3460. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3461. // 保存失败
  3462. if (result != Constant.INT_IS_ONE)
  3463. {
  3464. return string.Format(Messages.MSG_CMN_W001, "半检缺陷", "保存");
  3465. }
  3466. return errMsg;
  3467. }
  3468. /// <summary>
  3469. /// 编辑后禁用半检数据
  3470. /// </summary>
  3471. /// <param name="semiTestID">半检数据ID</param>
  3472. /// <returns>int</returns>
  3473. public static int DeleteSemiTestDataByID(int semiTestID)
  3474. {
  3475. int deleteRow = 0;
  3476. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3477. try
  3478. {
  3479. oracleTrConn.Connect();
  3480. string sqlString1 = @" update TP_PM_SemiTestDefect set ValueFlag=0 where SemiTestID=:SemiTestID";
  3481. string sqlString2 = @" update TP_PM_SemiTestDetail set ValueFlag=0 where SemiTestID=:SemiTestID";
  3482. string sqlString3 = @" update TP_PM_SemiTest set ValueFlag=0 where SemiTestID=:SemiTestID";
  3483. OracleParameter[] paras = new OracleParameter[]{
  3484. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  3485. };
  3486. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString1, paras);
  3487. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  3488. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  3489. // 没有错误 提交事务
  3490. if (deleteRow > 0)
  3491. {
  3492. oracleTrConn.Commit();
  3493. }
  3494. else
  3495. {
  3496. oracleTrConn.Rollback();
  3497. }
  3498. }
  3499. catch (Exception ex)
  3500. {
  3501. oracleTrConn.Rollback();
  3502. throw ex;
  3503. }
  3504. finally
  3505. {
  3506. // 释放资源
  3507. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3508. {
  3509. oracleTrConn.Disconnect();
  3510. }
  3511. }
  3512. return deleteRow;
  3513. }
  3514. /// <summary>
  3515. /// 验证时间戳
  3516. /// </summary>
  3517. /// <param name="semiTestID">半检ID</param>
  3518. /// <param name="opTimeStamp">时间戳</param>
  3519. /// <returns>int</returns>
  3520. public static int ValidateOPTimeStamp(int semiTestID, DateTime opTimeStamp)
  3521. {
  3522. int Row = 0;
  3523. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3524. try
  3525. {
  3526. oracleTrConn.Connect();
  3527. string sql = "SELECT OPTimeStamp FROM TP_PM_SemiTest"
  3528. + " WHERE SemiTestID =:SemiTestID and OPTimeStamp = :OPTimeStamp";
  3529. OracleParameter[] paras = new OracleParameter[]{
  3530. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  3531. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, opTimeStamp, ParameterDirection.Input),
  3532. };
  3533. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  3534. if (returnDataset != null
  3535. && returnDataset.Tables[0].Rows.Count == 0)
  3536. {
  3537. oracleTrConn.Commit();
  3538. oracleTrConn.Disconnect();
  3539. return -1;
  3540. }
  3541. oracleTrConn.Commit();
  3542. }
  3543. catch (Exception ex)
  3544. {
  3545. oracleTrConn.Rollback();
  3546. throw ex;
  3547. }
  3548. finally
  3549. {
  3550. // 释放资源
  3551. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3552. {
  3553. oracleTrConn.Disconnect();
  3554. }
  3555. }
  3556. return Row;
  3557. }
  3558. /// <summary>
  3559. /// 更新审核状态
  3560. /// </summary>
  3561. /// <param name="semiTestID">半检ID</param>
  3562. /// <param name="auditStatus">审核状态</param>
  3563. /// <param name="sUserInfo">用户基本信息</param>
  3564. /// <returns>int</returns>
  3565. public static int UpdateSemiTestByID(int semiTestID, int auditStatus, SUserInfo sUserInfo)
  3566. {
  3567. int UpdateRow = 0;
  3568. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3569. try
  3570. {
  3571. oracleTrConn.Connect();
  3572. string sql = "update TP_PM_SemiTest set AuditStatus=:AuditStatus,Auditor=:Auditor,AuditlDate=sysdate "
  3573. + " WHERE SemiTestID =:SemiTestID";
  3574. OracleParameter[] paras = new OracleParameter[]{
  3575. new OracleParameter(":AuditStatus",OracleDbType.Int32, auditStatus,ParameterDirection.Input),
  3576. new OracleParameter(":semiTestID", OracleDbType.Int32, semiTestID, ParameterDirection.Input),
  3577. new OracleParameter(":Auditor", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3578. };
  3579. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  3580. if (UpdateRow > 0)
  3581. {
  3582. oracleTrConn.Commit();
  3583. }
  3584. else
  3585. {
  3586. oracleTrConn.Rollback();
  3587. }
  3588. }
  3589. catch (Exception ex)
  3590. {
  3591. oracleTrConn.Rollback();
  3592. throw ex;
  3593. }
  3594. finally
  3595. {
  3596. // 释放资源
  3597. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3598. {
  3599. oracleTrConn.Disconnect();
  3600. }
  3601. }
  3602. return UpdateRow;
  3603. }
  3604. #region 撤销产品报损
  3605. /// <summary>
  3606. /// 撤销产品报损
  3607. /// </summary>
  3608. /// <param name="barcode">产品条码</param>
  3609. /// <param name="sUserInfo"></param>
  3610. /// <returns></returns>
  3611. public static ServiceResultEntity AddCancelScrapProduction(string barcode, SUserInfo sUserInfo)
  3612. {
  3613. ServiceResultEntity entity = new ServiceResultEntity();
  3614. int returnRows = 0;
  3615. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3616. try
  3617. {
  3618. oracleTrConn.Connect();
  3619. DateTime? auditDate = null;
  3620. int ScrapProductID = 0;
  3621. //string sql = "select ScrapProductID,AuditDate from TP_PM_ScrapProduct where barcode=:barcode and valueflag=1 and AuditStatus=1 and goodsleveltypeid=8";
  3622. string sql = @"select ScrapProductID,AuditDate,recyclingflag from TP_PM_ScrapProduct
  3623. where barcode=:barcode and valueflag=1 and AuditStatus=1
  3624. and goodsleveltypeid=8 and
  3625. createtime=(select max(createtime) from TP_PM_ScrapProduct where barcode=:barcode and valueflag=1 and AuditStatus=1 and goodsleveltypeid=8)";
  3626. OracleParameter[] paras = new OracleParameter[]{
  3627. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3628. };
  3629. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  3630. if (ds != null && ds.Tables[0].Rows.Count == 0)
  3631. {
  3632. //此产品没有损坯,不能撤销
  3633. returnRows = -1;
  3634. oracleTrConn.Rollback();
  3635. oracleTrConn.Disconnect();
  3636. entity.Result = returnRows;
  3637. return entity;
  3638. }
  3639. else
  3640. {
  3641. if (Convert.ToInt32(ds.Tables[0].Rows[0]["recyclingflag"]) > 0)
  3642. {
  3643. //已经回收不允许撤销
  3644. returnRows = -200;
  3645. oracleTrConn.Rollback();
  3646. oracleTrConn.Disconnect();
  3647. entity.Result = returnRows;
  3648. entity.Message = "此产品已经回收,不能撤销";
  3649. return entity;
  3650. }
  3651. ScrapProductID = Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapProductID"]);
  3652. auditDate = Convert.ToDateTime(ds.Tables[0].Rows[0]["auditDate"]);
  3653. }
  3654. #region 是否启用损坯撤销限制天数
  3655. if (auditDate != null)
  3656. {
  3657. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  3658. paras = new OracleParameter[] {
  3659. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  3660. Constant.SettingType.S_PM_006.ToString(),ParameterDirection.Input),
  3661. new OracleParameter(":accountid",OracleDbType.Int32,
  3662. sUserInfo.AccountID,ParameterDirection.Input)
  3663. };
  3664. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  3665. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3666. {
  3667. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  3668. {
  3669. // 开启了限制
  3670. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(auditDate),
  3671. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_006.ToString(), sUserInfo);
  3672. if (Convert.ToInt32(resultEntity.Result) < 0)
  3673. {
  3674. //超过损坯撤销限制天数
  3675. returnRows = -200;
  3676. oracleTrConn.Rollback();
  3677. oracleTrConn.Disconnect();
  3678. entity.Result = returnRows;
  3679. entity.Message = resultEntity.Message;
  3680. return entity;
  3681. }
  3682. }
  3683. }
  3684. }
  3685. #endregion
  3686. //第二步,回收站中数据回到在产中。
  3687. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3688. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3689. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3690. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3691. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3692. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3693. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3694. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  3695. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  3696. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3697. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3698. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  3699. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3700. )
  3701. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3702. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3703. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3704. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3705. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3706. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3707. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3708. CREATEUSERID, UPDATETIME, :UpdateUserID,
  3709. ISREFIRE, null, null, DEFECTFLAG,
  3710. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3711. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3712. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  3713. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3714. from TP_PM_InProductionTrash where barcode=:barcode ";
  3715. OracleParameter[] InProductparas = new OracleParameter[]{
  3716. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3717. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3718. };
  3719. returnRows += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  3720. //第三步,删除回收站中的条码
  3721. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  3722. OracleParameter[] TrashProductparas = new OracleParameter[]{
  3723. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  3724. };
  3725. returnRows += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  3726. //第四步,停用对应报损产品
  3727. string sqlString = "update TP_PM_ScrapProduct set valueflag=0 where ScrapProductid=:ScrapProductid ";
  3728. OracleParameter[] parasScrapProduct = new OracleParameter[]{
  3729. new OracleParameter(":ScrapProductid",OracleDbType.Int32,ScrapProductID,ParameterDirection.Input)
  3730. };
  3731. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, parasScrapProduct);
  3732. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  3733. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  3734. OracleParameter[] Paras = new OracleParameter[] {
  3735. new OracleParameter(":barcode",OracleDbType.Varchar2,
  3736. barcode,ParameterDirection.Input)
  3737. };
  3738. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  3739. if (ds.Tables[0].Rows.Count == 0)
  3740. {
  3741. // 2 生产数据恢复到在产生产数据
  3742. sql = @"insert into tp_pm_productiondatain
  3743. (
  3744. ProductionDataID,
  3745. BarCode,
  3746. CentralizedBatchNo,
  3747. ProductionLineID,
  3748. ProductionLineCode,
  3749. ProductionLineName,
  3750. ProcedureID,
  3751. ProcedureCode,
  3752. ProcedureName,
  3753. ProcedureModel,
  3754. ModelType,
  3755. PieceType,
  3756. IsReworked,
  3757. NodeType,
  3758. IsPublicBody,
  3759. IsReFire,
  3760. GoodsLevelID,
  3761. GoodsLevelTypeID,
  3762. SpecialRepairFlag,
  3763. OrganizationID,
  3764. GoodsID,
  3765. GoodsCode,
  3766. GoodsName,
  3767. UserID,
  3768. UserCode,
  3769. UserName,
  3770. ClassesSettingID,
  3771. KilnID,
  3772. KilnCode,
  3773. KilnName,
  3774. KilnCarID,
  3775. KilnCarCode,
  3776. KilnCarName,
  3777. KilnCarBatchNo,
  3778. KilnCarPosition,
  3779. ReworkProcedureID,
  3780. ReworkProcedureCode,
  3781. ReworkProcedureName,
  3782. GroutingDailyID,
  3783. GroutingDailyDetailID,
  3784. GroutingLineID,
  3785. GroutingLineCode,
  3786. GroutingLineName,
  3787. GMouldTypeID,
  3788. CanManyTimes,
  3789. GroutingLineDetailID,
  3790. GroutingDate,
  3791. GroutingMouldCode,
  3792. MouldCode,
  3793. GroutingUserID,
  3794. GroutingUserCode,
  3795. GroutingNum,
  3796. Remarks,
  3797. AccountDate,
  3798. SettlementFlag,
  3799. AccountID,
  3800. ValueFlag,
  3801. CreateTime,
  3802. CreateUserID,
  3803. UpdateTime,
  3804. UpdateUserID,
  3805. OPTimeStamp,
  3806. TriggerFlag,
  3807. logoid,
  3808. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  3809. )
  3810. select
  3811. ProductionDataID,
  3812. BarCode,
  3813. CentralizedBatchNo,
  3814. ProductionLineID,
  3815. ProductionLineCode,
  3816. ProductionLineName,
  3817. ProcedureID,
  3818. ProcedureCode,
  3819. ProcedureName,
  3820. ProcedureModel,
  3821. ModelType,
  3822. PieceType,
  3823. IsReworked,
  3824. NodeType,
  3825. IsPublicBody,
  3826. IsReFire,
  3827. GoodsLevelID,
  3828. GoodsLevelTypeID,
  3829. SpecialRepairFlag,
  3830. OrganizationID,
  3831. GoodsID,
  3832. GoodsCode,
  3833. GoodsName,
  3834. UserID,
  3835. UserCode,
  3836. UserName,
  3837. ClassesSettingID,
  3838. KilnID,
  3839. KilnCode,
  3840. KilnName,
  3841. KilnCarID,
  3842. KilnCarCode,
  3843. KilnCarName,
  3844. KilnCarBatchNo,
  3845. KilnCarPosition,
  3846. ReworkProcedureID,
  3847. ReworkProcedureCode,
  3848. ReworkProcedureName,
  3849. GroutingDailyID,
  3850. GroutingDailyDetailID,
  3851. GroutingLineID,
  3852. GroutingLineCode,
  3853. GroutingLineName,
  3854. GMouldTypeID,
  3855. CanManyTimes,
  3856. GroutingLineDetailID,
  3857. GroutingDate,
  3858. GroutingMouldCode,
  3859. MouldCode,
  3860. GroutingUserID,
  3861. GroutingUserCode,
  3862. GroutingNum,
  3863. Remarks,
  3864. AccountDate,
  3865. SettlementFlag,
  3866. AccountID,
  3867. ValueFlag,
  3868. CreateTime,
  3869. CreateUserID,
  3870. UpdateTime,
  3871. UpdateUserID,
  3872. OPTimeStamp,
  3873. 1,
  3874. logoid,
  3875. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  3876. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  3877. ";
  3878. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  3879. }
  3880. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  3881. if (returnRows <= 0)
  3882. {
  3883. oracleTrConn.Rollback();
  3884. oracleTrConn.Disconnect();
  3885. }
  3886. else
  3887. {
  3888. oracleTrConn.Commit();
  3889. oracleTrConn.Disconnect();
  3890. }
  3891. }
  3892. catch (Exception ex)
  3893. {
  3894. oracleTrConn.Rollback();
  3895. throw ex;
  3896. }
  3897. finally
  3898. {
  3899. // 释放资源
  3900. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3901. {
  3902. oracleTrConn.Disconnect();
  3903. }
  3904. }
  3905. entity.Result = returnRows;
  3906. return entity;
  3907. }
  3908. #endregion
  3909. }
  3910. }