PMModuleLogicDALPartial.cs 177 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153
  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. object result = DBNull.Value;
  1239. if (SProductEntity.AuditStatus != 0)
  1240. {
  1241. //string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  1242. string strSql1 = "select sysdate from dual";
  1243. // Oracle.ManagedDataAccess.Client.OracleParameter[] paras1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  1244. //{
  1245. // new Oracle.ManagedDataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  1246. //};
  1247. object strResult = oracleTrConn.GetSqlResultToObj(strSql1);
  1248. if (strResult == null || strResult == DBNull.Value)
  1249. {
  1250. // 服务器时间错误
  1251. throw new Exception("SystemDateTimeError");
  1252. }
  1253. result = Convert.ToDateTime(strResult);
  1254. }
  1255. // wangx 2016/01/13
  1256. int? ProductionDataID = null;
  1257. int? completeProcdureID = null;
  1258. string completeProcdureName = string.Empty;
  1259. string completeProcdureCode = string.Empty;
  1260. string sqlProductionDataID = @"select tp_pm_inproduction.productiondataid,
  1261. tp_pc_procedure.procedureid,
  1262. tp_pc_procedure.procedurename,
  1263. tp_pc_procedure.procedurecode, tp_pm_inproduction.InScrapFlag
  1264. from tp_pm_inproduction
  1265. left join tp_pc_procedure
  1266. on tp_pm_inproduction.procedureid=tp_pc_procedure.procedureid
  1267. where tp_pm_inproduction.barcode = :barcode
  1268. for update";
  1269. OracleParameter[] ParasProductionDataID = new OracleParameter[] {
  1270. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1271. SProductEntity.BarCode,ParameterDirection.Input),
  1272. };
  1273. DataSet dsProductionDataID = oracleTrConn.GetSqlResultToDs(sqlProductionDataID, ParasProductionDataID);
  1274. string scrsql = @"select TP_PM_SCRAPPRODUCT.productiondataid,
  1275. tp_pc_procedure.procedureid,
  1276. tp_pc_procedure.procedurename,
  1277. tp_pc_procedure.procedurecode
  1278. from TP_PM_SCRAPPRODUCT
  1279. left join tp_pc_procedure
  1280. on TP_PM_SCRAPPRODUCT.procedureid=tp_pc_procedure.procedureid
  1281. where TP_PM_SCRAPPRODUCT.barcode =:barcode";
  1282. DataSet dsProductionDataIDsecond = oracleTrConn.GetSqlResultToDs(scrsql, ParasProductionDataID);
  1283. if (dsProductionDataID != null && dsProductionDataID.Tables[0].Rows.Count > 0)
  1284. {
  1285. ProductionDataID = Convert.ToInt32(dsProductionDataID.Tables[0].Rows[0]["productiondataid"]);
  1286. completeProcdureID = Convert.ToInt32(dsProductionDataID.Tables[0].Rows[0]["procedureid"]);
  1287. completeProcdureName = dsProductionDataID.Tables[0].Rows[0]["procedurename"].ToString();
  1288. completeProcdureCode = dsProductionDataID.Tables[0].Rows[0]["procedurecode"].ToString();
  1289. //if (InScrapFlag == "1")
  1290. //{
  1291. // return Constant.RETURN_IS_DATACHANGED;
  1292. //}
  1293. }
  1294. else if (dsProductionDataIDsecond != null && dsProductionDataIDsecond.Tables[0].Rows.Count > 0)
  1295. {
  1296. ProductionDataID = Convert.ToInt32(dsProductionDataIDsecond.Tables[0].Rows[0]["productiondataid"]);
  1297. completeProcdureID = Convert.ToInt32(dsProductionDataIDsecond.Tables[0].Rows[0]["procedureid"]);
  1298. completeProcdureName = dsProductionDataIDsecond.Tables[0].Rows[0]["procedurename"].ToString();
  1299. completeProcdureCode = dsProductionDataIDsecond.Tables[0].Rows[0]["procedurecode"].ToString();
  1300. }
  1301. else {
  1302. return Constant.RETURN_IS_DATACHANGED;
  1303. }
  1304. // end
  1305. // 如果完成工序ID发生变化,则返回提示;
  1306. //if (completeProcdureID != SProductEntity.ProcedureID)
  1307. //{
  1308. // return Constant.RETURN_IS_DATACHANGED;
  1309. //}
  1310. //首先添加废弃产品主体信息
  1311. StringBuilder sbSql = new StringBuilder();
  1312. //获取序列ID
  1313. sbSql.Clear();
  1314. sbSql.Append("select SEQ_PM_ScrapProduct_ID.nextval from dual");
  1315. int id = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1316. sbSql.Clear();
  1317. sbSql.Append("Insert into TP_PM_ScrapProduct");
  1318. sbSql.Append("(ScrapProductID,Barcode,ProductionLineID,ProductionLineCode,ProductionLineName,");
  1319. sbSql.Append("GoodsID,GoodsCode,GoodsName,GroutingDailyID,GroutingDailyDetailID,");
  1320. sbSql.Append("GroutingDate,GroutingLineID,GroutingLineCode,GroutingLineName,");
  1321. sbSql.Append("GMouldTypeID,GroutingLineDetailID,GroutingMouldCode,MouldCode,");
  1322. sbSql.Append("GoodsLevelID,GoodsLevelTypeID,ResponType,ScrapDate,Rreason,");
  1323. sbSql.Append("Remarks,AuditStatus,");
  1324. sbSql.Append("SettlementFlag,AccountID,ValueFlag,CreateTime,CreateUserID,");
  1325. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,GroutingUserID,GroutingUserCode,GroutingNum,IsPublicBody," +
  1326. "IsReFire,ScrapFine,Auditor,AuditDate,SpecialRepairflag,Procedureid,ProcedureName,ProcedureCode,logoid,ProductionDataID,DISCOVERERSTAFF)");
  1327. sbSql.Append("values(:ScrapProductID,:Barcode,:ProductionLineID,:ProductionLineCode,:ProductionLineName,");
  1328. sbSql.Append(":GoodsID,:GoodsCode,:GoodsName,:GroutingDailyID,:GroutingDailyDetailID,");
  1329. sbSql.Append(":GroutingDate,:GroutingLineID,:GroutingLineCode,:GroutingLineName,");
  1330. sbSql.Append(":GMouldTypeID,:GroutingLineDetailID,:GroutingMouldCode,:MouldCode,");
  1331. sbSql.Append(":GoodsLevelID,:GoodsLevelTypeID,:ResponType,:ScrapDate,:Rreason,");
  1332. sbSql.Append(":Remarks,:AuditStatus,");
  1333. sbSql.Append("0,:AccountID,1,sysdate,:CreateUserID,");
  1334. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:GroutingUserID,:GroutingUserCode,:GroutingNum,:IsPublicBody,:IsReFire," +
  1335. ":ScrapFine,:Auditor,:AuditlDate,:SpecialRepairflag,:Procedureid,:ProcedureName,:ProcedureCode,:logoid,:ProductionDataID,:DISCOVERERSTAFF)");
  1336. OracleParameter[] Paras = new OracleParameter[] {
  1337. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1338. id,ParameterDirection.Input),
  1339. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1340. SProductEntity.BarCode,ParameterDirection.Input),
  1341. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  1342. SProductEntity.ProductionLineID,ParameterDirection.Input),
  1343. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  1344. SProductEntity.ProductionLineCode,ParameterDirection.Input),
  1345. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  1346. SProductEntity.ProductionLineName,ParameterDirection.Input),
  1347. new OracleParameter(":GoodsID",OracleDbType.Int32,
  1348. SProductEntity.GoodsID,ParameterDirection.Input),
  1349. new OracleParameter(":GoodsCode",OracleDbType.NVarchar2,
  1350. SProductEntity.GoodsCode,ParameterDirection.Input),
  1351. new OracleParameter(":GoodsName",OracleDbType.NVarchar2,
  1352. SProductEntity.GoodsName,ParameterDirection.Input),
  1353. new OracleParameter(":GroutingDailyID",OracleDbType.Int32,
  1354. SProductEntity.GroutingDailyID,ParameterDirection.Input),
  1355. new OracleParameter(":GroutingDailyDetailID",OracleDbType.Int32,
  1356. SProductEntity.GroutingDailyDetailID,ParameterDirection.Input),
  1357. new OracleParameter(":GroutingDate",OracleDbType.Date,
  1358. SProductEntity.GroutingDate,ParameterDirection.Input),
  1359. new OracleParameter(":GroutingLineID",OracleDbType.Int32,
  1360. SProductEntity.GroutingLineID,ParameterDirection.Input),
  1361. new OracleParameter(":GroutingLineCode",OracleDbType.NVarchar2,
  1362. SProductEntity.GroutingLineCode,ParameterDirection.Input),
  1363. new OracleParameter(":GroutingLineName",OracleDbType.NVarchar2,
  1364. SProductEntity.GroutingLineName,ParameterDirection.Input),
  1365. new OracleParameter(":GMouldTypeID",OracleDbType.Int32,
  1366. SProductEntity.GMouldTypeID,ParameterDirection.Input),
  1367. new OracleParameter(":GroutingLineDetailID",OracleDbType.Int32,
  1368. SProductEntity.GroutingLineDetailID,ParameterDirection.Input),
  1369. new OracleParameter(":GroutingMouldCode",OracleDbType.NVarchar2,
  1370. SProductEntity.GroutingMouldCode,ParameterDirection.Input),
  1371. new OracleParameter(":MouldCode",OracleDbType.NVarchar2,
  1372. SProductEntity.MouldCode,ParameterDirection.Input),
  1373. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1374. SProductEntity.GoodsLevelID,ParameterDirection.Input),
  1375. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1376. SProductEntity.GoodsLevelTypeID,ParameterDirection.Input),
  1377. new OracleParameter(":ResponType",OracleDbType.Int32,
  1378. Convert.ToInt32(SProductEntity.ResponType),ParameterDirection.Input),
  1379. new OracleParameter(":ScrapDate",OracleDbType.Date,
  1380. SProductEntity.ScrapDate,ParameterDirection.Input),
  1381. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1382. SProductEntity.Rreason,ParameterDirection.Input),
  1383. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1384. SProductEntity.Remarks,ParameterDirection.Input),
  1385. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  1386. SProductEntity.AuditStatus,ParameterDirection.Input),
  1387. new OracleParameter(":AccountID",OracleDbType.Int32,
  1388. userInfo.AccountID,ParameterDirection.Input),
  1389. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1390. userInfo.UserID,ParameterDirection.Input),
  1391. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1392. userInfo.UserID,ParameterDirection.Input),
  1393. new OracleParameter(":GroutingUserID",OracleDbType.Int32,
  1394. SProductEntity.GroutingUserID,ParameterDirection.Input),
  1395. new OracleParameter(":GroutingUserCode",OracleDbType.NVarchar2,
  1396. SProductEntity.GroutingUserCode,ParameterDirection.Input),
  1397. new OracleParameter(":GroutingNum",OracleDbType.Decimal,
  1398. SProductEntity.GroutingNum,ParameterDirection.Input),
  1399. new OracleParameter(":IsPublicBody",OracleDbType.Int32,
  1400. SProductEntity.IsPublicBody,ParameterDirection.Input),
  1401. new OracleParameter(":IsReFire",OracleDbType.Int32,
  1402. SProductEntity.IsReFire,ParameterDirection.Input),
  1403. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  1404. SProductEntity.ScrapFine,ParameterDirection.Input),
  1405. new OracleParameter(":Auditor",OracleDbType.Int32,
  1406. userInfo.UserID,ParameterDirection.Input),
  1407. new OracleParameter(":AuditlDate",OracleDbType.Date,
  1408. result,ParameterDirection.Input),
  1409. new OracleParameter(":SpecialRepairflag",OracleDbType.Int32,
  1410. SProductEntity.SpecialRepairflag==null?0:SProductEntity.SpecialRepairflag,ParameterDirection.Input),//SpecialRepairflag
  1411. new OracleParameter(":Procedureid",OracleDbType.Int32,
  1412. completeProcdureID,ParameterDirection.Input),//SProductEntity.ProcedureID
  1413. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  1414. completeProcdureName,ParameterDirection.Input),//SProductEntity.ProcedureName
  1415. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  1416. completeProcdureCode,ParameterDirection.Input),//SProductEntity.ProcedureCode
  1417. new OracleParameter(":logoid",OracleDbType.Int32,
  1418. SProductEntity.LogoID,ParameterDirection.Input),
  1419. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  1420. ProductionDataID,ParameterDirection.Input),
  1421. new OracleParameter(":DISCOVERERSTAFF",OracleDbType.NVarchar2,
  1422. SProductEntity.DiscovererStaffCode,ParameterDirection.Input),
  1423. };
  1424. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1425. //如果是直接审批通过 wangxin 2015-03-24
  1426. if (SProductEntity.AuditStatus == 1)
  1427. {
  1428. int DeleteRows = 0;
  1429. string sqlInsert = @"insert into TP_PM_InProductionTrash
  1430. (
  1431. BarCode,
  1432. ProductionLineID,
  1433. ProductionLineCode,
  1434. ProductionLineName,
  1435. ProcedureModel,
  1436. ModelType,
  1437. DefectFlag,
  1438. ReworkProcedureID,
  1439. IsPublicBody,
  1440. IsReFire,
  1441. GoodsLevelID,
  1442. GoodsLevelTypeID,
  1443. GoodsID,
  1444. GoodsCode,
  1445. GoodsName,
  1446. UserID,
  1447. GroutingDailyID,
  1448. GroutingDailyDetailID,
  1449. GroutingDate,
  1450. GroutingLineID,
  1451. GroutingLineCode,
  1452. GroutingLineName,
  1453. GMouldTypeID,
  1454. CanManyTimes,
  1455. GroutingLineDetailID,
  1456. GroutingMouldCode,
  1457. MouldCode,
  1458. GroutingUserID,
  1459. GroutingUserCode,
  1460. GroutingNum,
  1461. Remarks,
  1462. KilnID,
  1463. KilnCode,
  1464. KilnName,
  1465. KilnCarID,
  1466. KilnCarCode,
  1467. KilnCarName,
  1468. KilnCarBatchNo,
  1469. KilnCarPosition,
  1470. AccountID,
  1471. ValueFlag,
  1472. CreateUserID,
  1473. UpdateUserID,
  1474. SpecialRepairflag,
  1475. FlowProcedureID,
  1476. FlowProcedureTime,
  1477. ProcedureID,
  1478. ProcedureTime,
  1479. ProductionDataID,
  1480. logoid, ISREWORKFLAG, SEMICHECKID,DISCOVERERSTAFF
  1481. )
  1482. select
  1483. BarCode,
  1484. ProductionLineID,
  1485. ProductionLineCode,
  1486. ProductionLineName,
  1487. ProcedureModel,
  1488. ModelType,
  1489. DefectFlag,
  1490. ReworkProcedureID,
  1491. IsPublicBody,
  1492. IsReFire,
  1493. :GoodsLevelID,
  1494. :GoodsLevelTypeID,
  1495. GoodsID,
  1496. GoodsCode,
  1497. GoodsName,
  1498. UserID,
  1499. GroutingDailyID,
  1500. GroutingDailyDetailID,
  1501. GroutingDate,
  1502. GroutingLineID,
  1503. GroutingLineCode,
  1504. GroutingLineName,
  1505. GMouldTypeID,
  1506. CanManyTimes,
  1507. GroutingLineDetailID,
  1508. GroutingMouldCode,
  1509. MouldCode,
  1510. GroutingUserID,
  1511. GroutingUserCode,
  1512. GroutingNum,
  1513. Remarks,
  1514. KilnID,
  1515. KilnCode,
  1516. KilnName,
  1517. KilnCarID,
  1518. KilnCarCode,
  1519. KilnCarName,
  1520. KilnCarBatchNo,
  1521. KilnCarPosition,
  1522. AccountID,
  1523. ValueFlag,
  1524. :CreateUserID,
  1525. :UpdateUserID,
  1526. SpecialRepairflag,
  1527. FlowProcedureID,
  1528. FlowProcedureTime,
  1529. ProcedureID,
  1530. ProcedureTime,
  1531. ProductionDataID,
  1532. logoid, ISREWORKFLAG, SEMICHECKID,:DISCOVERERSTAFF
  1533. from TP_PM_InProduction
  1534. where barcode='" + SProductEntity.BarCode + "'";
  1535. OracleParameter[] Paras2 = new OracleParameter[] {
  1536. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1537. userInfo.UserID,ParameterDirection.Input),
  1538. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1539. userInfo.UserID,ParameterDirection.Input),
  1540. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1541. SProductEntity.GoodsLevelID,ParameterDirection.Input),
  1542. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1543. SProductEntity.GoodsLevelTypeID,ParameterDirection.Input),
  1544. new OracleParameter(":DISCOVERERSTAFF",OracleDbType.NVarchar2,
  1545. SProductEntity.DiscovererStaffCode,ParameterDirection.Input)
  1546. };
  1547. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  1548. //20150714 modify wangx
  1549. if (SProductEntity.ProcedureID != null)//在生产线上报废的,
  1550. {
  1551. sbSql.Clear();
  1552. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + SProductEntity.BarCode + "'");
  1553. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1554. }
  1555. //20150714 modify wangx end
  1556. sbSql.Clear();
  1557. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + SProductEntity.BarCode + "'");
  1558. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1559. //如果没有删除在产产品,那么要去删除成品表
  1560. if (DeleteRows == 0)
  1561. {
  1562. sbSql.Clear();
  1563. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + SProductEntity.BarCode + "'");
  1564. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1565. }
  1566. //并且要把该产品的生产数据的最终状态添加上
  1567. //sbSql.Clear();
  1568. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + SProductEntity.BarCode + "'");
  1569. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1570. }
  1571. else
  1572. {
  1573. if (SProductEntity.ProcedureID != null)//在生产线上报废的,
  1574. {
  1575. sbSql.Clear();
  1576. if (SProductEntity.AuditStatus == 0) //待审核
  1577. {
  1578. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + SProductEntity.BarCode + "'");
  1579. }
  1580. else
  1581. {
  1582. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + SProductEntity.BarCode + "'");
  1583. }
  1584. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1585. }
  1586. }
  1587. //-----------------------------------------------
  1588. //判断一下责任类型,如果是责任工序的话,则添加责任工序信息
  1589. if (Convert.ToInt32(SProductEntity.ResponType) == 3)
  1590. {
  1591. //插入产品废弃责任工序
  1592. sbSql.Clear();
  1593. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  1594. RProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1595. sbSql.Clear();
  1596. sbSql.Append("Insert into TP_PM_ResponProcedure");
  1597. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  1598. sbSql.Append("ProductionLineCode,ProductionLineName,");
  1599. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  1600. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  1601. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  1602. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  1603. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  1604. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  1605. OracleParameter[] RPParas = new OracleParameter[] {
  1606. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  1607. RProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  1608. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1609. id,ParameterDirection.Input),
  1610. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1611. RProcedureEntity.BarCode,ParameterDirection.Input),
  1612. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  1613. RProcedureEntity.ProductionDataID,ParameterDirection.Input),
  1614. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  1615. RProcedureEntity.ProductionLineID,ParameterDirection.Input),
  1616. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  1617. RProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  1618. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  1619. RProcedureEntity.ProductionLineName,ParameterDirection.Input),
  1620. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  1621. RProcedureEntity.ProcedureID,ParameterDirection.Input),
  1622. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  1623. RProcedureEntity.ProcedureCode,ParameterDirection.Input),
  1624. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  1625. RProcedureEntity.ProcedureName,ParameterDirection.Input),
  1626. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  1627. RProcedureEntity.UserID,ParameterDirection.Input),
  1628. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  1629. RProcedureEntity.UserCode,ParameterDirection.Input),
  1630. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  1631. RProcedureEntity.UserName,ParameterDirection.Input),
  1632. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1633. RProcedureEntity.Remarks,ParameterDirection.Input),
  1634. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  1635. userInfo.AccountID,ParameterDirection.Input),
  1636. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  1637. userInfo.UserID,ParameterDirection.Input),
  1638. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  1639. userInfo.UserID,ParameterDirection.Input),
  1640. };
  1641. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  1642. #region 更新废弃责任工序的生产工序ID
  1643. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  1644. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  1645. " (SELECT RP.PROCEDUREID\n" +
  1646. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  1647. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  1648. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  1649. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  1650. RPParas = new OracleParameter[]
  1651. {
  1652. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,id,ParameterDirection.Input),
  1653. };
  1654. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, RPParas);
  1655. #endregion
  1656. }
  1657. if (Convert.ToInt32(SProductEntity.ResponType) != 1)
  1658. {
  1659. //计算每个责任人的报废扣罚
  1660. decimal scrapfine = 0;
  1661. if (SResponsibleList.Count > 0)
  1662. {
  1663. scrapfine = SProductEntity.ScrapFine / SResponsibleList.Count;
  1664. }
  1665. //循环插入产品废弃责任者
  1666. OracleParameter[] SPParas;
  1667. foreach (ScrapResponsibleEntity spFor in SResponsibleList)
  1668. {
  1669. sbSql.Clear();
  1670. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  1671. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  1672. int? ResponProcedureID = null;
  1673. if (RProcedureEntity != null)
  1674. {
  1675. ResponProcedureID = RProcedureEntity.ResponProcedureID;
  1676. }
  1677. sbSql.Clear();
  1678. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  1679. sbSql.Append("(ResponsibleID,ScrapProductID,ResponType,ResponProcedureID,Barcode,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  1680. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  1681. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  1682. sbSql.Append("values(:ResponsibleID,:ScrapProductID,:ResponType,:ResponProcedureID,:Barcode,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  1683. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  1684. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  1685. SPParas = new OracleParameter[]
  1686. {
  1687. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  1688. spFor.ResponsibleID,ParameterDirection.Input),
  1689. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  1690. id,ParameterDirection.Input),
  1691. new OracleParameter(":ResponType",OracleDbType.Int32,
  1692. Convert.ToInt32(SProductEntity.ResponType),ParameterDirection.Input),
  1693. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  1694. ResponProcedureID,ParameterDirection.Input),
  1695. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  1696. spFor.BarCode,ParameterDirection.Input),
  1697. new OracleParameter(":StaffID",OracleDbType.Int32,
  1698. spFor.StaffID,ParameterDirection.Input),
  1699. new OracleParameter(":UserID",OracleDbType.Int32,
  1700. spFor.UserID,ParameterDirection.Input),
  1701. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  1702. spFor.UserCode,ParameterDirection.Input),
  1703. new OracleParameter(":UJobsID",OracleDbType.Int32,
  1704. spFor.UJobsID,ParameterDirection.Input),
  1705. new OracleParameter(":SJobsID",OracleDbType.Int32,
  1706. spFor.SJobsID,ParameterDirection.Input),
  1707. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  1708. spFor.StaffStatus,ParameterDirection.Input),
  1709. new OracleParameter(":AccountID",OracleDbType.Int32,
  1710. userInfo.AccountID,ParameterDirection.Input),
  1711. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1712. userInfo.UserID,ParameterDirection.Input),
  1713. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1714. userInfo.UserID,ParameterDirection.Input),
  1715. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  1716. scrapfine,ParameterDirection.Input)
  1717. };
  1718. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  1719. }
  1720. #region 更新废弃责任工序的责任者ID和编码
  1721. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  1722. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  1723. " (SELECT SR.USERID, SR.USERCODE\n" +
  1724. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  1725. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  1726. " GROUP BY SR.USERID, SR.USERCODE)\n" +
  1727. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  1728. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  1729. SPParas = new OracleParameter[]
  1730. {
  1731. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,id,ParameterDirection.Input),
  1732. };
  1733. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, SPParas);
  1734. #endregion
  1735. }
  1736. if (returnRows == 0)
  1737. {
  1738. oracleTrConn.Rollback();
  1739. oracleTrConn.Disconnect();
  1740. }
  1741. else
  1742. {
  1743. oracleTrConn.Commit();
  1744. oracleTrConn.Disconnect();
  1745. }
  1746. }
  1747. catch (Exception ex)
  1748. {
  1749. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  1750. {
  1751. oracleTrConn.Rollback();
  1752. oracleTrConn.Disconnect();
  1753. }
  1754. throw ex;
  1755. }
  1756. finally
  1757. {
  1758. if (oracleTrConn.ConnState == ConnectionState.Open)
  1759. {
  1760. oracleTrConn.Disconnect();
  1761. }
  1762. }
  1763. return returnRows;
  1764. }
  1765. /// <summary>
  1766. /// 修改废弃产品记录
  1767. /// </summary>
  1768. /// <param name="UpdateSProductEntity">修改的废弃产品实体</param>
  1769. /// <param name="UpdateRProcedureEntity">修改的废弃责任工序实体</param>
  1770. /// <param name="UpdateSResponsibleList">修改的废弃责任人实体</param>
  1771. /// <param name="YSResponsibleList">修改前的废弃责任人实体</param>
  1772. /// <param name="userInfo">用户基本信息</param>
  1773. /// <returns>int结果返回值</returns>
  1774. /// <remarks>
  1775. /// 庄天威 2014.09.24 新建
  1776. /// </remarks>
  1777. public static int UpdateScrapProduct(ScrapProductEntity UpdateSProductEntity,
  1778. ResponProcedureEntity UpdateRProcedureEntity,
  1779. List<ScrapResponsibleEntity> UpdateSResponsibleList, List<ScrapResponsibleEntity> YSResponsibleList,
  1780. SUserInfo userInfo)
  1781. {
  1782. int returnRows = 0;
  1783. int sresponsibleReturnRows = 0;
  1784. int rprocedureReturn = 0;
  1785. int deleteRprocedureReturn = 0;
  1786. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  1787. try
  1788. {
  1789. oracleTrConn.Connect();
  1790. //首先修改废弃产品主体信息
  1791. StringBuilder sbSql = new StringBuilder();
  1792. sbSql.Append("update TP_PM_ScrapProduct");
  1793. sbSql.Append(" set ScrapDate=to_date(:ScrapDate,'yyyy-mm-dd hh24:mi:ss'),");
  1794. sbSql.Append(" Rreason=:Rreason,");
  1795. sbSql.Append(" Remarks=:Remarks,");
  1796. sbSql.Append(" ResponType=:ResponType,");
  1797. sbSql.Append(" UpdateUserID=:UpdateUserID,");
  1798. sbSql.Append(" ScrapFine=:ScrapFine");
  1799. if (UpdateSProductEntity.AuditStatus != null)
  1800. {
  1801. sbSql.Append(" ,AuditStatus=" + UpdateSProductEntity.AuditStatus);
  1802. }
  1803. if (UpdateSProductEntity.AuditStatus == 0) //待审批
  1804. {
  1805. sbSql.Append(" ,AuditDate=null,Auditor=null");
  1806. }
  1807. else
  1808. {
  1809. //2021年12月6日10:58:08 by fy modify 取系统时间
  1810. //object result = DBNull.Value;
  1811. //string strSql1 = "select FUN_CMN_GetAccountDate(:accountId) From DUAL";
  1812. //Oracle.ManagedDataAccess.Client.OracleParameter[] paras1 = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  1813. //{
  1814. // new Oracle.ManagedDataAccess.Client.OracleParameter(":accountId",userInfo.AccountID)
  1815. //};
  1816. //object strResult = oracleTrConn.GetSqlResultToObj(strSql1, paras1);
  1817. //if (strResult == null || strResult == DBNull.Value)
  1818. //{
  1819. // // 服务器时间错误
  1820. // throw new Exception("SystemDateTimeError");
  1821. //}
  1822. //result = Convert.ToDateTime(strResult);
  1823. //sbSql.Append(string.Format(" ,AuditDate=to_date('{0}','yyyy-mm-dd hh24:mi:ss'),Auditor={1}", result.ToString().Replace("/", "-"), userInfo.UserID));
  1824. sbSql.Append(string.Format(" ,AuditDate=sysdate,Auditor={0},AccountDate=trunc(sysdate)", userInfo.UserID));
  1825. }
  1826. sbSql.Append(" where ScrapProductID=:ScrapProductID");
  1827. OracleParameter[] Paras = new OracleParameter[]
  1828. {
  1829. new OracleParameter(":ScrapDate",OracleDbType.NVarchar2,
  1830. UpdateSProductEntity.ScrapDate.ToString(),ParameterDirection.Input),
  1831. new OracleParameter(":Rreason",OracleDbType.NVarchar2,
  1832. UpdateSProductEntity.Rreason,ParameterDirection.Input),
  1833. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  1834. UpdateSProductEntity.Remarks,ParameterDirection.Input),
  1835. new OracleParameter(":ResponType",OracleDbType.Int32,
  1836. UpdateSProductEntity.ResponType,ParameterDirection.Input),
  1837. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1838. userInfo.UserID,ParameterDirection.Input),
  1839. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  1840. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  1841. new OracleParameter(":ScrapFine",OracleDbType.Decimal,
  1842. UpdateSProductEntity.ScrapFine,ParameterDirection.Input)
  1843. };
  1844. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), Paras);
  1845. //如果是直接审批通过 wangxin 2015-03-24
  1846. if (UpdateSProductEntity.AuditStatus == 1)
  1847. {
  1848. int DeleteRows = 0;
  1849. string sqlInsert = @"insert into TP_PM_InProductionTrash
  1850. (
  1851. BarCode,
  1852. ProductionLineID,
  1853. ProductionLineCode,
  1854. ProductionLineName,
  1855. ProcedureModel,
  1856. ModelType,
  1857. DefectFlag,
  1858. ReworkProcedureID,
  1859. IsPublicBody,
  1860. IsReFire,
  1861. GoodsLevelID,
  1862. GoodsLevelTypeID,
  1863. GoodsID,
  1864. GoodsCode,
  1865. GoodsName,
  1866. UserID,
  1867. GroutingDailyID,
  1868. GroutingDailyDetailID,
  1869. GroutingDate,
  1870. GroutingLineID,
  1871. GroutingLineCode,
  1872. GroutingLineName,
  1873. GMouldTypeID,
  1874. CanManyTimes,
  1875. GroutingLineDetailID,
  1876. GroutingMouldCode,
  1877. MouldCode,
  1878. GroutingUserID,
  1879. GroutingUserCode,
  1880. GroutingNum,
  1881. Remarks,
  1882. KilnID,
  1883. KilnCode,
  1884. KilnName,
  1885. KilnCarID,
  1886. KilnCarCode,
  1887. KilnCarName,
  1888. KilnCarBatchNo,
  1889. KilnCarPosition,
  1890. AccountID,
  1891. ValueFlag,
  1892. CreateUserID,
  1893. UpdateUserID,
  1894. SpecialRepairflag,
  1895. FlowProcedureID,
  1896. FlowProcedureTime,
  1897. ProcedureID,
  1898. ProcedureTime,
  1899. ProductionDataID,
  1900. logoid, ISREWORKFLAG, SEMICHECKID
  1901. )
  1902. select
  1903. BarCode,
  1904. ProductionLineID,
  1905. ProductionLineCode,
  1906. ProductionLineName,
  1907. ProcedureModel,
  1908. ModelType,
  1909. DefectFlag,
  1910. ReworkProcedureID,
  1911. IsPublicBody,
  1912. IsReFire,
  1913. :GoodsLevelID,
  1914. :GoodsLevelTypeID,
  1915. GoodsID,
  1916. GoodsCode,
  1917. GoodsName,
  1918. UserID,
  1919. GroutingDailyID,
  1920. GroutingDailyDetailID,
  1921. GroutingDate,
  1922. GroutingLineID,
  1923. GroutingLineCode,
  1924. GroutingLineName,
  1925. GMouldTypeID,
  1926. CanManyTimes,
  1927. GroutingLineDetailID,
  1928. GroutingMouldCode,
  1929. MouldCode,
  1930. GroutingUserID,
  1931. GroutingUserCode,
  1932. GroutingNum,
  1933. Remarks,
  1934. KilnID,
  1935. KilnCode,
  1936. KilnName,
  1937. KilnCarID,
  1938. KilnCarCode,
  1939. KilnCarName,
  1940. KilnCarBatchNo,
  1941. KilnCarPosition,
  1942. AccountID,
  1943. ValueFlag,
  1944. :CreateUserID,
  1945. :UpdateUserID,
  1946. SpecialRepairflag,
  1947. FlowProcedureID,
  1948. FlowProcedureTime,
  1949. ProcedureID,
  1950. ProcedureTime,
  1951. ProductionDataID,
  1952. logoid, ISREWORKFLAG, SEMICHECKID
  1953. from TP_PM_InProduction
  1954. where barcode='" + UpdateSProductEntity.BarCode + "'";
  1955. OracleParameter[] Paras2 = new OracleParameter[] {
  1956. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  1957. userInfo.UserID,ParameterDirection.Input),
  1958. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  1959. userInfo.UserID,ParameterDirection.Input),
  1960. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  1961. UpdateSProductEntity.GoodsLevelID,ParameterDirection.Input),
  1962. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  1963. UpdateSProductEntity.GoodsLevelTypeID,ParameterDirection.Input)
  1964. };
  1965. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras2);
  1966. //20150714 modify wangx
  1967. if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  1968. {
  1969. sbSql.Clear();
  1970. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1971. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1972. }
  1973. //20150714 modify wangx end
  1974. sbSql.Clear();
  1975. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1976. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1977. //如果没有删除在产产品,那么要去删除成品表
  1978. if (DeleteRows == 0)
  1979. {
  1980. sbSql.Clear();
  1981. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1982. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1983. }
  1984. //并且要把该产品的生产数据的最终状态添加上
  1985. //sbSql.Clear();
  1986. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1987. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  1988. }
  1989. else
  1990. {
  1991. //if (UpdateSProductEntity.ProcedureID != null)//在生产线上报废的,
  1992. //{
  1993. sbSql.Clear();
  1994. if (UpdateSProductEntity.AuditStatus == 0) //待审核
  1995. {
  1996. sbSql.Append("update TP_PM_InProduction set inscrapflag='1' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  1997. }
  1998. else
  1999. {
  2000. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + UpdateSProductEntity.BarCode + "'");
  2001. }
  2002. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2003. //}
  2004. }
  2005. //-----------------------------------------------
  2006. //无论如何,要把原始的责任者数据删除
  2007. foreach (ScrapResponsibleEntity spFor in YSResponsibleList)
  2008. {
  2009. sbSql.Clear();
  2010. sbSql.Append("delete from TP_PM_ScrapResponsible");
  2011. sbSql.Append(" where ResponsibleID=:ResponsibleID ");
  2012. OracleParameter[] SPParas = new OracleParameter[] {
  2013. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2014. spFor.ResponsibleID,ParameterDirection.Input)
  2015. };
  2016. deleteRprocedureReturn += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2017. }
  2018. //判断一下责任类型,如果有责任工序的话,则修改责任工序信息
  2019. if (Convert.ToInt32(UpdateSProductEntity.ResponType) == 3)
  2020. {
  2021. if (UpdateRProcedureEntity != null)
  2022. {
  2023. if (UpdateRProcedureEntity.ResponProcedureID != null)
  2024. {
  2025. sbSql.Clear();
  2026. sbSql.Append("update TP_PM_ResponProcedure");
  2027. sbSql.Append(" set ProcedureID=:ProcedureID,");
  2028. sbSql.Append(" ProcedureCode=:ProcedureCode,");
  2029. sbSql.Append(" ProcedureName=:ProcedureName,");
  2030. sbSql.Append(" UserID=:UserID,");
  2031. sbSql.Append(" UserCode=:UserCode,");
  2032. sbSql.Append(" UserName=:UserName,");
  2033. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2034. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2035. OracleParameter[] RPParas = new OracleParameter[]
  2036. {
  2037. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2038. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2039. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2040. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2041. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2042. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2043. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2044. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2045. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2046. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2047. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2048. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2049. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2050. userInfo.UserID,ParameterDirection.Input),
  2051. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2052. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2053. };
  2054. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2055. }
  2056. else
  2057. {
  2058. //插入产品废弃责任工序
  2059. sbSql.Clear();
  2060. sbSql.Append("select SEQ_PM_ResponProcedure_ID.nextval from dual");
  2061. UpdateRProcedureEntity.ResponProcedureID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2062. sbSql.Clear();
  2063. sbSql.Append("Insert into TP_PM_ResponProcedure");
  2064. sbSql.Append("(ResponProcedureID,ScrapProductID,Barcode,ProductionDataID,ProductionLineID,");
  2065. sbSql.Append("ProductionLineCode,ProductionLineName,");
  2066. sbSql.Append("ProcedureID,ProcedureCode,ProcedureName,UserID,UserCode,UserName,Remarks,AccountID,");
  2067. sbSql.Append("ValueFlag,CreateTime,CreateUserID,UpdateTime,UpdateUserID,OPTimeStamp)");
  2068. sbSql.Append("Values(:ResponProcedureID,:ScrapProductID,:Barcode,:ProductionDataID,:ProductionLineID,");
  2069. sbSql.Append(":ProductionLineCode,:ProductionLineName,");
  2070. sbSql.Append(":ProcedureID,:ProcedureCode,:ProcedureName,:UserID,:UserCode,:UserName,:Remarks,");
  2071. sbSql.Append(":AccountID,1,sysdate,:CreateUserID,sysdate,:UpdateUserID,systimestamp)");
  2072. OracleParameter[] RPParas = new OracleParameter[]
  2073. {
  2074. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2075. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input),
  2076. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2077. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2078. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2079. UpdateRProcedureEntity.BarCode,ParameterDirection.Input),
  2080. new OracleParameter(":ProductionDataID",OracleDbType.NVarchar2,
  2081. UpdateRProcedureEntity.ProductionDataID,ParameterDirection.Input),
  2082. new OracleParameter(":ProductionLineID",OracleDbType.NVarchar2,
  2083. UpdateRProcedureEntity.ProductionLineID,ParameterDirection.Input),
  2084. new OracleParameter(":ProductionLineCode",OracleDbType.NVarchar2,
  2085. UpdateRProcedureEntity.ProductionLineCode,ParameterDirection.Input),
  2086. new OracleParameter(":ProductionLineName",OracleDbType.NVarchar2,
  2087. UpdateRProcedureEntity.ProductionLineName,ParameterDirection.Input),
  2088. new OracleParameter(":ProcedureID",OracleDbType.NVarchar2,
  2089. UpdateRProcedureEntity.ProcedureID,ParameterDirection.Input),
  2090. new OracleParameter(":ProcedureCode",OracleDbType.NVarchar2,
  2091. UpdateRProcedureEntity.ProcedureCode,ParameterDirection.Input),
  2092. new OracleParameter(":ProcedureName",OracleDbType.NVarchar2,
  2093. UpdateRProcedureEntity.ProcedureName,ParameterDirection.Input),
  2094. new OracleParameter(":UserID",OracleDbType.NVarchar2,
  2095. UpdateRProcedureEntity.UserID,ParameterDirection.Input),
  2096. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2097. UpdateRProcedureEntity.UserCode,ParameterDirection.Input),
  2098. new OracleParameter(":UserName",OracleDbType.NVarchar2,
  2099. UpdateRProcedureEntity.UserName,ParameterDirection.Input),
  2100. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  2101. UpdateRProcedureEntity.Remarks,ParameterDirection.Input),
  2102. new OracleParameter(":AccountID",OracleDbType.NVarchar2,
  2103. userInfo.AccountID,ParameterDirection.Input),
  2104. new OracleParameter(":CreateUserID",OracleDbType.NVarchar2,
  2105. userInfo.UserID,ParameterDirection.Input),
  2106. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2107. userInfo.UserID,ParameterDirection.Input)
  2108. };
  2109. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2110. }
  2111. }
  2112. }
  2113. else //责任类型改为不存在责任工序了,要把原来的删除
  2114. {
  2115. if (UpdateRProcedureEntity != null) //本来就没有的话就不用删了
  2116. {
  2117. if (UpdateRProcedureEntity.ValueFlag == 0) //直接删除即可
  2118. {
  2119. sbSql.Clear();
  2120. sbSql.Append("Delete from TP_PM_ResponProcedure");
  2121. sbSql.Append(" where ResponProcedureID=:ResponProcedureID");
  2122. OracleParameter[] RPParas = new OracleParameter[] {
  2123. new OracleParameter(":ResponProcedureID",OracleDbType.Int32,
  2124. UpdateRProcedureEntity.ResponProcedureID,ParameterDirection.Input)
  2125. };
  2126. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2127. }
  2128. }
  2129. }
  2130. //如果存在修改的产品废弃责任者
  2131. if (Convert.ToInt32(UpdateSProductEntity.ResponType) != 1)
  2132. {
  2133. //计算每个责任人的报废扣罚
  2134. decimal scrapfine = 0;
  2135. if (UpdateSResponsibleList.Count > 0)
  2136. {
  2137. scrapfine = UpdateSProductEntity.ScrapFine / UpdateSResponsibleList.Count;
  2138. }
  2139. //循环插入产品废弃责任者
  2140. foreach (ScrapResponsibleEntity spFor in UpdateSResponsibleList)
  2141. {
  2142. sbSql.Clear();
  2143. sbSql.Append("select SEQ_PM_ScrapResponsible_ID.nextval from dual");
  2144. spFor.ResponsibleID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2145. int? ResponProcedureID = null;
  2146. if (UpdateRProcedureEntity != null)
  2147. {
  2148. if (UpdateRProcedureEntity.ValueFlag != 0)
  2149. {
  2150. ResponProcedureID = UpdateRProcedureEntity.ResponProcedureID;
  2151. }
  2152. }
  2153. sbSql.Clear();
  2154. sbSql.Append("Insert into TP_PM_ScrapResponsible");
  2155. sbSql.Append("(ResponsibleID,ResponType,ResponProcedureID,Barcode,ScrapProductID,StaffID,UserID,UserCode,UJobsID,SJobsID,");
  2156. sbSql.Append("StaffStatus,AccountID,CreateTime,CreateUserID,");
  2157. sbSql.Append("UpdateTime,UpdateUserID,OPTimeStamp,Scrapfine)");
  2158. sbSql.Append("values(:ResponsibleID,:ResponType,:ResponProcedureID,:Barcode,:ScrapProductID,:StaffID,:UserID,:UserCode,:UJobsID,:SJobsID,");
  2159. sbSql.Append(":StaffStatus,:AccountID,sysdate,:CreateUserID,");
  2160. sbSql.Append("sysdate,:UpdateUserID,systimestamp,:Scrapfine)");
  2161. OracleParameter[] SPParas = new OracleParameter[]
  2162. {
  2163. new OracleParameter(":ResponsibleID",OracleDbType.Int32,
  2164. spFor.ResponsibleID,ParameterDirection.Input),
  2165. new OracleParameter(":ResponType",OracleDbType.Int32,
  2166. Convert.ToInt32(UpdateSProductEntity.ResponType),ParameterDirection.Input),
  2167. new OracleParameter(":ResponProcedureID",OracleDbType.NVarchar2,
  2168. ResponProcedureID,ParameterDirection.Input),
  2169. new OracleParameter(":Barcode",OracleDbType.NVarchar2,
  2170. spFor.BarCode,ParameterDirection.Input),
  2171. new OracleParameter(":ScrapProductID",OracleDbType.Int32,
  2172. UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2173. new OracleParameter(":StaffID",OracleDbType.Int32,
  2174. spFor.StaffID,ParameterDirection.Input),
  2175. new OracleParameter(":UserID",OracleDbType.Int32,
  2176. spFor.UserID,ParameterDirection.Input),
  2177. new OracleParameter(":UserCode",OracleDbType.NVarchar2,
  2178. spFor.UserCode,ParameterDirection.Input),
  2179. new OracleParameter(":UJobsID",OracleDbType.Int32,
  2180. spFor.UJobsID,ParameterDirection.Input),
  2181. new OracleParameter(":SJobsID",OracleDbType.Int32,
  2182. spFor.SJobsID,ParameterDirection.Input),
  2183. new OracleParameter(":StaffStatus",OracleDbType.Int32,
  2184. spFor.StaffStatus,ParameterDirection.Input),
  2185. new OracleParameter(":AccountID",OracleDbType.Int32,
  2186. userInfo.AccountID,ParameterDirection.Input),
  2187. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2188. userInfo.UserID,ParameterDirection.Input),
  2189. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2190. userInfo.UserID,ParameterDirection.Input),
  2191. new OracleParameter(":Scrapfine",OracleDbType.Decimal,
  2192. scrapfine,ParameterDirection.Input)
  2193. };
  2194. sresponsibleReturnRows += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), SPParas);
  2195. }
  2196. }
  2197. #region 更新废弃责任工序的生产工序ID
  2198. string sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2199. " SET (SP.RESPONPROCEDUREPROCEDUREID) =\n" +
  2200. " (SELECT RP.PROCEDUREID\n" +
  2201. " FROM TP_PM_RESPONPROCEDURE RP\n" +
  2202. " WHERE RP.SCRAPPRODUCTID = SP.SCRAPPRODUCTID)\n" +
  2203. " WHERE SP.SCRAPTYPE IN (0, 2, 3)\n" +
  2204. " AND SP.SCRAPPRODUCTID = :SCRAPPRODUCTID";
  2205. Paras = new OracleParameter[]
  2206. {
  2207. new OracleParameter(":SCRAPPRODUCTID",OracleDbType.Int32,UpdateSProductEntity.ScrapProductID,ParameterDirection.Input),
  2208. };
  2209. rprocedureReturn = oracleTrConn.ExecuteNonQuery(sql, Paras);
  2210. #endregion
  2211. #region 更新废弃责任工序的责任者ID和编码
  2212. sql = "UPDATE TP_PM_SCRAPPRODUCT SP\n" +
  2213. " SET (SP.RESPONSIBLEUSERID, SP.RESPONSIBLEUSERCODE) =\n" +
  2214. " (SELECT SR.USERID, SR.USERCODE\n" +
  2215. " FROM TP_PM_SCRAPRESPONSIBLE SR\n" +
  2216. " WHERE SR.SCRAPPRODUCTID = SP.SCRAPPRODUCTID\n" +
  2217. " GROUP BY SR.USERID, SR.USERCODE)\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. if (returnRows == 0)
  2227. {
  2228. oracleTrConn.Rollback();
  2229. oracleTrConn.Disconnect();
  2230. }
  2231. else
  2232. {
  2233. oracleTrConn.Commit();
  2234. oracleTrConn.Disconnect();
  2235. }
  2236. }
  2237. catch (Exception ex)
  2238. {
  2239. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2240. {
  2241. oracleTrConn.Rollback();
  2242. oracleTrConn.Disconnect();
  2243. }
  2244. throw ex;
  2245. }
  2246. finally
  2247. {
  2248. if (oracleTrConn.ConnState == ConnectionState.Open)
  2249. {
  2250. oracleTrConn.Disconnect();
  2251. }
  2252. }
  2253. return returnRows;
  2254. }
  2255. /// <summary>
  2256. /// 审核报损产品信息
  2257. /// </summary>
  2258. /// <param name="spEntity">被审核的产品实体</param>
  2259. /// <param name="userInfo">用户基本信息</param>
  2260. /// <returns>int</returns>
  2261. public static int AuditScrapProduct(ScrapProductEntity spEntity, SUserInfo userInfo)
  2262. {
  2263. int returnRows = 0;
  2264. int DeleteRows = 0;
  2265. //int UpdateRows = 0;
  2266. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2267. try
  2268. {
  2269. oracleTrConn.Connect();
  2270. StringBuilder sbSql = new StringBuilder();
  2271. sbSql.Append("update TP_PM_ScrapProduct");
  2272. sbSql.Append(" set AuditStatus=:AuditStatus,");
  2273. sbSql.Append(" Auditor=:Auditor,");
  2274. //sbSql.Append(" AuditDate=to_date(:AuditDate,'yyyy-MM-dd'),");
  2275. //sbSql.Append(" AuditDate=:AuditDate,");
  2276. sbSql.Append(" AuditDate=sysdate,");
  2277. sbSql.Append(" AuditOpinion=:AuditOpinion,");
  2278. sbSql.Append(" UpdateUserID=:UpdateUserID");
  2279. //修改条件最大值时间替换为产品条码
  2280. sbSql.Append(" where ScrapProductID=:ScrapProductID and barcode=:barcode and OPTimeStamp=:OPTimeStamp");
  2281. OracleParameter[] RPParas = new OracleParameter[] {
  2282. new OracleParameter(":AuditStatus",OracleDbType.Int32,
  2283. spEntity.AuditStatus,ParameterDirection.Input),
  2284. new OracleParameter(":Auditor",OracleDbType.Int32,
  2285. spEntity.Auditor,ParameterDirection.Input),
  2286. //new OracleParameter(":AuditDate",OracleDbType.NVarchar2,
  2287. //Convert.ToDateTime(spEntity.AuditlDate).ToString("yyyy-MM-dd"),ParameterDirection.Input),
  2288. //2021年12月6日10:45:35 by fy modify将审核时间修改为系统当前时间
  2289. //new OracleParameter(":AuditDate",OracleDbType.Date,
  2290. //spEntity.AuditlDate,ParameterDirection.Input),
  2291. new OracleParameter(":AuditOpinion",OracleDbType.NVarchar2,
  2292. spEntity.AuditOpinion,ParameterDirection.Input),
  2293. new OracleParameter(":UpdateUserID",OracleDbType.NVarchar2,
  2294. userInfo.UserID,ParameterDirection.Input),
  2295. new OracleParameter(":ScrapProductID",OracleDbType.NVarchar2,
  2296. spEntity.ScrapProductID,ParameterDirection.Input),
  2297. new OracleParameter(":OPTimeStamp",OracleDbType.TimeStamp,
  2298. spEntity.OPTimeStamp,ParameterDirection.Input),
  2299. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  2300. spEntity.BarCode,ParameterDirection.Input)
  2301. };
  2302. returnRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), RPParas);
  2303. if (returnRows == 0)
  2304. {
  2305. oracleTrConn.Rollback();
  2306. oracleTrConn.Disconnect();
  2307. return -500;
  2308. }
  2309. //如果审核通过,要删除在产产品表中对应的信息
  2310. if (spEntity.AuditStatus == 1)
  2311. {
  2312. string sqlInsert = @"insert into TP_PM_InProductionTrash
  2313. (
  2314. BarCode,
  2315. ProductionLineID,
  2316. ProductionLineCode,
  2317. ProductionLineName,
  2318. ProcedureModel,
  2319. ModelType,
  2320. DefectFlag,
  2321. ReworkProcedureID,
  2322. IsPublicBody,
  2323. IsReFire,
  2324. GoodsLevelID,
  2325. GoodsLevelTypeID,
  2326. GoodsID,
  2327. GoodsCode,
  2328. GoodsName,
  2329. UserID,
  2330. GroutingDailyID,
  2331. GroutingDailyDetailID,
  2332. GroutingDate,
  2333. GroutingLineID,
  2334. GroutingLineCode,
  2335. GroutingLineName,
  2336. GMouldTypeID,
  2337. CanManyTimes,
  2338. GroutingLineDetailID,
  2339. GroutingMouldCode,
  2340. MouldCode,
  2341. GroutingUserID,
  2342. GroutingUserCode,
  2343. GroutingNum,
  2344. Remarks,
  2345. KilnID,
  2346. KilnCode,
  2347. KilnName,
  2348. KilnCarID,
  2349. KilnCarCode,
  2350. KilnCarName,
  2351. KilnCarBatchNo,
  2352. KilnCarPosition,
  2353. AccountID,
  2354. ValueFlag,
  2355. CreateUserID,
  2356. UpdateUserID,
  2357. SpecialRepairflag,
  2358. FlowProcedureID,
  2359. FlowProcedureTime,
  2360. ProcedureID,
  2361. ProcedureTime,
  2362. ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  2363. )
  2364. select
  2365. BarCode,
  2366. ProductionLineID,
  2367. ProductionLineCode,
  2368. ProductionLineName,
  2369. ProcedureModel,
  2370. ModelType,
  2371. DefectFlag,
  2372. ReworkProcedureID,
  2373. IsPublicBody,
  2374. IsReFire,
  2375. :GoodsLevelID,
  2376. :GoodsLevelTypeID,
  2377. GoodsID,
  2378. GoodsCode,
  2379. GoodsName,
  2380. UserID,
  2381. GroutingDailyID,
  2382. GroutingDailyDetailID,
  2383. GroutingDate,
  2384. GroutingLineID,
  2385. GroutingLineCode,
  2386. GroutingLineName,
  2387. GMouldTypeID,
  2388. CanManyTimes,
  2389. GroutingLineDetailID,
  2390. GroutingMouldCode,
  2391. MouldCode,
  2392. GroutingUserID,
  2393. GroutingUserCode,
  2394. GroutingNum,
  2395. Remarks,
  2396. KilnID,
  2397. KilnCode,
  2398. KilnName,
  2399. KilnCarID,
  2400. KilnCarCode,
  2401. KilnCarName,
  2402. KilnCarBatchNo,
  2403. KilnCarPosition,
  2404. AccountID,
  2405. ValueFlag,
  2406. :CreateUserID,
  2407. :UpdateUserID,
  2408. SpecialRepairflag,
  2409. FlowProcedureID,
  2410. FlowProcedureTime,
  2411. ProcedureID,
  2412. ProcedureTime,
  2413. ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  2414. from TP_PM_InProduction
  2415. where barcode='" + spEntity.BarCode + "'";
  2416. OracleParameter[] Paras = new OracleParameter[] {
  2417. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2418. userInfo.UserID,ParameterDirection.Input),
  2419. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2420. userInfo.UserID,ParameterDirection.Input),
  2421. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,
  2422. spEntity.GoodsLevelID,ParameterDirection.Input),
  2423. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,
  2424. spEntity.GoodsLevelTypeID,ParameterDirection.Input)
  2425. };
  2426. DeleteRows = oracleTrConn.ExecuteNonQuery(sqlInsert, Paras);
  2427. sbSql.Clear();
  2428. sbSql.Append("Delete from TP_PM_InProduction where BarCode='" + spEntity.BarCode + "'");
  2429. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2430. //如果没有删除在产产品,那么要去删除成品表
  2431. if (DeleteRows == 0)
  2432. {
  2433. sbSql.Clear();
  2434. sbSql.Append("Update TP_PM_FinishedProduct set ValueFlag = 0 where BarCode='" + spEntity.BarCode + "'");
  2435. DeleteRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2436. }
  2437. //并且要把该产品的生产数据的最终状态添加上
  2438. //sbSql.Clear();
  2439. //sbSql.Append("Update TP_PM_ProductionData set GoodsEnding=8 where BarCode='" + spEntity.BarCode + "'");
  2440. //UpdateRows = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2441. }
  2442. if (spEntity.AuditStatus != 1) //审批未通过
  2443. {
  2444. sbSql.Clear();
  2445. sbSql.Append("update TP_PM_InProduction set inscrapflag='0' where BarCode='" + spEntity.BarCode + "'");
  2446. oracleTrConn.ExecuteNonQuery(sbSql.ToString(), null);
  2447. }
  2448. // 状态为1 删除受影响行数>0
  2449. if (spEntity.AuditStatus == 1 || DeleteRows > 0)
  2450. {
  2451. oracleTrConn.Commit();
  2452. oracleTrConn.Disconnect();
  2453. }
  2454. return returnRows;
  2455. }
  2456. catch (Exception ex)
  2457. {
  2458. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2459. {
  2460. oracleTrConn.Rollback();
  2461. oracleTrConn.Disconnect();
  2462. }
  2463. throw ex;
  2464. }
  2465. finally
  2466. {
  2467. if (oracleTrConn.ConnState == ConnectionState.Open)
  2468. {
  2469. oracleTrConn.Disconnect();
  2470. }
  2471. }
  2472. }
  2473. #endregion
  2474. #region 温湿计信息
  2475. /// <summary>
  2476. /// 添加温湿计信息
  2477. /// </summary>
  2478. /// <param name="crEntity">温湿计信息实体</param>
  2479. /// <param name="userInfo">当前用户</param>
  2480. /// <returns>影响行/结果</returns>
  2481. public static int AddCelsiusRecord(CelsiusRecordEntity crEntity, SUserInfo userInfo)
  2482. {
  2483. int RowsCount = 0;
  2484. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2485. try
  2486. {
  2487. oracleTrConn.Connect();
  2488. StringBuilder sbSql = new StringBuilder();
  2489. //获取序列ID
  2490. sbSql.Clear();
  2491. sbSql.Append("select SEQ_MST_Thermometer_ID.nextval from dual");
  2492. int entityId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2493. sbSql.Clear();
  2494. //添加温湿计信息
  2495. sbSql.Append(@"Insert into TP_PM_CelsiusRecord
  2496. (RecordID,ThermometerID,RecorderID,RecordDate,Celsius,Humidity,
  2497. Remarks,AccountID,CreateUserID,UpdateUserID)
  2498. Values
  2499. (:RecordID,:ThermometerID,:RecorderID,:RecordDate,:Celsius,:Humidity,
  2500. :Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  2501. OracleParameter[] CRParas = new OracleParameter[] {
  2502. new OracleParameter(":RecordID",OracleDbType.Int32,
  2503. entityId,ParameterDirection.Input),
  2504. new OracleParameter(":ThermometerID",OracleDbType.Int32,
  2505. crEntity.ThermometerID,ParameterDirection.Input),
  2506. new OracleParameter(":RecorderID",OracleDbType.Int32,
  2507. userInfo.UserID,ParameterDirection.Input),
  2508. new OracleParameter(":RecordDate",OracleDbType.Date,
  2509. crEntity.RecordDate,ParameterDirection.Input),
  2510. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2511. crEntity.Celsius,ParameterDirection.Input),
  2512. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2513. crEntity.Humidity,ParameterDirection.Input),
  2514. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2515. crEntity.Remarks,ParameterDirection.Input),
  2516. new OracleParameter(":AccountID",OracleDbType.Int32,
  2517. userInfo.AccountID,ParameterDirection.Input),
  2518. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2519. userInfo.UserID,ParameterDirection.Input),
  2520. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2521. userInfo.UserID,ParameterDirection.Input),
  2522. };
  2523. //连接数据库并返回结果
  2524. RowsCount = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2525. oracleTrConn.Commit();
  2526. oracleTrConn.Disconnect();
  2527. return RowsCount;
  2528. }
  2529. catch (Exception ex)
  2530. {
  2531. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2532. {
  2533. oracleTrConn.Rollback();
  2534. oracleTrConn.Disconnect();
  2535. }
  2536. throw ex;
  2537. }
  2538. finally
  2539. {
  2540. if (oracleTrConn.ConnState == ConnectionState.Open)
  2541. {
  2542. oracleTrConn.Disconnect();
  2543. }
  2544. }
  2545. }
  2546. /// <summary>
  2547. /// 修改温湿计信息
  2548. /// </summary>
  2549. /// <param name="crEntity">温湿计信息实体</param>
  2550. /// <param name="userInfo">当前用户</param>
  2551. /// <returns>影响行/结果</returns>
  2552. public static int UpdateCelsiusRecord(CelsiusRecordEntity crEntity, SUserInfo userInfo)
  2553. {
  2554. int RowsCount = 0;
  2555. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2556. try
  2557. {
  2558. oracleTrConn.Connect();
  2559. StringBuilder sbSql = new StringBuilder();
  2560. //修改温湿度信息
  2561. sbSql.Append(@"Update TP_PM_CelsiusRecord
  2562. Set RecordDate = :RecordDate,
  2563. Celsius = :Celsius,
  2564. Humidity = :Humidity,
  2565. Remarks = :Remarks,
  2566. UpdateUserID = :UpdateUserID
  2567. Where RecordId = :RecordID");
  2568. OracleParameter[] CRParas = new OracleParameter[] {
  2569. new OracleParameter(":RecordDate",OracleDbType.Date,
  2570. crEntity.RecordDate,ParameterDirection.Input),
  2571. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2572. crEntity.Celsius,ParameterDirection.Input),
  2573. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2574. crEntity.Humidity,ParameterDirection.Input),
  2575. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2576. crEntity.Remarks,ParameterDirection.Input),
  2577. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2578. userInfo.UserID,ParameterDirection.Input),
  2579. new OracleParameter(":RecordID",OracleDbType.Int32,
  2580. crEntity.RecordID,ParameterDirection.Input),
  2581. };
  2582. //连接数据库并返回结果
  2583. RowsCount = oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2584. oracleTrConn.Commit();
  2585. oracleTrConn.Disconnect();
  2586. return RowsCount;
  2587. }
  2588. catch (Exception ex)
  2589. {
  2590. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2591. {
  2592. oracleTrConn.Rollback();
  2593. oracleTrConn.Disconnect();
  2594. }
  2595. throw ex;
  2596. }
  2597. finally
  2598. {
  2599. if (oracleTrConn.ConnState == ConnectionState.Open)
  2600. {
  2601. oracleTrConn.Disconnect();
  2602. }
  2603. }
  2604. }
  2605. /// <summary>
  2606. /// 批量操作温湿计信息
  2607. /// </summary>
  2608. /// <param name="RecordTime">记录时间</param>
  2609. /// <param name="dtCelsius">信息数据集</param>
  2610. /// <param name="userInfo">用户信息</param>
  2611. /// <returns>影响行数</returns>
  2612. public static int EditCelsiusRecord(DateTime RecordTime, DataTable dtCelsius, SUserInfo userInfo)
  2613. {
  2614. int RowsCount = 0;
  2615. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2616. try
  2617. {
  2618. oracleTrConn.Connect();
  2619. StringBuilder sbSql = new StringBuilder();
  2620. foreach (DataRow drFor in dtCelsius.Rows)
  2621. {
  2622. sbSql.Clear();
  2623. if (drFor.RowState == DataRowState.Added)
  2624. {
  2625. //获取序列ID
  2626. sbSql.Append("select SEQ_MST_Thermometer_ID.nextval from dual");
  2627. int entityId = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sbSql.ToString()));
  2628. sbSql.Clear();
  2629. //添加温湿计信息
  2630. sbSql.Append(@"Insert into TP_PM_CelsiusRecord
  2631. (RecordID,ThermometerID,RecorderID,RecordDate,Celsius,Humidity,
  2632. Remarks,AccountID,CreateUserID,UpdateUserID)
  2633. Values
  2634. (:RecordID,:ThermometerID,:RecorderID,:RecordDate,:Celsius,:Humidity,
  2635. :Remarks,:AccountID,:CreateUserID,:UpdateUserID)");
  2636. OracleParameter[] CRParas = new OracleParameter[] {
  2637. new OracleParameter(":RecordID",OracleDbType.Int32,
  2638. entityId,ParameterDirection.Input),
  2639. new OracleParameter(":ThermometerID",OracleDbType.Int32,
  2640. drFor["ThermometerID"],ParameterDirection.Input),
  2641. new OracleParameter(":RecorderID",OracleDbType.Int32,
  2642. userInfo.UserID,ParameterDirection.Input),
  2643. new OracleParameter(":RecordDate",OracleDbType.Date,
  2644. RecordTime,ParameterDirection.Input),
  2645. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2646. drFor["Celsius"]==DBNull.Value?0: drFor["Celsius"],ParameterDirection.Input),
  2647. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2648. drFor["Humidity"]==DBNull.Value?0: drFor["Humidity"],ParameterDirection.Input),
  2649. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2650. drFor["Remarks"],ParameterDirection.Input),
  2651. new OracleParameter(":AccountID",OracleDbType.Int32,
  2652. userInfo.AccountID,ParameterDirection.Input),
  2653. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  2654. userInfo.UserID,ParameterDirection.Input),
  2655. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2656. userInfo.UserID,ParameterDirection.Input),
  2657. };
  2658. //连接数据库并返回结果
  2659. RowsCount += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2660. }
  2661. else if (drFor.RowState == DataRowState.Modified)
  2662. {
  2663. //修改
  2664. sbSql.Append(@"Update TP_PM_CelsiusRecord
  2665. Set RecordDate = :RecordDate,
  2666. Celsius = :Celsius,
  2667. Humidity = :Humidity,
  2668. Remarks = :Remarks,
  2669. UpdateUserID = :UpdateUserID
  2670. Where RecordId = :RecordID");
  2671. OracleParameter[] CRParas = new OracleParameter[] {
  2672. new OracleParameter(":RecordDate",OracleDbType.Date,
  2673. RecordTime,ParameterDirection.Input),
  2674. new OracleParameter(":Celsius",OracleDbType.Decimal,
  2675. drFor["Celsius"]==DBNull.Value?0: drFor["Celsius"],ParameterDirection.Input),
  2676. new OracleParameter(":Humidity",OracleDbType.Decimal,
  2677. drFor["Humidity"]==DBNull.Value?0: drFor["Humidity"],ParameterDirection.Input),
  2678. new OracleParameter(":Remarks",OracleDbType.Varchar2,
  2679. drFor["Remarks"],ParameterDirection.Input),
  2680. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  2681. userInfo.UserID,ParameterDirection.Input),
  2682. new OracleParameter(":RecordID",OracleDbType.Int32,
  2683. drFor["RecordID"],ParameterDirection.Input),
  2684. };
  2685. //连接数据库并返回结果
  2686. RowsCount += oracleTrConn.ExecuteNonQuery(sbSql.ToString(), CRParas);
  2687. }
  2688. }
  2689. oracleTrConn.Commit();
  2690. oracleTrConn.Disconnect();
  2691. return RowsCount;
  2692. }
  2693. catch (Exception ex)
  2694. {
  2695. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  2696. {
  2697. oracleTrConn.Rollback();
  2698. oracleTrConn.Disconnect();
  2699. }
  2700. throw ex;
  2701. }
  2702. finally
  2703. {
  2704. if (oracleTrConn.ConnState == ConnectionState.Open)
  2705. {
  2706. oracleTrConn.Disconnect();
  2707. }
  2708. }
  2709. }
  2710. /// <summary>
  2711. /// 删除温湿计信息
  2712. /// </summary>
  2713. /// <param name="recordID">记录id</param>
  2714. /// <param name="user">用户基本信息</param>
  2715. /// <returns>影响行数</returns>
  2716. /// <remarks>
  2717. /// 陈晓野 2016.09.13 新建
  2718. /// </remarks>
  2719. public static int DeleteCelsiusRecord(int recordID, SUserInfo user)
  2720. {
  2721. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2722. try
  2723. {
  2724. oracleTrConn.Connect();
  2725. string sql = "Update TP_PM_CelsiusRecord t "
  2726. + " Set t.ValueFlag = '0' Where t.RecordId = :RecordID";
  2727. OracleParameter[] paras = new OracleParameter[] {
  2728. new OracleParameter(":RecordID",OracleDbType.Int32,
  2729. recordID,ParameterDirection.Input),
  2730. };
  2731. //连接数据库并返回结果
  2732. int rowsCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  2733. oracleTrConn.Commit();
  2734. return rowsCount;
  2735. }
  2736. catch (Exception ex)
  2737. {
  2738. oracleTrConn.Rollback();
  2739. throw ex;
  2740. }
  2741. finally
  2742. {
  2743. if (oracleTrConn.ConnState == ConnectionState.Open)
  2744. {
  2745. oracleTrConn.Disconnect();
  2746. }
  2747. }
  2748. }
  2749. #endregion
  2750. /// <summary>
  2751. /// 添加撤销装车
  2752. /// </summary>
  2753. /// <param name="procedureID"><工序ID/param>
  2754. /// <param name="barcode">产品条码</param>
  2755. /// <param name="sUserInfo">用户基本信息</param>
  2756. /// <returns>string</returns>
  2757. public static string AddCancelLoadCar(int procedureID, string barcode, SUserInfo sUserInfo)
  2758. {
  2759. string errMsg = "";
  2760. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  2761. try
  2762. {
  2763. oracleTrConn.Connect();
  2764. OracleParameter[] paras = new OracleParameter[]{
  2765. new OracleParameter("in_barcode",OracleDbType.Varchar2,
  2766. barcode,ParameterDirection.Input),
  2767. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  2768. new OracleParameter("in_accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2769. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,200,null,ParameterDirection.Output),
  2770. new OracleParameter("out_goodscode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2771. new OracleParameter("out_goodsname",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2772. new OracleParameter("out_kilncarcode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  2773. };
  2774. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckCancelLoadCar", paras);
  2775. errMsg = paras[3].Value.ToString() == "null" ? "" : paras[3].Value.ToString().Replace("\\n\\r", "\n\r");
  2776. if (string.IsNullOrEmpty(errMsg))
  2777. {
  2778. #region 先查询生产数据最后2条
  2779. // string sqlString = @"select ProductionDataID,
  2780. // ProcedureID,
  2781. // ProcedureModel,
  2782. // ModelType,
  2783. // ReworkProcedureID,
  2784. // UserID
  2785. // from (select ProductionDataID,
  2786. // ProcedureID,
  2787. // ProcedureModel,
  2788. // ModelType,
  2789. // ReworkProcedureID,
  2790. // UserID
  2791. // from Tp_Pm_ProductiondataIn
  2792. // where barcode = :barcode
  2793. // and valueflag = 1
  2794. // order by ProductionDataID desc)
  2795. // where rownum <= 2";
  2796. string sqlString = @"select ProductionDataID,
  2797. ProcedureID,
  2798. ProcedureName,
  2799. ProcedureModel,
  2800. ModelType,
  2801. ReworkProcedureID,
  2802. UserID,
  2803. logoid,
  2804. KILNID ,
  2805. KILNCODE,
  2806. KILNNAME,
  2807. KilnCarID,
  2808. KILNCARCODE,
  2809. KILNCARNAME,
  2810. KILNCARBATCHNO,
  2811. KILNCARPOSITION,
  2812. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  2813. from (select ProductionDataID,
  2814. ProcedureID,
  2815. ProcedureName,
  2816. ProcedureModel,
  2817. ModelType,
  2818. ReworkProcedureID,
  2819. UserID,
  2820. logoid,
  2821. KILNID ,
  2822. KILNCODE,
  2823. KILNNAME,
  2824. KilnCarID,
  2825. KILNCARCODE,
  2826. KILNCARNAME,
  2827. KILNCARBATCHNO,
  2828. KILNCARPOSITION
  2829. from Tp_Pm_ProductiondataIn
  2830. where barcode = :barcode
  2831. and valueflag = 1 and ModelType<>1 and ModelType<>8
  2832. order by ProductionDataID desc) t
  2833. where rownum <= 1";
  2834. paras = new OracleParameter[]{
  2835. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2836. };
  2837. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  2838. if (productionData == null
  2839. || productionData.Tables.Count == Constant.INT_IS_ZERO
  2840. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)//INT_IS_TWO
  2841. {
  2842. // 条码至少要有2次数据采集
  2843. errMsg = "条码没有登窑前数据";// Messages.MSG_PM_W016;
  2844. return errMsg;
  2845. }
  2846. #endregion
  2847. #region 回滚在产数据
  2848. // 重烧撤销装车要恢复到本烧窑车信息 modify by chenxy 2017-07-11 begin
  2849. // sqlString = @"update TP_PM_InProduction
  2850. // set FlowProcedureID = :flowProcedureID,
  2851. // ProcedureModel = :procedureModel,
  2852. // ProcedureID = :flowProcedureID,
  2853. // ModelType = :modelType,
  2854. // ReworkProcedureID = :reworkProcedureID,
  2855. // UserID = :userID,
  2856. // updateuserid = :updateuserid,
  2857. // --logoid = :logoid,
  2858. // KILNID = null,
  2859. // KILNCODE = null,
  2860. // KILNNAME = null,
  2861. // KilnCarID = null,
  2862. // KILNCARCODE = null,
  2863. // KILNCARNAME = null,
  2864. // KILNCARBATCHNO = null,
  2865. // KILNCARPOSITION = null
  2866. // where barcode = :barcode";
  2867. sqlString = "UPDATE TP_PM_INPRODUCTION\n" +
  2868. " SET FLOWPROCEDUREID = :FLOWPROCEDUREID,\n" +
  2869. " PROCEDUREMODEL = :PROCEDUREMODEL,\n" +
  2870. " PROCEDUREID = :PROCEDUREID,\n" +
  2871. " MODELTYPE = :MODELTYPE,\n" +
  2872. " REWORKPROCEDUREID = :REWORKPROCEDUREID,\n" +
  2873. " USERID = :USERID,\n" +
  2874. " UPDATEUSERID = :UPDATEUSERID,\n" +
  2875. " KILNID = :KILNID,\n" +
  2876. " KILNCODE = :KILNCODE,\n" +
  2877. " KILNNAME = :KILNNAME,\n" +
  2878. " KILNCARID = :KILNCARID,\n" +
  2879. " KILNCARCODE = :KILNCARCODE,\n" +
  2880. " KILNCARNAME = :KILNCARNAME,\n" +
  2881. " KILNCARBATCHNO = :KILNCARBATCHNO,\n" +
  2882. " KILNCARPOSITION = :KILNCARPOSITION,\n" +
  2883. " PRODUCTIONDATAID = :PRODUCTIONDATAID,\n" +
  2884. " PROCEDURETIME =\n" +
  2885. " (SELECT CREATETIME\n" +
  2886. " FROM TP_PM_PRODUCTIONDATAIN\n" +
  2887. " WHERE PRODUCTIONDATAID = :PRODUCTIONDATAID)\n" +
  2888. " WHERE BARCODE = :BARCODE";
  2889. object pid = productionData.Tables[0].Rows[0]["p8id"];
  2890. if (pid == null || pid == DBNull.Value)
  2891. {
  2892. pid = productionData.Tables[0].Rows[0]["ProcedureID"];
  2893. }
  2894. paras = new OracleParameter[]{
  2895. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  2896. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//1--->0
  2897. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  2898. pid,ParameterDirection.Input),
  2899. new OracleParameter(":procedureModel",OracleDbType.Int32,
  2900. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  2901. new OracleParameter(":modelType",OracleDbType.Int32,
  2902. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  2903. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  2904. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  2905. new OracleParameter(":userID",OracleDbType.Int32,
  2906. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  2907. new OracleParameter(":KILNID",OracleDbType.Int32,
  2908. productionData.Tables[0].Rows[0]["KILNID"],ParameterDirection.Input),
  2909. new OracleParameter(":KILNCODE",OracleDbType.NVarchar2,
  2910. productionData.Tables[0].Rows[0]["KILNCODE"],ParameterDirection.Input),
  2911. new OracleParameter(":KILNNAME",OracleDbType.NVarchar2,
  2912. productionData.Tables[0].Rows[0]["KILNNAME"],ParameterDirection.Input),
  2913. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  2914. productionData.Tables[0].Rows[0]["KilnCarID"],ParameterDirection.Input),
  2915. new OracleParameter(":KILNCARCODE",OracleDbType.NVarchar2,
  2916. productionData.Tables[0].Rows[0]["KILNCARCODE"],ParameterDirection.Input),
  2917. new OracleParameter(":KILNCARNAME",OracleDbType.NVarchar2,
  2918. productionData.Tables[0].Rows[0]["KILNCARNAME"],ParameterDirection.Input),
  2919. new OracleParameter(":KILNCARBATCHNO",OracleDbType.NVarchar2,
  2920. productionData.Tables[0].Rows[0]["KILNCARBATCHNO"],ParameterDirection.Input),
  2921. new OracleParameter(":KILNCARPOSITION",OracleDbType.Int32,
  2922. productionData.Tables[0].Rows[0]["KILNCARPOSITION"],ParameterDirection.Input),
  2923. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2924. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  2925. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  2926. productionData.Tables[0].Rows[0]["ProductionDataID"],ParameterDirection.Input)
  2927. //new OracleParameter(":logoid",OracleDbType.Int32,
  2928. // productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  2929. };
  2930. // 重烧撤销装车要恢复到本烧窑车信息 modify by chenxy 2017-07-11 end
  2931. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2932. if (rutenRows == Constant.INT_IS_ZERO)
  2933. {
  2934. // 保存失败
  2935. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2936. return errMsg;
  2937. }
  2938. #endregion
  2939. #region 删除生产者和最后一条生产数据
  2940. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  2941. //paras = new OracleParameter[]{
  2942. // new OracleParameter(":productionDataID",OracleDbType.Int32,
  2943. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  2944. //};
  2945. //rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2946. //if (rutenRows == Constant.INT_IS_ZERO)
  2947. //{
  2948. // // 保存失败
  2949. // errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2950. // return errMsg;
  2951. //}
  2952. //modify 2015/05/13 wangx GoodsLevelTypeID=11 撤销装车
  2953. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=11 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  2954. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  2955. int? GoodsLevelID = null;
  2956. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  2957. {
  2958. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  2959. }
  2960. //modify end
  2961. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  2962. if (GoodsLevelID != null)
  2963. {
  2964. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  2965. sqlString += ",GoodsLevelTypeID=11";
  2966. }
  2967. //sqlString += " where ProductionDataID=:productionDataID";
  2968. //新添加的 begin
  2969. paras = new OracleParameter[]{
  2970. new OracleParameter(":productionDataID",OracleDbType.Int32,
  2971. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  2972. new OracleParameter(":barcode",OracleDbType.Varchar2,
  2973. barcode,ParameterDirection.Input),
  2974. };
  2975. //新添加的 end
  2976. // 干补 数据不能撤销
  2977. //sqlString += " where ProductionDataID>:productionDataID and barcode=:barcode";
  2978. sqlString += " where ProductionDataID>:productionDataID and barcode=:barcode and ModelType=1 and valueflag='1'";
  2979. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2980. if (rutenRows == Constant.INT_IS_ZERO)
  2981. {
  2982. // 保存失败
  2983. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2984. return errMsg;
  2985. }
  2986. #endregion
  2987. #region 删除窑车产品
  2988. sqlString = "SELECT KILNCARID, kilncarbatchno from TP_PM_KilnCarGoods where BarCode=:barCode";
  2989. paras = new OracleParameter[]{
  2990. new OracleParameter(":barCode",OracleDbType.Varchar2,
  2991. barcode,ParameterDirection.Input),
  2992. };
  2993. DataTable kilnCar = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  2994. if (kilnCar == null || kilnCar.Rows.Count == 0)
  2995. {
  2996. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2997. return errMsg;
  2998. }
  2999. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  3000. paras = new OracleParameter[]{
  3001. new OracleParameter(":barCode",OracleDbType.Varchar2,
  3002. barcode,ParameterDirection.Input),
  3003. };
  3004. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3005. if (rutenRows == Constant.INT_IS_ZERO)
  3006. {
  3007. // 保存失败
  3008. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3009. return errMsg;
  3010. }
  3011. #endregion
  3012. #region 撤销窑车上最后一个产品
  3013. // 撤销窑车上最后一个产品后,删除窑车装车记录 add by chenxy 2017-06-06 begin
  3014. sqlString = "select count(*) from TP_PM_KilnCarGoods where KILNCARID = :KILNCARID";
  3015. paras = new OracleParameter[]{
  3016. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3017. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3018. };
  3019. string goodsCount = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  3020. if (string.IsNullOrWhiteSpace(goodsCount) || "0" == goodsCount)
  3021. {
  3022. // 撤销窑车上最后一个产品后,删除窑车装车记录(窑车生产数据)
  3023. sqlString = "UPDATE tp_pm_kilncardata kcd SET kcd.valueflag = '0' WHERE kcd.modeltype = 1 and kcd.kilncarbatchno = '" + kilnCar.Rows[0]["kilncarbatchno"] + "'";
  3024. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3025. // 最后一条窑车生产数据
  3026. sqlString = "select max(kilncardataid) kilncardataid from tp_pm_kilncardata where modeltype = 4 and valueflag = '1' and KILNCARID = :KILNCARID";
  3027. paras = new OracleParameter[]{
  3028. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3029. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3030. };
  3031. string kilncardataid = oracleTrConn.GetSqlResultToStr(sqlString, paras);
  3032. // 回退窑车状态
  3033. if (string.IsNullOrWhiteSpace(kilncardataid))
  3034. {
  3035. // 第一次装车被撤销
  3036. sqlString = "delete from TP_PM_Kilncarstatus where KILNCARID = :KILNCARID";
  3037. paras = new OracleParameter[]{
  3038. new OracleParameter(":KILNCARID",OracleDbType.Int32,
  3039. kilnCar.Rows[0]["KILNCARID"],ParameterDirection.Input),
  3040. };
  3041. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3042. }
  3043. else
  3044. {
  3045. sqlString = "UPDATE TP_PM_Kilncarstatus kcs\n" +
  3046. " SET (kcs.productionlineid,\n" +
  3047. " kcs.procedureid,\n" +
  3048. " kcs.procedurecode,\n" +
  3049. " kcs.procedurename,\n" +
  3050. " kcs.proceduremodel,\n" +
  3051. " kcs.modeltype,\n" +
  3052. " kcs.piecetype,\n" +
  3053. " kcs.kilncarstatus,\n" +
  3054. " kcs.loadingtime,\n" +
  3055. " kcs.intokilntime,\n" +
  3056. " kcs.outkilntime,\n" +
  3057. " kcs.unloadingtime,\n" +
  3058. " kcs.kilncarbatchno) =\n" +
  3059. " (SELECT kcd.productionlineid\n" +
  3060. " ,kcd.procedureid\n" +
  3061. " ,kcd.procedurecode\n" +
  3062. " ,kcd.procedurename\n" +
  3063. " ,kcd.proceduremodel\n" +
  3064. " ,kcd.modeltype\n" +
  3065. " ,kcd.piecetype\n" +
  3066. " ,kcd.kilncarstatus\n" +
  3067. " ,kcd.loadingtime\n" +
  3068. " ,kcd.intokilntime\n" +
  3069. " ,kcd.outkilntime\n" +
  3070. " ,kcd.unloadingtime\n" +
  3071. " ,kcd.kilncarbatchno\n" +
  3072. " FROM TP_PM_KILNCARDATA kcd\n" +
  3073. " WHERE kcd.kilncardataid = :kilncardataid)\n" +
  3074. " WHERE kcs.kilncarid = :kilncarid";
  3075. paras = new OracleParameter[]{
  3076. new OracleParameter(":kilncarid",OracleDbType.Int32,
  3077. kilnCar.Rows[0]["kilncarid"],ParameterDirection.Input),
  3078. new OracleParameter(":kilncardataid",OracleDbType.Int32,
  3079. kilncardataid,ParameterDirection.Input),
  3080. };
  3081. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  3082. }
  3083. }
  3084. // 撤销窑车上最后一个产品后,删除窑车装车记录 add by chenxy 2017-06-06 end
  3085. #endregion
  3086. }
  3087. // 没有错误 提交事务
  3088. if (string.IsNullOrEmpty(errMsg))
  3089. {
  3090. oracleTrConn.Commit();
  3091. }
  3092. }
  3093. catch (Exception ex)
  3094. {
  3095. oracleTrConn.Rollback();
  3096. throw ex;
  3097. }
  3098. finally
  3099. {
  3100. // 释放资源
  3101. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3102. {
  3103. oracleTrConn.Disconnect();
  3104. }
  3105. }
  3106. return errMsg;
  3107. }
  3108. /// <summary>
  3109. /// 保存半检测信息
  3110. /// </summary>
  3111. /// <param name="semiTestEntitys">半检实体类</param>
  3112. /// <param name="sUserInfo">用户基本信息</param>
  3113. /// <returns>string</returns>
  3114. public static string AddSemiTest(SemiTestEntity[] semiTestEntitys, SUserInfo sUserInfo)
  3115. {
  3116. string errMsg = "";
  3117. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3118. try
  3119. {
  3120. oracleTrConn.Connect();
  3121. foreach (SemiTestEntity semiTest in semiTestEntitys)
  3122. {
  3123. #region 添加半检数据
  3124. // 查询新插入的半检数据ID
  3125. string sql = "select SEQ_PM_SemiTest_SemiTestID.nextval from dual";
  3126. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3127. semiTest.SemiTestID = Convert.ToInt32(idStr);
  3128. errMsg = AddSemiTestInfo(oracleTrConn, semiTest, sUserInfo);
  3129. if (!string.IsNullOrEmpty(errMsg))
  3130. {
  3131. return errMsg;
  3132. }
  3133. //// 查询新插入的半检数据ID
  3134. //string sql = "select SEQ_PM_SemiTest_SemiTestID.Currval from dual";
  3135. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3136. errMsg = AddSemiTestStaff(oracleTrConn, Convert.ToInt32(idStr), semiTest.TestUserID);
  3137. if (!string.IsNullOrEmpty(errMsg))
  3138. {
  3139. return errMsg;
  3140. }
  3141. // 存在半检明细
  3142. if (semiTest.SemiTestDetails != null)
  3143. {
  3144. foreach (SemiTestDetailEntity semiTestDetail in semiTest.SemiTestDetails)
  3145. {
  3146. errMsg = AddSemiTestDetails(oracleTrConn, semiTestDetail, sUserInfo, Convert.ToInt32(idStr), semiTest.TestDate);
  3147. if (!string.IsNullOrEmpty(errMsg))
  3148. {
  3149. return errMsg;
  3150. }
  3151. }
  3152. }
  3153. #endregion
  3154. }
  3155. // 没有错误 提交事务
  3156. if (string.IsNullOrEmpty(errMsg))
  3157. {
  3158. oracleTrConn.Commit();
  3159. }
  3160. }
  3161. catch (Exception ex)
  3162. {
  3163. oracleTrConn.Rollback();
  3164. throw ex;
  3165. }
  3166. finally
  3167. {
  3168. // 释放资源
  3169. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3170. {
  3171. oracleTrConn.Disconnect();
  3172. }
  3173. }
  3174. return errMsg;
  3175. }
  3176. /// <summary>
  3177. /// 添加半检数据
  3178. /// </summary>
  3179. /// <param name="oracleTrConn">数据连接事务</param>
  3180. /// <param name="semiTestEntity">半检实体类</param>
  3181. /// <param name="sUserInfo">用户基本信息</param>
  3182. /// <returns>string</returns>
  3183. private static string AddSemiTestInfo(IDBTransaction oracleTrConn, SemiTestEntity semiTestEntity, SUserInfo sUserInfo)
  3184. {
  3185. string errMsg = "";
  3186. #region SQL
  3187. string sql = "insert into TP_PM_SemiTest"
  3188. + " (SemiTestID,"
  3189. + " TestUserID,"
  3190. + " TestDate,"
  3191. + " Remarks,"
  3192. + " AuditStatus,"
  3193. + " Auditor,"
  3194. + " AuditlDate,"
  3195. + " AccountID,"
  3196. + " ValueFlag,"
  3197. + " CreateUserID,"
  3198. + " UpdateUserID,"
  3199. + " SemiTestType"
  3200. + ")"
  3201. + " values"
  3202. + " (:SemiTestID,"
  3203. + " :TestUserID,"
  3204. + " :TestDate,"
  3205. + " :Remarks,"
  3206. + " :AuditStatus,"
  3207. + " :Auditor,"
  3208. + " :AuditlDate,"
  3209. + " :AccountID,"
  3210. + " :ValueFlag,"
  3211. + " :CreateUserID,"
  3212. + " :UpdateUserID,"
  3213. + " :SemiTestType"
  3214. + ")";
  3215. #endregion
  3216. #region OracleParameter
  3217. OracleParameter[] oracleParameters = new OracleParameter[] {
  3218. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestEntity.SemiTestID,ParameterDirection.Input),
  3219. new OracleParameter(":TestUserID",OracleDbType.Int32, semiTestEntity.TestUserID,ParameterDirection.Input),
  3220. new OracleParameter(":TestDate",OracleDbType.Date, semiTestEntity.TestDate,ParameterDirection.Input),
  3221. new OracleParameter(":Remarks",OracleDbType.Varchar2, semiTestEntity.Remarks,ParameterDirection.Input),
  3222. new OracleParameter(":AuditStatus",OracleDbType.Int32, semiTestEntity.AuditStatus,ParameterDirection.Input),
  3223. new OracleParameter(":Auditor",OracleDbType.Int32, semiTestEntity.Auditor,ParameterDirection.Input),
  3224. new OracleParameter(":AuditlDate",OracleDbType.Date, semiTestEntity.AuditlDate,ParameterDirection.Input),
  3225. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3226. new OracleParameter(":ValueFlag",OracleDbType.Int32, semiTestEntity.ValueFlag,ParameterDirection.Input),
  3227. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3228. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3229. new OracleParameter(":SemiTestType",OracleDbType.Int32, semiTestEntity.SemiTestType,ParameterDirection.Input),
  3230. };
  3231. #endregion
  3232. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3233. // 保存失败
  3234. if (result != Constant.INT_IS_ONE)
  3235. {
  3236. return string.Format(Messages.MSG_CMN_W001, "半检", "保存");
  3237. }
  3238. return errMsg;
  3239. }
  3240. /// <summary>
  3241. /// 保存半检员工
  3242. /// </summary>
  3243. /// <param name="oracleTrConn">数据连接事务</param>
  3244. /// <param name="SemiTestID">半检数据ID</param>
  3245. /// <param name="UserID">工号ID</param>
  3246. /// <returns>string</returns>
  3247. private static string AddSemiTestStaff(IDBTransaction oracleTrConn, int SemiTestID, int UserID)
  3248. {
  3249. string errMsg = "";
  3250. #region SQL
  3251. string sql = @"insert into TP_PM_SemiTestStaff(SemiTestID,StaffID)
  3252. select :SemiTestID ,StaffID from TP_MST_UserStaff where UserID=:UserID";
  3253. #endregion
  3254. #region OracleParameter
  3255. OracleParameter[] oracleParameters = new OracleParameter[] {
  3256. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3257. new OracleParameter(":UserID",OracleDbType.Int32, UserID,ParameterDirection.Input),
  3258. };
  3259. #endregion
  3260. int resultCount = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3261. // 失败
  3262. if (resultCount == Constant.INT_IS_ZERO)
  3263. {
  3264. return string.Format(Messages.MSG_CMN_W001, "半检员工", "保存");
  3265. }
  3266. return errMsg;
  3267. }
  3268. /// <summary>
  3269. /// 添加半检数据明细
  3270. /// </summary>
  3271. /// <param name="oracleTrConn">数据连接事务</param>
  3272. /// <param name="semiTestDetail">半检明细实体类</param>
  3273. /// <param name="sUserInfo">用户基本信息</param>
  3274. /// <param name="SemiTestID">半检ID</param>
  3275. /// <param name="SemiTestDate">检验日期</param>
  3276. /// <returns>string</returns>
  3277. private static string AddSemiTestDetails(IDBTransaction oracleTrConn, SemiTestDetailEntity semiTestDetail, SUserInfo sUserInfo, int SemiTestID, DateTime SemiTestDate)
  3278. {
  3279. string errMsg = "";
  3280. #region SQL
  3281. // 查询新插入的半检数据ID
  3282. string sqlView = "select SEQ_PM_SemiTestDetail_ID.nextval from dual";
  3283. string idStr = oracleTrConn.GetSqlResultToStr(sqlView);
  3284. string sql = "insert into TP_PM_SemiTestDetail"
  3285. + " (SemiTestDetailID,"
  3286. + " SemiTestID,"
  3287. + " SemiTestDate,"
  3288. + " GroutingUserID,"
  3289. + " GoodsID,"
  3290. + " GoodsCode,"
  3291. + " GoodsName,"
  3292. + " TestNum,"
  3293. + " ScrapNum,"
  3294. + " ScrapReason,"
  3295. + " Feedback,"
  3296. + " AccountID,"
  3297. + " ValueFlag,"
  3298. + " CreateUserID,"
  3299. + " UpdateUserID"
  3300. + ")"
  3301. + " values"
  3302. + " (:SemiTestDetailID,"
  3303. + " :SemiTestID,"
  3304. + " :SemiTestDate,"
  3305. + " :GroutingUserID,"
  3306. + " :GoodsID,"
  3307. + " :GoodsCode,"
  3308. + " :GoodsName,"
  3309. + " :TestNum,"
  3310. + " :ScrapNum,"
  3311. + " :ScrapReason,"
  3312. + " :Feedback,"
  3313. + " :AccountID,"
  3314. + " 1,"
  3315. + " :CreateUserID,"
  3316. + " :UpdateUserID"
  3317. + ")";
  3318. #endregion
  3319. #region OracleParameter
  3320. OracleParameter[] oracleParameters = new OracleParameter[] {
  3321. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, Convert.ToInt32(idStr),ParameterDirection.Input),
  3322. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3323. new OracleParameter(":SemiTestDate",OracleDbType.Date, SemiTestDate,ParameterDirection.Input),
  3324. new OracleParameter(":GroutingUserID",OracleDbType.Int32, semiTestDetail.GroutingUserID,ParameterDirection.Input),
  3325. new OracleParameter(":GoodsID",OracleDbType.Int32, semiTestDetail.GoodsID,ParameterDirection.Input),
  3326. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, semiTestDetail.GoodsCode,ParameterDirection.Input),
  3327. new OracleParameter(":GoodsName",OracleDbType.Varchar2, semiTestDetail.GoodsName,ParameterDirection.Input),
  3328. new OracleParameter(":TestNum",OracleDbType.Decimal, semiTestDetail.TestNum,ParameterDirection.Input),
  3329. new OracleParameter(":ScrapNum",OracleDbType.Decimal, semiTestDetail.ScrapNum,ParameterDirection.Input),
  3330. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3331. new OracleParameter(":ScrapReason",OracleDbType.Varchar2, semiTestDetail.ScrapReason,ParameterDirection.Input),
  3332. new OracleParameter(":Feedback",OracleDbType.Varchar2, semiTestDetail.Feedback,ParameterDirection.Input),
  3333. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3334. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3335. };
  3336. #endregion
  3337. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3338. // 保存失败
  3339. if (result != Constant.INT_IS_ONE)
  3340. {
  3341. return string.Format(Messages.MSG_CMN_W001, "半检明细", "保存");
  3342. }
  3343. errMsg = AddSemiTestGStaff(oracleTrConn, Convert.ToInt32(idStr), Convert.ToInt32(semiTestDetail.GroutingUserID));
  3344. if (!string.IsNullOrEmpty(errMsg))
  3345. {
  3346. return errMsg;
  3347. }
  3348. // 存在半检明细
  3349. if (semiTestDetail.SemiTestDefects != null)
  3350. {
  3351. foreach (SemiTestDefectEntity semiTestDefect in semiTestDetail.SemiTestDefects)
  3352. {
  3353. errMsg = AddSemiTestDefect(oracleTrConn, semiTestDefect, sUserInfo, SemiTestID, Convert.ToInt32(idStr), SemiTestDate);
  3354. if (!string.IsNullOrEmpty(errMsg))
  3355. {
  3356. return errMsg;
  3357. }
  3358. }
  3359. }
  3360. return null;
  3361. }
  3362. /// <summary>
  3363. /// 保存半检成型员工
  3364. /// </summary>
  3365. /// <param name="oracleTrConn">数据连接事务</param>
  3366. /// <param name="SemiTestID">半检ID</param>
  3367. /// <param name="UserID">成型工号</param>
  3368. /// <returns>string</returns>
  3369. private static string AddSemiTestGStaff(IDBTransaction oracleTrConn, int SemiTestDetailID, int UserID)
  3370. {
  3371. string errMsg = "";
  3372. #region SQL
  3373. string sql = @"insert into TP_PM_SemiTestGStaff(SemiTestDetailID,StaffID)
  3374. select :SemiTestDetailID ,StaffID from TP_MST_UserStaff where UserID=:UserID";
  3375. #endregion
  3376. #region OracleParameter
  3377. OracleParameter[] oracleParameters = new OracleParameter[] {
  3378. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, SemiTestDetailID,ParameterDirection.Input),
  3379. new OracleParameter(":UserID",OracleDbType.Int32, UserID,ParameterDirection.Input),
  3380. };
  3381. #endregion
  3382. int resultCount = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3383. // 失败
  3384. if (resultCount == Constant.INT_IS_ZERO)
  3385. {
  3386. return string.Format(Messages.MSG_CMN_W001, "半检成型员工", "保存");
  3387. }
  3388. return errMsg;
  3389. }
  3390. /// <summary>
  3391. /// 添加半检缺陷
  3392. /// </summary>
  3393. /// <param name="oracleTrConn">数据连接事务</param>
  3394. /// <param name="semiTestDefect">半检缺陷</param>
  3395. /// <param name="sUserInfo">用户基本信息</param>
  3396. /// <param name="SemiTestID"><半检ID/param>
  3397. /// <param name="SemiTestDetailID">半检明细ID</param>
  3398. /// <param name="SemiTestDate">检验日期</param>
  3399. /// <returns>string</returns>
  3400. private static string AddSemiTestDefect(IDBTransaction oracleTrConn, SemiTestDefectEntity semiTestDefect, SUserInfo sUserInfo, int SemiTestID, int SemiTestDetailID, DateTime SemiTestDate)
  3401. {
  3402. string errMsg = "";
  3403. #region SQL
  3404. string sql = "insert into TP_PM_SemiTestDefect"
  3405. + " ("
  3406. + " SemiTestDetailID,"
  3407. + " SemiTestID,"
  3408. + " SemiTestDate,"
  3409. + " DefectID,"
  3410. + " DefectPositionID,"
  3411. + " DefectNum,"
  3412. + " AccountID,"
  3413. + " ValueFlag,"
  3414. + " CreateUserID,"
  3415. + " UpdateUserID"
  3416. + ")"
  3417. + " values"
  3418. + " ("
  3419. + " :SemiTestDetailID,"
  3420. + " :SemiTestID,"
  3421. + " :SemiTestDate,"
  3422. + " :DefectID,"
  3423. + " :DefectPositionID,"
  3424. + " :DefectNum,"
  3425. + " :AccountID,"
  3426. + " 1,"
  3427. + " :CreateUserID,"
  3428. + " :UpdateUserID"
  3429. + ")";
  3430. #endregion
  3431. #region OracleParameter
  3432. OracleParameter[] oracleParameters = new OracleParameter[] {
  3433. new OracleParameter(":SemiTestDetailID",OracleDbType.Int32, SemiTestDetailID,ParameterDirection.Input),
  3434. new OracleParameter(":SemiTestID",OracleDbType.Int32, SemiTestID,ParameterDirection.Input),
  3435. new OracleParameter(":SemiTestDate",OracleDbType.Date, SemiTestDate,ParameterDirection.Input),
  3436. new OracleParameter(":DefectID",OracleDbType.Int32, semiTestDefect.DefectID,ParameterDirection.Input),
  3437. new OracleParameter(":DefectPositionID",OracleDbType.Int32, semiTestDefect.DefectPositionID,ParameterDirection.Input),
  3438. new OracleParameter(":DefectNum",OracleDbType.Int32, semiTestDefect.DefectNum,ParameterDirection.Input),
  3439. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3440. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3441. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3442. };
  3443. #endregion
  3444. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  3445. // 保存失败
  3446. if (result != Constant.INT_IS_ONE)
  3447. {
  3448. return string.Format(Messages.MSG_CMN_W001, "半检缺陷", "保存");
  3449. }
  3450. return errMsg;
  3451. }
  3452. /// <summary>
  3453. /// 编辑后禁用半检数据
  3454. /// </summary>
  3455. /// <param name="semiTestID">半检数据ID</param>
  3456. /// <returns>int</returns>
  3457. public static int DeleteSemiTestDataByID(int semiTestID)
  3458. {
  3459. int deleteRow = 0;
  3460. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3461. try
  3462. {
  3463. oracleTrConn.Connect();
  3464. string sqlString1 = @" update TP_PM_SemiTestDefect set ValueFlag=0 where SemiTestID=:SemiTestID";
  3465. string sqlString2 = @" update TP_PM_SemiTestDetail set ValueFlag=0 where SemiTestID=:SemiTestID";
  3466. string sqlString3 = @" update TP_PM_SemiTest set ValueFlag=0 where SemiTestID=:SemiTestID";
  3467. OracleParameter[] paras = new OracleParameter[]{
  3468. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  3469. };
  3470. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString1, paras);
  3471. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  3472. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  3473. // 没有错误 提交事务
  3474. if (deleteRow > 0)
  3475. {
  3476. oracleTrConn.Commit();
  3477. }
  3478. else
  3479. {
  3480. oracleTrConn.Rollback();
  3481. }
  3482. }
  3483. catch (Exception ex)
  3484. {
  3485. oracleTrConn.Rollback();
  3486. throw ex;
  3487. }
  3488. finally
  3489. {
  3490. // 释放资源
  3491. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3492. {
  3493. oracleTrConn.Disconnect();
  3494. }
  3495. }
  3496. return deleteRow;
  3497. }
  3498. /// <summary>
  3499. /// 验证时间戳
  3500. /// </summary>
  3501. /// <param name="semiTestID">半检ID</param>
  3502. /// <param name="opTimeStamp">时间戳</param>
  3503. /// <returns>int</returns>
  3504. public static int ValidateOPTimeStamp(int semiTestID, DateTime opTimeStamp)
  3505. {
  3506. int Row = 0;
  3507. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3508. try
  3509. {
  3510. oracleTrConn.Connect();
  3511. string sql = "SELECT OPTimeStamp FROM TP_PM_SemiTest"
  3512. + " WHERE SemiTestID =:SemiTestID and OPTimeStamp = :OPTimeStamp";
  3513. OracleParameter[] paras = new OracleParameter[]{
  3514. new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input),
  3515. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, opTimeStamp, ParameterDirection.Input),
  3516. };
  3517. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  3518. if (returnDataset != null
  3519. && returnDataset.Tables[0].Rows.Count == 0)
  3520. {
  3521. oracleTrConn.Commit();
  3522. oracleTrConn.Disconnect();
  3523. return -1;
  3524. }
  3525. oracleTrConn.Commit();
  3526. }
  3527. catch (Exception ex)
  3528. {
  3529. oracleTrConn.Rollback();
  3530. throw ex;
  3531. }
  3532. finally
  3533. {
  3534. // 释放资源
  3535. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3536. {
  3537. oracleTrConn.Disconnect();
  3538. }
  3539. }
  3540. return Row;
  3541. }
  3542. /// <summary>
  3543. /// 更新审核状态
  3544. /// </summary>
  3545. /// <param name="semiTestID">半检ID</param>
  3546. /// <param name="auditStatus">审核状态</param>
  3547. /// <param name="sUserInfo">用户基本信息</param>
  3548. /// <returns>int</returns>
  3549. public static int UpdateSemiTestByID(int semiTestID, int auditStatus, SUserInfo sUserInfo)
  3550. {
  3551. int UpdateRow = 0;
  3552. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3553. try
  3554. {
  3555. oracleTrConn.Connect();
  3556. string sql = "update TP_PM_SemiTest set AuditStatus=:AuditStatus,Auditor=:Auditor,AuditlDate=sysdate "
  3557. + " WHERE SemiTestID =:SemiTestID";
  3558. OracleParameter[] paras = new OracleParameter[]{
  3559. new OracleParameter(":AuditStatus",OracleDbType.Int32, auditStatus,ParameterDirection.Input),
  3560. new OracleParameter(":semiTestID", OracleDbType.Int32, semiTestID, ParameterDirection.Input),
  3561. new OracleParameter(":Auditor", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3562. };
  3563. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  3564. if (UpdateRow > 0)
  3565. {
  3566. oracleTrConn.Commit();
  3567. }
  3568. else
  3569. {
  3570. oracleTrConn.Rollback();
  3571. }
  3572. }
  3573. catch (Exception ex)
  3574. {
  3575. oracleTrConn.Rollback();
  3576. throw ex;
  3577. }
  3578. finally
  3579. {
  3580. // 释放资源
  3581. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3582. {
  3583. oracleTrConn.Disconnect();
  3584. }
  3585. }
  3586. return UpdateRow;
  3587. }
  3588. #region 撤销产品报损
  3589. /// <summary>
  3590. /// 撤销产品报损
  3591. /// </summary>
  3592. /// <param name="barcode">产品条码</param>
  3593. /// <param name="sUserInfo"></param>
  3594. /// <returns></returns>
  3595. public static ServiceResultEntity AddCancelScrapProduction(string barcode, SUserInfo sUserInfo)
  3596. {
  3597. ServiceResultEntity entity = new ServiceResultEntity();
  3598. int returnRows = 0;
  3599. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  3600. try
  3601. {
  3602. oracleTrConn.Connect();
  3603. DateTime? auditDate = null;
  3604. int ScrapProductID = 0;
  3605. //string sql = "select ScrapProductID,AuditDate from TP_PM_ScrapProduct where barcode=:barcode and valueflag=1 and AuditStatus=1 and goodsleveltypeid=8";
  3606. string sql = @"select ScrapProductID,AuditDate,recyclingflag from TP_PM_ScrapProduct
  3607. where barcode=:barcode and valueflag=1 and AuditStatus=1
  3608. and goodsleveltypeid=8 and
  3609. createtime=(select max(createtime) from TP_PM_ScrapProduct where barcode=:barcode and valueflag=1 and AuditStatus=1 and goodsleveltypeid=8)";
  3610. OracleParameter[] paras = new OracleParameter[]{
  3611. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3612. };
  3613. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  3614. string sqlxie = @"SELECT 1 FROM TP_PM_INPRODUCTION WHERE BARCODE=:barcode AND PROCEDUREID=14";
  3615. OracleParameter[] parasxie = new OracleParameter[]{
  3616. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3617. };
  3618. string xy = oracleTrConn.GetSqlResultToStr(sqlxie, parasxie);
  3619. if (ds != null && ds.Tables[0].Rows.Count == 0)
  3620. {
  3621. //此产品没有损坯,不能撤销
  3622. returnRows = -1;
  3623. oracleTrConn.Rollback();
  3624. oracleTrConn.Disconnect();
  3625. entity.Result = returnRows;
  3626. return entity;
  3627. }
  3628. else
  3629. {
  3630. if (Convert.ToInt32(ds.Tables[0].Rows[0]["recyclingflag"]) > 0)
  3631. {
  3632. //已经回收不允许撤销
  3633. returnRows = -200;
  3634. oracleTrConn.Rollback();
  3635. oracleTrConn.Disconnect();
  3636. entity.Result = returnRows;
  3637. entity.Message = "此产品已经回收,不能撤销";
  3638. return entity;
  3639. }
  3640. if (xy != "" && xy != null) {
  3641. //已经回收不允许撤销
  3642. returnRows = -200;
  3643. oracleTrConn.Rollback();
  3644. oracleTrConn.Disconnect();
  3645. entity.Result = returnRows;
  3646. entity.Message = "此产品当前在卸窑工序,不能撤销";
  3647. return entity;
  3648. }
  3649. ScrapProductID = Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapProductID"]);
  3650. auditDate = Convert.ToDateTime(ds.Tables[0].Rows[0]["auditDate"]);
  3651. }
  3652. #region 是否启用损坯撤销限制天数
  3653. if (auditDate != null)
  3654. {
  3655. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  3656. paras = new OracleParameter[] {
  3657. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  3658. Constant.SettingType.S_PM_006.ToString(),ParameterDirection.Input),
  3659. new OracleParameter(":accountid",OracleDbType.Int32,
  3660. sUserInfo.AccountID,ParameterDirection.Input)
  3661. };
  3662. ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  3663. if (ds != null && ds.Tables[0].Rows.Count > 0)
  3664. {
  3665. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  3666. {
  3667. // 开启了限制
  3668. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(auditDate),
  3669. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_006.ToString(), sUserInfo);
  3670. if (Convert.ToInt32(resultEntity.Result) < 0)
  3671. {
  3672. //超过损坯撤销限制天数
  3673. returnRows = -200;
  3674. oracleTrConn.Rollback();
  3675. oracleTrConn.Disconnect();
  3676. entity.Result = returnRows;
  3677. entity.Message = resultEntity.Message;
  3678. return entity;
  3679. }
  3680. }
  3681. }
  3682. }
  3683. #endregion
  3684. //第二步,回收站中数据回到在产中。
  3685. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3686. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3687. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3688. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3689. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3690. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3691. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3692. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  3693. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  3694. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3695. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3696. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  3697. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3698. )
  3699. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3700. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3701. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3702. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3703. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3704. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3705. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3706. CREATEUSERID, UPDATETIME, :UpdateUserID,
  3707. ISREFIRE, null, null, DEFECTFLAG,
  3708. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3709. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3710. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  3711. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3712. from TP_PM_InProductionTrash where barcode=:barcode ";
  3713. OracleParameter[] InProductparas = new OracleParameter[]{
  3714. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3715. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3716. };
  3717. returnRows += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  3718. //清洗数据后导致在产数据确实,后补数据 冯林勇 2024-02-19 add
  3719. string sqlProduction = "select * from TP_PM_InProduction where barcode=:barcode ";
  3720. OracleParameter[] sqlProductionparam = new OracleParameter[] {
  3721. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  3722. };
  3723. DataSet dsProduction = oracleTrConn.GetSqlResultToDs(sqlProduction, sqlProductionparam);
  3724. if (dsProduction == null && dsProduction.Tables[0].Rows.Count == 0)
  3725. {
  3726. sqlInsInProdString = @"
  3727. insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  3728. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  3729. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  3730. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  3731. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  3732. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  3733. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  3734. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  3735. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  3736. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  3737. KILNID, KILNCODE, KILNNAME, KILNCARID,
  3738. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  3739. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  3740. )
  3741. SELECT
  3742. S.BARCODE
  3743. ,S.PRODUCTIONLINEID
  3744. ,S.PRODUCTIONLINECODE
  3745. ,S.PRODUCTIONLINENAME
  3746. ,PDT.PROCEDUREMODEL
  3747. ,PDT.MODELTYPE
  3748. ,NULL
  3749. ,0
  3750. ,S.GOODSID
  3751. ,S.GOODSCODE
  3752. ,S.GOODSNAME
  3753. ,PDT.USERID
  3754. ,S.GROUTINGDAILYID
  3755. ,S.GROUTINGDAILYDETAILID
  3756. ,S.GROUTINGDATE
  3757. ,S.GROUTINGLINEID
  3758. ,S.GROUTINGLINECODE
  3759. ,S.GROUTINGLINENAME
  3760. ,S.GMOULDTYPEID
  3761. ,PDT.CANMANYTIMES
  3762. ,S.GROUTINGLINEDETAILID
  3763. ,S.GROUTINGMOULDCODE
  3764. ,S.MOULDCODE
  3765. ,''
  3766. ,1
  3767. ,1
  3768. ,PDO.CREATETIME
  3769. ,PDO.CREATEUSERID
  3770. ,PDT.UPDATETIME
  3771. ,:UpdateUserID
  3772. ,0
  3773. ,''
  3774. ,1
  3775. ,1
  3776. ,DT.USERID
  3777. ,DT.USERCODE
  3778. ,DT.GROUTINGCOUNT
  3779. ,S.KILNID
  3780. ,S.KILNCODE
  3781. ,S.KILNNAME
  3782. ,S.KILNCARID
  3783. ,S.KILNCARCODE
  3784. ,S.KILNCARNAME
  3785. ,S.KILNCARBATCHNO
  3786. ,S.KILNCARPOSITION
  3787. ,S.SPECIALREPAIRFLAG
  3788. ,PDT.PROCEDUREID
  3789. ,PDT.CREATETIME
  3790. ,PDT.PROCEDUREID
  3791. ,PDT.CREATETIME
  3792. ,PDT.PRODUCTIONDATAID
  3793. ,PDT.LOGOID
  3794. ,PDT.ISREWORKED
  3795. ,NULL
  3796. FROM
  3797. TP_PM_SCRAPPRODUCT S
  3798. INNER JOIN TP_PM_PRODUCTIONDATA PDO ON S.BARCODE = PDO.BARCODE AND PDO.MODELTYPE = 5
  3799. INNER JOIN (SELECT * FROM TP_PM_PRODUCTIONDATA A WHERE A.BARCODE =:barcode ORDER BY A.CREATETIME DESC) PDT ON S.BARCODE = PDT.BARCODE
  3800. INNER JOIN TP_PM_GROUTINGDAILYDETAIL DT ON S.BARCODE = DT.BARCODE
  3801. WHERE S.BARCODE = :barcode
  3802. and ROWNUM < 2";
  3803. InProductparas = new OracleParameter[]{
  3804. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3805. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  3806. };
  3807. returnRows += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  3808. }
  3809. //清洗数据后导致在产数据确实,后补数据 冯林勇 2024-02-19 add
  3810. //第三步,删除回收站中的条码
  3811. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  3812. OracleParameter[] TrashProductparas = new OracleParameter[]{
  3813. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  3814. };
  3815. returnRows += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  3816. //第四步,停用对应报损产品
  3817. //按条码批量停用对应报损产品 add 张忠帅 2023/1/29
  3818. string sqlString = "update TP_PM_ScrapProduct set valueflag=0 where barcode=:barcode ";
  3819. OracleParameter[] parasScrapProduct = new OracleParameter[]{
  3820. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  3821. };
  3822. returnRows += oracleTrConn.ExecuteNonQuery(sqlString, parasScrapProduct);
  3823. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  3824. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  3825. OracleParameter[] Paras = new OracleParameter[] {
  3826. new OracleParameter(":barcode",OracleDbType.Varchar2,
  3827. barcode,ParameterDirection.Input)
  3828. };
  3829. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  3830. if (ds.Tables[0].Rows.Count == 0)
  3831. {
  3832. // 2 生产数据恢复到在产生产数据
  3833. sql = @"insert into tp_pm_productiondatain
  3834. (
  3835. ProductionDataID,
  3836. BarCode,
  3837. CentralizedBatchNo,
  3838. ProductionLineID,
  3839. ProductionLineCode,
  3840. ProductionLineName,
  3841. ProcedureID,
  3842. ProcedureCode,
  3843. ProcedureName,
  3844. ProcedureModel,
  3845. ModelType,
  3846. PieceType,
  3847. IsReworked,
  3848. NodeType,
  3849. IsPublicBody,
  3850. IsReFire,
  3851. GoodsLevelID,
  3852. GoodsLevelTypeID,
  3853. SpecialRepairFlag,
  3854. OrganizationID,
  3855. GoodsID,
  3856. GoodsCode,
  3857. GoodsName,
  3858. UserID,
  3859. UserCode,
  3860. UserName,
  3861. ClassesSettingID,
  3862. KilnID,
  3863. KilnCode,
  3864. KilnName,
  3865. KilnCarID,
  3866. KilnCarCode,
  3867. KilnCarName,
  3868. KilnCarBatchNo,
  3869. KilnCarPosition,
  3870. ReworkProcedureID,
  3871. ReworkProcedureCode,
  3872. ReworkProcedureName,
  3873. GroutingDailyID,
  3874. GroutingDailyDetailID,
  3875. GroutingLineID,
  3876. GroutingLineCode,
  3877. GroutingLineName,
  3878. GMouldTypeID,
  3879. CanManyTimes,
  3880. GroutingLineDetailID,
  3881. GroutingDate,
  3882. GroutingMouldCode,
  3883. MouldCode,
  3884. GroutingUserID,
  3885. GroutingUserCode,
  3886. GroutingNum,
  3887. Remarks,
  3888. AccountDate,
  3889. SettlementFlag,
  3890. AccountID,
  3891. ValueFlag,
  3892. CreateTime,
  3893. CreateUserID,
  3894. UpdateTime,
  3895. UpdateUserID,
  3896. OPTimeStamp,
  3897. TriggerFlag,
  3898. logoid,
  3899. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  3900. )
  3901. select
  3902. ProductionDataID,
  3903. BarCode,
  3904. CentralizedBatchNo,
  3905. ProductionLineID,
  3906. ProductionLineCode,
  3907. ProductionLineName,
  3908. ProcedureID,
  3909. ProcedureCode,
  3910. ProcedureName,
  3911. ProcedureModel,
  3912. ModelType,
  3913. PieceType,
  3914. IsReworked,
  3915. NodeType,
  3916. IsPublicBody,
  3917. IsReFire,
  3918. GoodsLevelID,
  3919. GoodsLevelTypeID,
  3920. SpecialRepairFlag,
  3921. OrganizationID,
  3922. GoodsID,
  3923. GoodsCode,
  3924. GoodsName,
  3925. UserID,
  3926. UserCode,
  3927. UserName,
  3928. ClassesSettingID,
  3929. KilnID,
  3930. KilnCode,
  3931. KilnName,
  3932. KilnCarID,
  3933. KilnCarCode,
  3934. KilnCarName,
  3935. KilnCarBatchNo,
  3936. KilnCarPosition,
  3937. ReworkProcedureID,
  3938. ReworkProcedureCode,
  3939. ReworkProcedureName,
  3940. GroutingDailyID,
  3941. GroutingDailyDetailID,
  3942. GroutingLineID,
  3943. GroutingLineCode,
  3944. GroutingLineName,
  3945. GMouldTypeID,
  3946. CanManyTimes,
  3947. GroutingLineDetailID,
  3948. GroutingDate,
  3949. GroutingMouldCode,
  3950. MouldCode,
  3951. GroutingUserID,
  3952. GroutingUserCode,
  3953. GroutingNum,
  3954. Remarks,
  3955. AccountDate,
  3956. SettlementFlag,
  3957. AccountID,
  3958. ValueFlag,
  3959. CreateTime,
  3960. CreateUserID,
  3961. UpdateTime,
  3962. UpdateUserID,
  3963. OPTimeStamp,
  3964. 1,
  3965. logoid,
  3966. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  3967. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  3968. ";
  3969. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  3970. }
  3971. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  3972. if (returnRows <= 0)
  3973. {
  3974. oracleTrConn.Rollback();
  3975. oracleTrConn.Disconnect();
  3976. }
  3977. else
  3978. {
  3979. oracleTrConn.Commit();
  3980. oracleTrConn.Disconnect();
  3981. }
  3982. }
  3983. catch (Exception ex)
  3984. {
  3985. oracleTrConn.Rollback();
  3986. throw ex;
  3987. }
  3988. finally
  3989. {
  3990. // 释放资源
  3991. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  3992. {
  3993. oracleTrConn.Disconnect();
  3994. }
  3995. }
  3996. entity.Result = returnRows;
  3997. return entity;
  3998. }
  3999. #endregion
  4000. }
  4001. }