PMModuleLogicDAL-0.cs 1.1 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:PMModuleLogicDAL.cs
  5. * 2.功能描述:生产管理数据库访问类(插入、修改、删除)
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈冰 2014/09/17 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.Basics.Library;
  17. using Dongke.IBOSS.PRD.Service.DataModels;
  18. using Dongke.IBOSS.PRD.WCF.DataModels;
  19. using Oracle.DataAccess.Client;
  20. namespace Dongke.IBOSS.PRD.Service.PMModuleLogic
  21. {
  22. /// <summary>
  23. /// 生产管理数据库访问类(插入、修改、删除)
  24. /// </summary>
  25. public partial class PMModuleLogicDAL
  26. {
  27. #region 生产管理
  28. #region 计件
  29. /// <summary>
  30. /// 添加生产计件
  31. /// </summary>
  32. /// <param name="procedureID">工序ID</param>
  33. /// <param name="barcodeTable">条码信息</param>
  34. /// <param name="sUserInfo">用户基本信息</param>
  35. /// <returns>DataTable null:添加成功 不为空:错误消息</returns>
  36. /// <remarks>
  37. /// 陈冰 2014.09.18 新建
  38. /// </remarks>
  39. public static DataTable AddWorkPiece(int procedureID, DataTable barcodeTable, SUserInfo sUserInfo, out ProcedureEntity procedureInfo)
  40. {
  41. procedureInfo = null;
  42. // 实例返回的Talbe
  43. DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable();
  44. DataRow dr = dtBarCode.NewRow();
  45. string errMsg = "";
  46. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  47. oracleTrConn.IgnoreCase = false;
  48. try
  49. {
  50. DataSet dsReturnSinglePoint = null;
  51. oracleTrConn.Connect();
  52. int goodsID = Constant.INT_IS_ZERO;
  53. string goodsCode = null;
  54. string goodsName = null;
  55. string groutingUserCode = string.Empty;
  56. string logoCode = string.Empty;
  57. string logoName = string.Empty;
  58. string groutingdate = string.Empty;
  59. #region 查询工序信息
  60. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  61. procedureInfo = procedure;
  62. #endregion
  63. if (barcodeTable.Columns.Contains("IsPDA"))
  64. {
  65. if (procedure.ModelType != (int)Constant.ProcedureModelType.DeliverMud)
  66. {
  67. if (barcodeTable.Columns.Contains("IsPublicBody"))
  68. {
  69. barcodeTable.Columns.Remove("IsPublicBody");
  70. barcodeTable.Columns.Remove("IsPDA");
  71. }
  72. }
  73. }
  74. #region 防止多次重复提交,导致数据重复
  75. // 通过锁定表tp_pm_usedbarcode中的条码,防止多次重复提交,导致数据重复
  76. // TODO PDA还没有修改,暂时注释。PDA(集中采集画面)点击保存时如果不成功提示消息后,清除了当前画面中的数据。应该不清空数据,可以继续保存。
  77. //string barcodes = null;
  78. //foreach (DataRow item in barcodeTable.Rows)
  79. //{
  80. // if (barcodes != null)
  81. // {
  82. // barcodes += ",";
  83. // }
  84. // barcodes += item["Barcode"].ToString();
  85. //}
  86. //if (barcodes != null)
  87. //{
  88. // string sql = "select uc.barcode from tp_pm_usedbarcode uc where uc.barcode in (" + barcodes + ") for update nowait";
  89. // try
  90. // {
  91. // oracleTrConn.GetSqlResultToDt(sql);
  92. // }
  93. // catch (Exception ex)
  94. // {
  95. // // 判断异常类型
  96. // if (ex.Message.IndexOf("ORA-00054") > -1)
  97. // {
  98. // dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码正在被处理中,请稍后再操作。";
  99. // dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = "0";
  100. // dtBarCode.Rows.Add(dr);
  101. // return dtBarCode;
  102. // }
  103. // throw ex;
  104. // }
  105. //}
  106. #endregion
  107. #region 标准计件和坯库
  108. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  109. || procedure.ModelType == (int)Constant.ProcedureModelType.AdobeStock)
  110. {
  111. if (procedure.CollectType == 1)
  112. {
  113. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  114. out goodsID, out goodsCode, out goodsName, out groutingUserCode);
  115. }
  116. else
  117. {
  118. //单点
  119. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  120. if (dsReturnSinglePoint != null)
  121. {
  122. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  123. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  124. {
  125. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  126. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  127. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  128. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  129. barcodeTable.Rows[0]["barcode"] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  130. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  131. goodsID, goodsCode, goodsName, groutingUserCode, null);
  132. }
  133. }
  134. }
  135. }
  136. #endregion
  137. #region 交坯
  138. else if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)
  139. {
  140. if (procedure.CollectType == 1)
  141. {
  142. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  143. out goodsID, out goodsCode, out goodsName, out groutingUserCode);
  144. }
  145. else
  146. {
  147. int? GroutingDailyDetailID = null;
  148. dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  149. if (dsReturnSinglePoint != null)
  150. {
  151. //if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  152. //{
  153. // dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  154. //}
  155. //else
  156. //{
  157. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  158. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  159. {
  160. if (procedure.DeliverType == 0) //手动模式
  161. {
  162. if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  163. {
  164. if (barcodeTable.Rows[0]["IsPublicBody"].ToString() != "1")
  165. {
  166. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  167. }
  168. else
  169. {
  170. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  171. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  172. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  173. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  174. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  175. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID);
  176. if (!string.IsNullOrEmpty(errMsg))
  177. {
  178. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  179. }
  180. // wangx 2016-10-10 是否设置过期未交坯
  181. else
  182. {
  183. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  184. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  185. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  186. if (sqlSettingValue != "0")
  187. {
  188. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  189. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  190. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  191. if (Convert.ToInt32(resultEntity.Result) < 0)
  192. {
  193. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  194. errMsg = resultEntity.Message;
  195. }
  196. }
  197. // wangx end
  198. }
  199. }
  200. }
  201. else
  202. {
  203. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  204. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  205. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  206. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  207. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  208. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID);
  209. if (!string.IsNullOrEmpty(errMsg))
  210. {
  211. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  212. }
  213. // wangx 2016-10-10 是否设置过期未交坯
  214. else
  215. {
  216. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  217. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  218. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  219. if (sqlSettingValue != "0")
  220. {
  221. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  222. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  223. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  224. if (Convert.ToInt32(resultEntity.Result) < 0)
  225. {
  226. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  227. errMsg = resultEntity.Message;
  228. }
  229. }
  230. // wangx end
  231. }
  232. }
  233. }
  234. else //2016-07-05
  235. {
  236. // 自动模式 .查出型工号,单点采集前台并没有传值,更新barcodeTable表对应的字段
  237. string sql = @"select tp_mst_user.userid,tp_mst_user.usercode,tp_mst_user.username from TP_PM_GroutingDailyDetail
  238. left join tp_mst_user
  239. on TP_PM_GroutingDailyDetail.userid=tp_mst_user.userid
  240. where TP_PM_GroutingDailyDetail.barcode='" + barcodeTable.Rows[0]["barcode"].ToString() + "'";
  241. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  242. if (ds != null && ds.Tables[0].Rows.Count > 0)
  243. {
  244. barcodeTable.Rows[0]["UserCode"] = ds.Tables[0].Rows[0]["UserCode"];
  245. barcodeTable.Rows[0]["UserID"] = ds.Tables[0].Rows[0]["UserID"];
  246. barcodeTable.Rows[0]["UserName"] = ds.Tables[0].Rows[0]["UserName"];
  247. }
  248. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  249. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  250. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  251. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  252. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  253. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID);
  254. if (!string.IsNullOrEmpty(errMsg))
  255. {
  256. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  257. }
  258. // wangx 2016-10-10 是否设置过期未交坯
  259. else
  260. {
  261. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  262. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  263. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  264. if (sqlSettingValue != "0")
  265. {
  266. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(
  267. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  268. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  269. if (Convert.ToInt32(resultEntity.Result) < 0)
  270. {
  271. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  272. errMsg = resultEntity.Message;
  273. }
  274. }
  275. // wangx end
  276. }
  277. //
  278. }
  279. //}
  280. }
  281. }
  282. }
  283. }
  284. #endregion
  285. #region 装窑车
  286. else if (procedure.ModelType == (int)Constant.ProcedureModelType.LoadCar)
  287. {
  288. errMsg = AddLoadKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  289. out goodsID, out goodsCode, out goodsName);
  290. }
  291. #endregion
  292. #region 窑车补件
  293. else if (procedure.ModelType == (int)Constant.ProcedureModelType.CarAdd)
  294. {
  295. errMsg = AddKilnCarSupplement(oracleTrConn, procedure, barcodeTable, sUserInfo,
  296. out goodsID, out goodsCode, out goodsName);
  297. }
  298. #endregion
  299. #region 入窑
  300. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKiln)
  301. {
  302. // PDA传入的窑车号。没有传入条码信息 需要转换
  303. /* modify by chenxy 2016-04-05 begin
  304. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  305. * 入窑时窑车上的产品需要重新获取。
  306. */
  307. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  308. // modify by chenxy 2016-04-05 end
  309. {
  310. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  311. }
  312. errMsg = AddIntoKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  313. out goodsID, out goodsCode, out goodsName);
  314. }
  315. #endregion
  316. #region 出窑
  317. else if (procedure.ModelType == (int)Constant.ProcedureModelType.OutKiln)
  318. {
  319. // PDA传入的窑车号。没有传入条码信息 需要转换
  320. /* modify by chenxy 2016-04-05 begin
  321. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  322. * 入窑时窑车上的产品需要重新获取。
  323. */
  324. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  325. // modify by chenxy 2016-04-05 end
  326. {
  327. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  328. }
  329. errMsg = AddOutKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  330. out goodsID, out goodsCode, out goodsName);
  331. }
  332. #endregion
  333. #region 卸窑车
  334. else if (procedure.ModelType == (int)Constant.ProcedureModelType.UnloadCar)
  335. {
  336. // PDA传入的窑车号。没有传入条码信息 需要转换
  337. /* modify by chenxy 2016-04-05 begin
  338. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  339. * 入窑时窑车上的产品需要重新获取。
  340. */
  341. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  342. // modify by chenxy 2016-04-05 end
  343. {
  344. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  345. }
  346. errMsg = AddUnloadingKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  347. out goodsID, out goodsCode, out goodsName);
  348. }
  349. #endregion
  350. #region 干补
  351. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SpecialRepair)
  352. {
  353. errMsg = AddDryRepairWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  354. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  355. }
  356. #endregion
  357. #region 回收
  358. else if (procedure.ModelType == (int)Constant.ProcedureModelType.Recovery)
  359. {
  360. errMsg = AddRecydingFlagWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  361. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  362. }
  363. #endregion
  364. #region 构造返回的DataTable
  365. if ((procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud
  366. || procedure.ModelType == (int)Constant.ProcedureModelType.Normal) && procedure.CollectType == 2)
  367. {
  368. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()];
  369. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()];
  370. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()];
  371. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()];
  372. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()];
  373. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()];
  374. //新添加的
  375. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  376. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  377. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  378. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  379. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  380. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  381. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  382. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  383. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  384. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  385. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  386. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()];
  387. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()];
  388. }
  389. else
  390. {
  391. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = (errMsg == null ? "" : errMsg);
  392. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID;
  393. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode;
  394. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName;
  395. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode;
  396. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = logoCode;
  397. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = logoName;
  398. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = groutingdate;
  399. //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  400. //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  401. //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  402. //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  403. //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  404. //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  405. //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  406. //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  407. //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  408. //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  409. }
  410. dtBarCode.Rows.Add(dr);
  411. #endregion
  412. // 没有错误 提交事务
  413. if (string.IsNullOrEmpty(errMsg))
  414. {
  415. oracleTrConn.Commit();
  416. }
  417. }
  418. catch (Exception ex)
  419. {
  420. oracleTrConn.Rollback();
  421. throw ex;
  422. }
  423. finally
  424. {
  425. // 释放资源
  426. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  427. {
  428. oracleTrConn.Disconnect();
  429. }
  430. }
  431. return dtBarCode;
  432. }
  433. #region 是否公坯
  434. /// <summary>
  435. /// 是否公坯
  436. /// </summary>
  437. /// <param name="barcode">产品条码</param>
  438. /// <returns>int</returns>
  439. public static int IsPubilcByBarCode(IDBTransaction oracleTrConn, string barcode)
  440. {
  441. int isPubilcBody = 0;
  442. try
  443. {
  444. string sqlString = @"
  445. select
  446. ispublicbody
  447. from tp_pm_inproduction where barcode=:barcode
  448. union
  449. select
  450. ispublicbody
  451. from TP_PM_InProductionTrash where barcode=:barcode
  452. ";
  453. OracleParameter[] paras = new OracleParameter[]{
  454. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  455. };
  456. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  457. if (ds != null && ds.Tables[0].Rows.Count > 0)
  458. {
  459. isPubilcBody = Convert.ToInt32(ds.Tables[0].Rows[0]["ispublicbody"]);
  460. }
  461. return isPubilcBody;
  462. }
  463. catch (Exception ex)
  464. {
  465. throw ex;
  466. }
  467. }
  468. #endregion
  469. /// <summary>
  470. /// 标准计件
  471. /// </summary>
  472. /// <param name="oracleTrConn">数据连接对象</param>
  473. /// <param name="procedure">工序对象</param>
  474. /// <param name="barcodeTable">条码信息</param>
  475. /// <param name="sUserInfo">用户基本信息</param>
  476. /// <param name="goodsID">返回的产品ID</param>
  477. /// <param name="goodsCode">返回的产品Code</param>
  478. /// <param name="goodsName">返回的产品名称</param>
  479. /// <param name="groutingUserID">返回的注浆者ID</param>
  480. /// <returns>string</returns>
  481. /// <remarks>
  482. /// 陈冰 2014.09.18 新建
  483. /// </remarks>
  484. private static string AddNormalWorkPiece(IDBTransaction oracleTrConn,
  485. ProcedureEntity procedure,
  486. DataTable barcodeTable,
  487. SUserInfo sUserInfo,
  488. out int goodsID,
  489. out string goodsCode,
  490. out string goodsName,
  491. out string groutingUserCode)
  492. {
  493. try
  494. {
  495. goodsID = Constant.INT_IS_ZERO;
  496. goodsCode = null;
  497. goodsName = null;
  498. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  499. // 获得账务日期
  500. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  501. string errMsg = string.Empty;
  502. // 本批采集的批次号
  503. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  504. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  505. // 条码信息
  506. foreach (DataRow barcodeRow in barcodeTable.Rows)
  507. {
  508. // 条码
  509. string barcode = barcodeRow["Barcode"].ToString();
  510. if (string.IsNullOrEmpty(barcode))
  511. {
  512. throw new Exception("传入的条码号为空");
  513. }
  514. // 生产工号
  515. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  516. // 生产工号
  517. string workUserCode = barcodeRow["UserCode"].ToString();
  518. int? GroutingDailyDetailID = null;//注浆明细ID
  519. if (procedure.CollectType == 1)
  520. {
  521. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  522. {
  523. #region 校验条码有效性
  524. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  525. if (!string.IsNullOrEmpty(errMsg))
  526. {
  527. return errMsg;
  528. }
  529. #endregion
  530. }
  531. else
  532. {
  533. #region 校验条码有效性
  534. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  535. if (!string.IsNullOrEmpty(errMsg))
  536. {
  537. return errMsg;
  538. }
  539. #endregion
  540. }
  541. }
  542. else
  543. {
  544. string sqlGroutingInfo = "";
  545. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  546. tp_pm_groutingdailydetail.goodscode,
  547. tp_pm_groutingdailydetail.goodsname,
  548. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  549. tp_pm_groutingdailydetail.GroutingDailyDetailID
  550. from tp_pm_groutingdailydetail where barcode = :barcode";
  551. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  552. //(select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)";
  553. OracleParameter[] ReFireparas = new OracleParameter[] {
  554. new OracleParameter(":barcode",barcode),
  555. };
  556. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  557. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  558. {
  559. GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  560. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  561. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  562. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  563. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  564. }
  565. }
  566. int? ClassesSettingID = null;//班次配置ID
  567. #region 添加生产者数据
  568. //生产数据ID
  569. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  570. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  571. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  572. {
  573. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  574. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  575. {
  576. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  577. }
  578. else
  579. {
  580. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  581. }
  582. }
  583. else
  584. {
  585. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  586. }
  587. if (!string.IsNullOrEmpty(errMsg))
  588. {
  589. return errMsg;
  590. }
  591. #endregion
  592. #region 添加生产数据
  593. ProductionDataEntity productionData = new ProductionDataEntity();
  594. #region 属性赋值
  595. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  596. productionData.ClassesSettingID = ClassesSettingID;
  597. productionData.ProductionDataID = productionDataID;
  598. productionData.Barcode = barcode;
  599. productionData.CentralizedBatchNo = centralizedBatchNo;
  600. productionData.ProductionLineID = procedure.ProductionLineID;
  601. productionData.ProductionLineCode = procedure.ProductionlineCode;
  602. productionData.ProductionLineName = procedure.ProductionlineName;
  603. productionData.CompleteProcedureID = procedure.ProcedureID;
  604. productionData.ProcedureCode = procedure.ProcedureCode;
  605. productionData.ProcedureName = procedure.ProcedureName;
  606. productionData.ProcedureModel = procedure.ProcedureModel;
  607. productionData.ModelType = procedure.ModelType;
  608. productionData.NodeType = procedure.NodeType;
  609. productionData.PieceType = procedure.PieceType;
  610. if (barcodeRow["LogoID"].ToString() != "")
  611. {
  612. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  613. }
  614. if (procedure.IsSpecialRework == 0)
  615. {
  616. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  617. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  618. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  619. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  620. {
  621. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  622. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  623. }
  624. ////// else
  625. ////// {
  626. ////// string sqlReFire = @"select
  627. ////// isrefire
  628. ////// from tp_pm_inproduction where barcode=:barcode
  629. ////// ";
  630. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  631. ////// new OracleParameter(":barcode",barcode),
  632. ////// };
  633. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  634. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  635. ////// {
  636. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  637. ////// {
  638. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  639. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  640. ////// //{
  641. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  642. ////// //}
  643. ////// }
  644. ////// }
  645. ////// }
  646. }
  647. else
  648. {
  649. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  650. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  651. }
  652. productionData.ReworkProcedureID = null;
  653. #region 交坯判断
  654. // 交坯节点
  655. if (barcodeTable.Columns.Contains("IsPublicBody"))
  656. {
  657. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  658. }
  659. // 非交坯节点
  660. else
  661. {
  662. // 正常坯
  663. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  664. }
  665. #endregion
  666. productionData.OrganizationID = procedure.OrganizationID;
  667. productionData.GoodsID = goodsID;
  668. productionData.GoodsCode = goodsCode;
  669. productionData.GoodsName = goodsName;
  670. productionData.UserID = workUserID;
  671. productionData.UserCode = barcodeRow["UserCode"].ToString();
  672. productionData.UserName = barcodeRow["UserName"].ToString();
  673. #endregion
  674. string OutSpecialRepairflag = "0";//干补标识
  675. DataSet outDataSet = null;
  676. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  677. {
  678. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  679. }
  680. else
  681. {
  682. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  683. }
  684. if (!string.IsNullOrEmpty(errMsg))
  685. {
  686. return errMsg;
  687. }
  688. #endregion
  689. #region 开始节点
  690. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  691. {
  692. #region 添加在产产品数据
  693. InProductionEntity addInProductionEntity = new InProductionEntity();
  694. addInProductionEntity.BarCode = barcode;
  695. //流程工序ID
  696. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  697. // 当前工序
  698. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  699. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  700. // 工序模型
  701. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  702. // 工序类别
  703. addInProductionEntity.ModelType = procedure.ModelType;
  704. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  705. addInProductionEntity.ProductionDataID = productionDataID;
  706. #region 交坯判断
  707. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  708. #endregion
  709. // 生产工号
  710. addInProductionEntity.UserID = workUserID;
  711. // 执行添加
  712. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  713. // 执行失败
  714. if (!string.IsNullOrEmpty(errMsg))
  715. {
  716. return errMsg;
  717. }
  718. #endregion
  719. }
  720. #endregion
  721. #region 中间节点
  722. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  723. {
  724. #region 修改在产产品数据的当前工序,清空返工工序字段
  725. InProductionEntity addInProductionEntity = new InProductionEntity();
  726. addInProductionEntity.BarCode = barcode;
  727. //流程工序ID
  728. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  729. // 当前工序
  730. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  731. //当前生产数据ID
  732. addInProductionEntity.ProductionDataID = productionDataID;
  733. // 工序模型
  734. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  735. // 工序类别
  736. addInProductionEntity.ModelType = procedure.ModelType;
  737. // 生产工号
  738. addInProductionEntity.UserID = workUserID;
  739. addInProductionEntity.LogoID = productionData.LogoID;
  740. // 缺陷标识
  741. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  742. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  743. if (procedure.IsSpecialRework == 0)
  744. {
  745. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  746. }
  747. else
  748. {
  749. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  750. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  751. }
  752. #region 交坯判断
  753. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  754. #endregion
  755. // 执行修改
  756. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  757. // 执行失败
  758. if (!string.IsNullOrEmpty(errMsg))
  759. {
  760. return errMsg;
  761. }
  762. #endregion
  763. }
  764. #endregion
  765. #region 结束节点
  766. else
  767. {
  768. #region 添加成品数据 删除在产产品数据
  769. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  770. finishedProduct.BarCode = barcode;
  771. finishedProduct.LogoID = productionData.LogoID;
  772. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  773. if (!string.IsNullOrEmpty(errMsg))
  774. {
  775. return errMsg;
  776. }
  777. InProductionEntity delInProductionEntity = new InProductionEntity();
  778. delInProductionEntity.BarCode = barcode;
  779. // 执行删除 在产数据
  780. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  781. // 执行失败
  782. if (!string.IsNullOrEmpty(errMsg))
  783. {
  784. return errMsg;
  785. }
  786. #endregion
  787. }
  788. #endregion
  789. }
  790. return errMsg;
  791. }
  792. catch (Exception ex)
  793. {
  794. throw ex;
  795. }
  796. }
  797. /// <summary>
  798. /// 添加生产者(交坯单独调用,特殊)
  799. /// </summary>
  800. /// <param name="oracleTrConn">连接对象</param>
  801. /// <param name="accountDate">账务日期</param>
  802. /// <param name="productionDataID">生产数据ID</param>
  803. /// <param name="workUserID">生产工号ID</param>
  804. /// <param name="workUserCode">生产工号Code</param>
  805. /// <param name="sUserInfo">用户基本信息</param>
  806. /// <returns>string</returns>
  807. private static string AddProducerDeliverAdobe(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo)
  808. {
  809. // 参数
  810. OracleParameter[] paras;
  811. #region 将班次配置表中的数据插入生产者表中
  812. string sql = "insert into tp_pm_producer"
  813. + " (productiondataid,"
  814. + " staffid,"
  815. + " userid,"
  816. + " usercode,"
  817. + " UJobsID,"
  818. + " staffstatus,"
  819. + " SJobsID"
  820. + " )"
  821. + " select distinct :productiondataid,"
  822. + " staffid,"
  823. + " userid,"
  824. + " usercode,"
  825. + " UJobsID,"
  826. + " staffstatus,"
  827. + " SJobsID"
  828. + " "
  829. + " from TP_PM_GroutingProducer"
  830. + " where UserID = :userID";
  831. paras = new OracleParameter[] {
  832. new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  833. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  834. };
  835. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  836. // 失败
  837. if (resultCount == Constant.INT_IS_ZERO)
  838. {
  839. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  840. }
  841. #endregion
  842. return null;
  843. }
  844. /// <summary>
  845. /// 装车后,更新所有以前操作的工序窑车信息
  846. /// </summary>
  847. /// <param name="oracleTrConn">连接对象</param>
  848. /// <param name="barcode">条码</param>
  849. /// <param name="kilnCarID">窑车号</param>
  850. /// <param name="goodsID">产品ID</param>
  851. /// <param name="KilnCarPosition">窑车位置</param>
  852. /// <param name="kilnCarBatchNo">装车批次</param>
  853. /// <param name="sUserInfo">用户基本信息</param>
  854. /// <returns>string</returns>
  855. private static string UpdateRefineBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  856. {
  857. string sql = "update TP_PM_ProductionData set "
  858. + " IsReFire=:IsReFire"
  859. + " where barcode=:barcode";
  860. #region 参数
  861. OracleParameter[] paras = new OracleParameter[] {
  862. new OracleParameter(":IsReFire",(int)Constant.GoodsLevelType.ReFire),
  863. new OracleParameter(":barcode",productionData.Barcode),
  864. };
  865. #endregion
  866. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  867. // 保存失败
  868. if (result == Constant.INT_IS_ZERO)
  869. {
  870. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  871. }
  872. // 保存成功返回null
  873. return null;
  874. }
  875. /// <summary>
  876. /// 装窑车计件
  877. /// </summary>
  878. /// <param name="oracleTrConn">数据连接对象</param>
  879. /// <param name="procedure">工序对象</param>
  880. /// <param name="barcodeTable">条码信息</param>
  881. /// <param name="sUserInfo">用户基本信息</param>
  882. /// <param name="goodsID">返回的产品ID</param>
  883. /// <param name="goodsCode">返回的产品Code</param>
  884. /// <param name="goodsName">返回的产品名称</param>
  885. /// <returns>string</returns>
  886. /// <remarks>
  887. /// 陈冰 2014.09.18 新建
  888. /// </remarks>
  889. private static string AddLoadKilnCar(IDBTransaction oracleTrConn,
  890. ProcedureEntity procedure,
  891. DataTable barcodeTable,
  892. SUserInfo sUserInfo,
  893. out int goodsID,
  894. out string goodsCode,
  895. out string goodsName)
  896. {
  897. try
  898. {
  899. goodsID = Constant.INT_IS_ZERO;
  900. goodsCode = null;
  901. goodsName = null;
  902. string groutingUserCode = string.Empty;
  903. // 获得账务日期
  904. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  905. string errMsg = string.Empty;
  906. // 生产工号
  907. int workUserID = Constant.INT_IS_ZERO;
  908. // 生产工号Code
  909. string workUserCode = string.Empty;
  910. // 生产工号Name
  911. string workUserName = string.Empty;
  912. // 本批采集的批次号
  913. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  914. // 窑车批次号
  915. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  916. // 窑车状态
  917. string kilnCarStatus = string.Empty;
  918. //////////////////////////////////////////////////
  919. DataView dv = barcodeTable.DefaultView;
  920. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  921. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  922. {
  923. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  924. // 窑炉ID
  925. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  926. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  927. // 窑车ID
  928. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  929. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  930. // 窑车Code
  931. // string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  932. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  933. #region 校验窑车是否可装车
  934. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  935. if (!string.IsNullOrEmpty(errMsg))
  936. {
  937. return errMsg;
  938. }
  939. #endregion
  940. #region 如果窑车状态为空,需要插入窑车状态表
  941. if (string.IsNullOrEmpty(kilnCarStatus))
  942. {
  943. // 插入窑车状态表
  944. errMsg = AddkilnCarStatus(oracleTrConn, procedure, kilnCarID, kilnID, kilnCarBatchNo, sUserInfo);
  945. if (!string.IsNullOrEmpty(errMsg))
  946. {
  947. return errMsg;
  948. }
  949. }
  950. #endregion
  951. #region 窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  952. // 查询本次窑车产品的批次号
  953. else
  954. {
  955. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  956. // 更改窑车状态表入窑时间
  957. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.LoadCar, sUserInfo, procedure, kilnCarBatchNo);
  958. if (!string.IsNullOrEmpty(errMsg))
  959. {
  960. return errMsg;
  961. }
  962. }
  963. #endregion
  964. // 条码信息
  965. DataView dvFilter = barcodeTable.DefaultView;
  966. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  967. DataTable dtNew = dvFilter.ToTable();
  968. // 条码信息
  969. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  970. //--------------------------------
  971. string sqllast = "select max(createtime) as createtime from TP_PM_KilnCarGoods"
  972. + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  973. OracleParameter[] paras = new OracleParameter[] {
  974. new OracleParameter(":KilnCarID",kilnCarID),
  975. new OracleParameter(":AccountID",sUserInfo.AccountID),
  976. };
  977. DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sqllast, paras);
  978. object lastcreatetime = null;
  979. if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0 && dsReturn.Tables[0].Rows[0]["CreateTime"].ToString() != "")
  980. {
  981. lastcreatetime = Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"]);
  982. }
  983. //--------------------------------
  984. int? maxClassesSettingID = null;
  985. foreach (DataRow barcodeRow in dtNew.Rows)
  986. {
  987. // 条码
  988. string barcode = barcodeRow["Barcode"].ToString();
  989. // 生产工号
  990. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  991. workUserCode = barcodeRow["UserCode"].ToString();
  992. workUserName = barcodeRow["UserName"].ToString();
  993. #region 校验条码有效性
  994. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  995. if (!string.IsNullOrEmpty(errMsg))
  996. {
  997. return errMsg;
  998. }
  999. #endregion
  1000. // 查询新插入的生产数据ID
  1001. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1002. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1003. int productionDataID = 0;
  1004. if (!string.IsNullOrEmpty(idStr))
  1005. {
  1006. productionDataID = int.Parse(idStr);
  1007. }
  1008. else
  1009. {
  1010. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1011. }
  1012. int? ClassesSettingID = null;//班次配置ID
  1013. #region 添加生产者数据
  1014. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1015. if (!string.IsNullOrEmpty(errMsg))
  1016. {
  1017. return errMsg;
  1018. }
  1019. #endregion
  1020. maxClassesSettingID = ClassesSettingID;
  1021. #region 添加生产数据
  1022. ProductionDataEntity productionData = new ProductionDataEntity();
  1023. #region 属性赋值
  1024. productionData.ClassesSettingID = ClassesSettingID;
  1025. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1026. productionData.Barcode = barcode;
  1027. productionData.CentralizedBatchNo = centralizedBatchNo;
  1028. productionData.ProductionLineID = procedure.ProductionLineID;
  1029. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1030. productionData.ProductionLineName = procedure.ProductionlineName;
  1031. productionData.CompleteProcedureID = procedure.ProcedureID;
  1032. productionData.ProcedureCode = procedure.ProcedureCode;
  1033. productionData.ProcedureName = procedure.ProcedureName;
  1034. productionData.ProcedureModel = procedure.ProcedureModel;
  1035. productionData.ModelType = procedure.ModelType;
  1036. productionData.NodeType = procedure.NodeType;
  1037. productionData.ReworkProcedureID = null;
  1038. productionData.PieceType = procedure.PieceType;
  1039. //productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  1040. if (procedure.IsSpecialRework == 0)
  1041. {
  1042. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1043. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1044. }
  1045. else
  1046. {
  1047. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1048. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1049. }
  1050. //productionData.GoodsGrade = (int)Constant.GoodsLevelType.NoDefects;
  1051. //if (lastcreatetime != null)
  1052. //{
  1053. // productionData.CreateTime = Convert.ToDateTime(lastcreatetime);
  1054. //}
  1055. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1056. ////string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1057. ////DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  1058. ////if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1059. ////{
  1060. //// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1061. //// {
  1062. //// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1063. //// }
  1064. ////}
  1065. productionData.OrganizationID = procedure.OrganizationID;
  1066. productionData.GoodsID = goodsID;
  1067. productionData.GoodsCode = goodsCode;
  1068. productionData.GoodsName = goodsName;
  1069. productionData.UserID = workUserID;
  1070. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1071. productionData.UserName = barcodeRow["UserName"].ToString();
  1072. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1073. #region 窑炉窑车属性
  1074. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1075. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1076. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1077. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1078. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1079. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1080. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1081. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1082. #endregion
  1083. #endregion
  1084. string OutSpecialRepairflag = "0";//干补标识
  1085. //if (lastcreatetime == null)
  1086. //{
  1087. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1088. //}
  1089. //else
  1090. //{
  1091. // errMsg = AddProductionDataCreateTime(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1092. //}
  1093. if (!string.IsNullOrEmpty(errMsg))
  1094. {
  1095. return errMsg;
  1096. }
  1097. #endregion
  1098. #region 修改在产产品数据的当前工序,清空返工工序字段
  1099. InProductionEntity addInProductionEntity = new InProductionEntity();
  1100. addInProductionEntity.BarCode = barcode;
  1101. //流程工序
  1102. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1103. // 当前工序
  1104. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1105. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1106. //生产数据ID
  1107. addInProductionEntity.ProductionDataID = productionDataID;
  1108. // 工序模型
  1109. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1110. // 工序类别
  1111. addInProductionEntity.ModelType = procedure.ModelType;
  1112. // 生产工号
  1113. addInProductionEntity.UserID = workUserID;
  1114. // 缺陷标识
  1115. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1116. #region 更新在产表窑车窑炉字段
  1117. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1118. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1119. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1120. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1121. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1122. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1123. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1124. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1125. #endregion
  1126. if (procedure.IsSpecialRework == 0)
  1127. {
  1128. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1129. }
  1130. else
  1131. {
  1132. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1133. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1134. }
  1135. // 执行修改
  1136. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1137. // 执行失败
  1138. if (!string.IsNullOrEmpty(errMsg))
  1139. {
  1140. return errMsg;
  1141. }
  1142. #endregion
  1143. //#region 添加生产者数据
  1144. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1145. //if (!string.IsNullOrEmpty(errMsg))
  1146. //{
  1147. // return errMsg;
  1148. //}
  1149. //#endregion
  1150. //errMsg = UpdateKilnCarCreatetimeInfoBybarcode(oracleTrConn, productionData, sUserInfo);
  1151. //if (!string.IsNullOrEmpty(errMsg))
  1152. //{
  1153. // return errMsg;
  1154. //}
  1155. #region 插入窑车产品表
  1156. errMsg = AddKilnCarGoods(oracleTrConn,
  1157. barcode,
  1158. kilnCarID,
  1159. goodsID,
  1160. productionData.KilnCarPosition.Value,
  1161. kilnCarBatchNo,
  1162. workUserID,
  1163. workUserCode,
  1164. workUserName,
  1165. sUserInfo);
  1166. if (!string.IsNullOrEmpty(errMsg))
  1167. {
  1168. return errMsg;
  1169. }
  1170. #endregion
  1171. //#region 装车后,更新所有以前操作的工序窑车信息
  1172. //errMsg = UpdateKilnCarInfoBybarcode(oracleTrConn, productionData);
  1173. //if (!string.IsNullOrEmpty(errMsg))
  1174. //{
  1175. // return errMsg;
  1176. //}
  1177. //#endregion
  1178. }
  1179. #region 窑车生产数据
  1180. #region 插入窑车生产数据表
  1181. if (lastcreatetime == null) //加此判断为的是,在登车时落产品,进行第二些登车时,不插重复数据
  1182. {
  1183. errMsg = AddKilnCarData(oracleTrConn,
  1184. accountDate,
  1185. kilnCarID,
  1186. kilnCarBatchNo,
  1187. workUserID,
  1188. workUserCode,
  1189. workUserName,
  1190. null,
  1191. sUserInfo, maxClassesSettingID);
  1192. #region 窑车生产者
  1193. if (!string.IsNullOrEmpty(errMsg))
  1194. {
  1195. return errMsg;
  1196. }
  1197. #endregion
  1198. }
  1199. #endregion
  1200. #endregion
  1201. }
  1202. return errMsg;
  1203. }
  1204. catch (Exception ex)
  1205. {
  1206. throw ex;
  1207. }
  1208. }
  1209. /// <summary>
  1210. /// 装车后,更新所有以前操作的工序窑车信息
  1211. /// </summary>
  1212. /// <param name="oracleTrConn">连接对象</param>
  1213. /// <param name="barcode">条码</param>
  1214. /// <param name="kilnCarID">窑车号</param>
  1215. /// <param name="goodsID">产品ID</param>
  1216. /// <param name="KilnCarPosition">窑车位置</param>
  1217. /// <param name="kilnCarBatchNo">装车批次</param>
  1218. /// <param name="sUserInfo">用户基本信息</param>
  1219. /// <returns>string</returns>
  1220. private static string UpdateKilnCarInfoBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1221. {
  1222. string sql = "update TP_PM_ProductionData set "
  1223. + " KilnID=:KilnID,"
  1224. + "KilnCode=:KilnCode,"
  1225. + "KilnName=:KilnName,"
  1226. + "KilnCarID=:KilnCarID,"
  1227. + "KilnCarCode=:KilnCarCode,"
  1228. + "KilnCarName=:KilnCarName,"
  1229. + "KilnCarBatchNo=:KilnCarBatchNo,"
  1230. + "KilnCarPosition=:KilnCarPosition,"
  1231. + "isrefire=:isrefire "
  1232. + " where barcode=:barcode";
  1233. #region 参数
  1234. OracleParameter[] paras = new OracleParameter[] {
  1235. new OracleParameter(":KilnID",productionData.KilnID),
  1236. new OracleParameter(":KilnCode",productionData.KilnCode),
  1237. new OracleParameter(":KilnName",productionData.KilnName),
  1238. new OracleParameter(":KilnCarID",productionData.KilnCarID),
  1239. new OracleParameter(":KilnCarCode",productionData.KilnCarCode),
  1240. new OracleParameter(":KilnCarName",productionData.KilnCarName),
  1241. new OracleParameter(":KilnCarBatchNo",productionData.KilnCarBatchNo),
  1242. new OracleParameter(":KilnCarPosition",productionData.KilnCarPosition),
  1243. new OracleParameter(":isrefire",productionData.IsReFire),
  1244. new OracleParameter(":barcode",productionData.Barcode),
  1245. };
  1246. #endregion
  1247. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1248. // 保存失败
  1249. if (result == Constant.INT_IS_ZERO)
  1250. {
  1251. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1252. }
  1253. // 保存成功返回null
  1254. return null;
  1255. }
  1256. /// <summary>
  1257. /// 入窑车计件
  1258. /// </summary>
  1259. /// <param name="oracleTrConn">数据连接对象</param>
  1260. /// <param name="procedure">工序对象</param>
  1261. /// <param name="barcodeTable">条码信息</param>
  1262. /// <param name="sUserInfo">基本</param>
  1263. /// <param name="goodsID">返回的产品ID</param>
  1264. /// <param name="goodsCode">返回的产品Code</param>
  1265. /// <param name="goodsName">返回的产品名称</param>
  1266. /// <returns>string</returns>
  1267. /// <remarks>
  1268. /// 张国印 2014.10.04 新建
  1269. /// </remarks>
  1270. private static string AddIntoKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1271. out int goodsID, out string goodsCode, out string goodsName)
  1272. {
  1273. try
  1274. {
  1275. goodsID = Constant.INT_IS_ZERO;
  1276. goodsCode = string.Empty;
  1277. goodsName = string.Empty;
  1278. string groutingUserCode = string.Empty;
  1279. // 获得账务日期
  1280. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1281. string errMsg = string.Empty;
  1282. // 生产工号
  1283. int workUserID = Constant.INT_IS_ZERO;
  1284. // 生产工号Code
  1285. string workUserCode = string.Empty;
  1286. // 生产工号Name
  1287. string workUserName = string.Empty;
  1288. // 本批采集的批次号
  1289. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1290. // 窑车批次号
  1291. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  1292. // 窑车状态
  1293. string kilnCarStatus = string.Empty;
  1294. //////////////////////////////////////////////////
  1295. DataView dv = barcodeTable.DefaultView;
  1296. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1297. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1298. {
  1299. ///////////////////////////////////////////////////
  1300. // 窑车Code
  1301. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1302. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1303. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1304. #region 校验窑车是否可入窑炉
  1305. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1306. if (!string.IsNullOrEmpty(errMsg))
  1307. {
  1308. return errMsg;
  1309. }
  1310. #endregion
  1311. // 窑炉ID
  1312. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1313. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1314. // 窑车ID
  1315. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1316. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1317. //备注信息
  1318. string Remarks = dr[0]["Remarks"].ToString();
  1319. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1320. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1321. if (!string.IsNullOrEmpty(errMsg))
  1322. {
  1323. return errMsg;
  1324. }
  1325. // 查询本次窑车产品的批次号
  1326. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1327. #region 窑车表存在,查询本次窑车产品的批次号 并更改入窑车时间
  1328. //更改窑车状态表入窑时间
  1329. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.IntoKiln, sUserInfo, procedure, kilnCarBatchNo);
  1330. if (!string.IsNullOrEmpty(errMsg))
  1331. {
  1332. return errMsg;
  1333. }
  1334. #endregion
  1335. DataView dvFilter = barcodeTable.DefaultView;
  1336. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1337. DataTable dtNew = dvFilter.ToTable();
  1338. int? maxClassesSettingID = null;
  1339. // 条码信息
  1340. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1341. foreach (DataRow barcodeRow in dtNew.Rows)
  1342. {
  1343. // 条码
  1344. string barcode = barcodeRow["Barcode"].ToString();
  1345. // 生产工号
  1346. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1347. workUserCode = barcodeRow["UserCode"].ToString();
  1348. workUserName = barcodeRow["UserName"].ToString();
  1349. // 查询新插入的生产数据ID
  1350. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1351. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1352. int productionDataID = 0;
  1353. if (!string.IsNullOrEmpty(idStr))
  1354. {
  1355. productionDataID = int.Parse(idStr);
  1356. }
  1357. else
  1358. {
  1359. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1360. }
  1361. int? ClassesSettingID = null;//班次配置ID
  1362. #region 添加生产者数据
  1363. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1364. if (!string.IsNullOrEmpty(errMsg))
  1365. {
  1366. return errMsg;
  1367. }
  1368. #endregion
  1369. maxClassesSettingID = ClassesSettingID;
  1370. #region 添加生产数据
  1371. ProductionDataEntity productionData = new ProductionDataEntity();
  1372. #region 属性赋值
  1373. productionData.ClassesSettingID = ClassesSettingID;
  1374. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1375. productionData.Barcode = barcode;
  1376. productionData.CentralizedBatchNo = centralizedBatchNo;
  1377. productionData.ProductionLineID = procedure.ProductionLineID;
  1378. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1379. productionData.ProductionLineName = procedure.ProductionlineName;
  1380. productionData.CompleteProcedureID = procedure.ProcedureID;
  1381. productionData.ProcedureCode = procedure.ProcedureCode;
  1382. productionData.ProcedureName = procedure.ProcedureName;
  1383. productionData.ProcedureModel = procedure.ProcedureModel;
  1384. productionData.ModelType = procedure.ModelType;
  1385. productionData.NodeType = procedure.NodeType;
  1386. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1387. productionData.ReworkProcedureID = null;
  1388. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1389. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1390. productionData.PieceType = procedure.PieceType;
  1391. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1392. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1393. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1394. ////// string sqlReFire = @"select
  1395. ////// isrefire
  1396. ////// from tp_pm_inproduction where barcode=:barcode
  1397. ////// ";
  1398. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1399. ////// new OracleParameter(":barcode",barcode),
  1400. ////// };
  1401. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1402. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1403. ////// {
  1404. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1405. ////// {
  1406. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1407. ////// }
  1408. ////// }
  1409. productionData.OrganizationID = procedure.OrganizationID;
  1410. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1411. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1412. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1413. productionData.UserID = workUserID;
  1414. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1415. productionData.UserName = barcodeRow["UserName"].ToString();
  1416. #region 窑炉窑车属性
  1417. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1418. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1419. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1420. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1421. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1422. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1423. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1424. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1425. productionData.Remarks = "";
  1426. #endregion
  1427. #endregion
  1428. string OutSpecialRepairflag = "0";//干补标识
  1429. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1430. if (!string.IsNullOrEmpty(errMsg))
  1431. {
  1432. return errMsg;
  1433. }
  1434. #endregion
  1435. #region 修改在产产品数据的当前工序,清空返工工序字段
  1436. InProductionEntity addInProductionEntity = new InProductionEntity();
  1437. addInProductionEntity.BarCode = barcode;
  1438. //流程工序
  1439. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1440. // 当前工序
  1441. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1442. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1443. //生产数据ID
  1444. addInProductionEntity.ProductionDataID = productionDataID;
  1445. // 工序模型
  1446. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1447. // 工序类别
  1448. addInProductionEntity.ModelType = procedure.ModelType;
  1449. // 生产工号
  1450. addInProductionEntity.UserID = workUserID;
  1451. // 缺陷标识
  1452. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1453. #region 更新在产表窑车窑炉字段
  1454. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1455. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1456. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1457. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1458. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1459. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1460. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1461. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1462. #endregion
  1463. // 执行修改
  1464. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1465. // 执行失败
  1466. if (!string.IsNullOrEmpty(errMsg))
  1467. {
  1468. return errMsg;
  1469. }
  1470. #endregion
  1471. //#region 添加生产者数据
  1472. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1473. //if (!string.IsNullOrEmpty(errMsg))
  1474. //{
  1475. // return errMsg;
  1476. //}
  1477. //#endregion
  1478. }
  1479. #region 插入窑车生产数据表
  1480. errMsg = AddKilnCarData(oracleTrConn,
  1481. accountDate,
  1482. kilnCarID,
  1483. kilnCarBatchNo,
  1484. workUserID,
  1485. workUserCode,
  1486. workUserName,
  1487. Remarks,
  1488. sUserInfo, maxClassesSettingID);
  1489. if (!string.IsNullOrEmpty(errMsg))
  1490. {
  1491. return errMsg;
  1492. }
  1493. #endregion
  1494. //#region 窑车生产者
  1495. //// 查询新插入的生产数据ID
  1496. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1497. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1498. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1499. //if (!string.IsNullOrEmpty(errMsg))
  1500. //{
  1501. // return errMsg;
  1502. //}
  1503. //#endregion
  1504. }
  1505. return errMsg;
  1506. }
  1507. catch (Exception ex)
  1508. {
  1509. throw ex;
  1510. }
  1511. }
  1512. /// <summary>
  1513. /// 校验窑车的工序与当前工序是否可以到达(重烧后,未走重烧入窑)
  1514. /// </summary>
  1515. /// <param name="oracleTrConn">数据连接</param>
  1516. /// <param name="barcode">产品条码</param>
  1517. /// <returns>string</returns>
  1518. private static string GetKilnCarProcedureIDByKilnCarID(IDBTransaction oracleTrConn, int KilnCarID, int ProcedureID)
  1519. {
  1520. string sql = @"select ProcedureID from TP_PM_KilnCarStatus where KilnCarID=:KilnCarID";
  1521. OracleParameter[] paras = new OracleParameter[] {
  1522. new OracleParameter(":KilnCarID", KilnCarID) ,
  1523. };
  1524. int currentProcedureID = 0;
  1525. DataSet result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1526. if (result != null && result.Tables[0].Rows.Count > 0)
  1527. {
  1528. currentProcedureID = Convert.ToInt32(result.Tables[0].Rows[0][0]);
  1529. }
  1530. sql = @"select pro.ProcedureID
  1531. from TP_PC_ProcedureFlow flow
  1532. inner join TP_PC_Procedure pro
  1533. on flow.arriveprocedureid = pro.procedureid
  1534. inner join TP_PC_ProductionLine line
  1535. on pro.ProductionLineID = line.ProductionLineID
  1536. where flow.ProcedureID = :currentProcedureID
  1537. and flow.FlowFlag = 2";
  1538. paras = new OracleParameter[] {
  1539. new OracleParameter(":currentProcedureID", currentProcedureID) ,
  1540. };
  1541. result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1542. int returnProcedureID = 0;
  1543. if (result != null && result.Tables[0].Rows.Count > 0)
  1544. {
  1545. if (result.Tables[0].Select("ProcedureID=" + ProcedureID).Length > 0)
  1546. {
  1547. returnProcedureID = 1;
  1548. }
  1549. }
  1550. // 保存失败
  1551. if (returnProcedureID == 0)
  1552. {
  1553. return string.Format("当前工序不允许进行操作", "条码", "保存");
  1554. }
  1555. return null;
  1556. }
  1557. /// <summary>
  1558. /// 出窑车计件
  1559. /// </summary>
  1560. /// <param name="oracleTrConn">数据连接对象</param>
  1561. /// <param name="procedure">工序对象</param>
  1562. /// <param name="barcodeTable">条码信息</param>
  1563. /// <param name="sUserInfo">用户基本信息</param>
  1564. /// <param name="goodsID">返回的产品ID</param>
  1565. /// <param name="goodsCode">返回的产品Code</param>
  1566. /// <param name="goodsName">返回的产品名称</param>
  1567. /// <returns>string</returns>
  1568. /// <remarks>
  1569. /// 张国印 2014.10.04 新建
  1570. /// </remarks>
  1571. private static string AddOutKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1572. out int goodsID, out string goodsCode, out string goodsName)
  1573. {
  1574. try
  1575. {
  1576. goodsID = Constant.INT_IS_ZERO;
  1577. goodsCode = string.Empty;
  1578. goodsName = string.Empty;
  1579. string groutingUserCode = string.Empty;
  1580. // 获得账务日期
  1581. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1582. string errMsg = string.Empty;
  1583. // 生产工号
  1584. int workUserID = Constant.INT_IS_ZERO;
  1585. // 生产工号Code
  1586. string workUserCode = string.Empty;
  1587. // 生产工号Name
  1588. string workUserName = string.Empty;
  1589. // 本批采集的批次号
  1590. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1591. // 窑车批次号
  1592. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  1593. // 窑车状态
  1594. string kilnCarStatus = string.Empty;
  1595. //////////////////////////////////////////////////
  1596. DataView dv = barcodeTable.DefaultView;
  1597. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1598. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1599. {
  1600. // 窑车Code
  1601. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1602. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1603. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1604. string Remarks = dr[0]["Remarks"].ToString();
  1605. #region 校验窑车是否可出窑炉
  1606. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1607. if (!string.IsNullOrEmpty(errMsg))
  1608. {
  1609. return errMsg;
  1610. }
  1611. #endregion
  1612. // 窑炉ID
  1613. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1614. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1615. // 窑车ID
  1616. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1617. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1618. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1619. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1620. if (!string.IsNullOrEmpty(errMsg))
  1621. {
  1622. return errMsg;
  1623. }
  1624. // 查询本次窑车产品的批次号
  1625. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1626. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1627. //更改窑车状态表入窑时间
  1628. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.OutKiln, sUserInfo, procedure, kilnCarBatchNo);
  1629. if (!string.IsNullOrEmpty(errMsg))
  1630. {
  1631. return errMsg;
  1632. }
  1633. #endregion
  1634. //// 条码信息
  1635. DataView dvFilter = barcodeTable.DefaultView;
  1636. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1637. DataTable dtNew = dvFilter.ToTable();
  1638. int? maxClassesSettingID = null;
  1639. // 条码信息
  1640. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1641. foreach (DataRow barcodeRow in dtNew.Rows)
  1642. {
  1643. // 条码
  1644. string barcode = barcodeRow["Barcode"].ToString();
  1645. // 生产工号
  1646. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1647. workUserCode = barcodeRow["UserCode"].ToString();
  1648. workUserName = barcodeRow["UserName"].ToString();
  1649. // 查询新插入的生产数据ID
  1650. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1651. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1652. int productionDataID = 0;
  1653. if (!string.IsNullOrEmpty(idStr))
  1654. {
  1655. productionDataID = int.Parse(idStr);
  1656. }
  1657. else
  1658. {
  1659. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1660. }
  1661. int? ClassesSettingID = null;//班次配置ID
  1662. #region 添加生产者数据
  1663. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1664. if (!string.IsNullOrEmpty(errMsg))
  1665. {
  1666. return errMsg;
  1667. }
  1668. #endregion
  1669. maxClassesSettingID = ClassesSettingID;
  1670. #region 添加生产数据
  1671. ProductionDataEntity productionData = new ProductionDataEntity();
  1672. #region 属性赋值
  1673. productionData.ClassesSettingID = ClassesSettingID;
  1674. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1675. productionData.Barcode = barcode;
  1676. productionData.CentralizedBatchNo = centralizedBatchNo;
  1677. productionData.ProductionLineID = procedure.ProductionLineID;
  1678. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1679. productionData.ProductionLineName = procedure.ProductionlineName;
  1680. productionData.CompleteProcedureID = procedure.ProcedureID;
  1681. productionData.ProcedureCode = procedure.ProcedureCode;
  1682. productionData.ProcedureName = procedure.ProcedureName;
  1683. productionData.ProcedureModel = procedure.ProcedureModel;
  1684. productionData.ModelType = procedure.ModelType;
  1685. productionData.NodeType = procedure.NodeType;
  1686. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1687. productionData.ReworkProcedureID = null;
  1688. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1689. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1690. productionData.PieceType = procedure.PieceType;
  1691. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1692. ////// string sqlReFire = @"select
  1693. ////// isrefire
  1694. ////// from tp_pm_inproduction where barcode=:barcode
  1695. ////// ";
  1696. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1697. ////// new OracleParameter(":barcode",barcode),
  1698. ////// };
  1699. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1700. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1701. ////// {
  1702. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1703. ////// {
  1704. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1705. ////// }
  1706. ////// }
  1707. productionData.OrganizationID = procedure.OrganizationID;
  1708. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1709. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1710. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1711. productionData.UserID = workUserID;
  1712. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1713. productionData.UserName = barcodeRow["UserName"].ToString();
  1714. #region 窑炉窑车属性
  1715. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1716. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1717. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1718. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1719. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1720. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1721. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1722. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1723. productionData.Remarks = barcodeRow["Remarks"].ToString();
  1724. #endregion
  1725. #endregion
  1726. string OutSpecialRepairflag = "0";//干补标识
  1727. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1728. if (!string.IsNullOrEmpty(errMsg))
  1729. {
  1730. return errMsg;
  1731. }
  1732. #endregion
  1733. #region 修改在产产品数据的当前工序,清空返工工序字段
  1734. InProductionEntity addInProductionEntity = new InProductionEntity();
  1735. addInProductionEntity.BarCode = barcode;
  1736. //流程工序
  1737. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1738. // 当前工序
  1739. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1740. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1741. // 生产数据ID
  1742. addInProductionEntity.ProductionDataID = productionDataID;
  1743. // 工序模型
  1744. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1745. // 工序类别
  1746. addInProductionEntity.ModelType = procedure.ModelType;
  1747. // 生产工号
  1748. addInProductionEntity.UserID = workUserID;
  1749. // 缺陷标识
  1750. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1751. #region 更新在产表窑车窑炉字段
  1752. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1753. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1754. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1755. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1756. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1757. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1758. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1759. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1760. #endregion
  1761. // 执行修改
  1762. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1763. // 执行失败
  1764. if (!string.IsNullOrEmpty(errMsg))
  1765. {
  1766. return errMsg;
  1767. }
  1768. #endregion
  1769. //#region 添加生产者数据
  1770. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1771. //if (!string.IsNullOrEmpty(errMsg))
  1772. //{
  1773. // return errMsg;
  1774. //}
  1775. //#endregion
  1776. }
  1777. #region 插入窑车生产数据表
  1778. errMsg = AddKilnCarData(oracleTrConn,
  1779. accountDate,
  1780. kilnCarID,
  1781. kilnCarBatchNo,
  1782. workUserID,
  1783. workUserCode,
  1784. workUserName,
  1785. Remarks,
  1786. sUserInfo, maxClassesSettingID);
  1787. if (!string.IsNullOrEmpty(errMsg))
  1788. {
  1789. return errMsg;
  1790. }
  1791. #endregion
  1792. //#region 窑车生产者
  1793. //// 查询新插入的生产数据ID
  1794. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1795. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1796. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1797. //if (!string.IsNullOrEmpty(errMsg))
  1798. //{
  1799. // return errMsg;
  1800. //}
  1801. //#endregion
  1802. }
  1803. return errMsg;
  1804. }
  1805. catch (Exception ex)
  1806. {
  1807. throw ex;
  1808. }
  1809. }
  1810. /// <summary>
  1811. /// 卸窑车计件
  1812. /// </summary>
  1813. /// <param name="oracleTrConn">数据连接对象</param>
  1814. /// <param name="procedure">工序对象</param>
  1815. /// <param name="barcodeTable">条码信息</param>
  1816. /// <param name="sUserInfo">用户基本信息</param>
  1817. /// <param name="goodsID">返回的产品ID</param>
  1818. /// <param name="goodsCode">返回的产品Code</param>
  1819. /// <param name="goodsName">返回的产品名称</param>
  1820. /// <returns>string</returns>
  1821. /// <remarks>
  1822. /// 张国印 2014.10.04 新建
  1823. /// </remarks>
  1824. private static string AddUnloadingKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1825. out int goodsID, out string goodsCode, out string goodsName)
  1826. {
  1827. try
  1828. {
  1829. goodsID = Constant.INT_IS_ZERO;
  1830. goodsCode = string.Empty;
  1831. goodsName = string.Empty;
  1832. string groutingUserCode = string.Empty;
  1833. // 获得账务日期
  1834. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1835. string errMsg = string.Empty;
  1836. // 生产工号
  1837. int workUserID = Constant.INT_IS_ZERO;
  1838. // 生产工号Code
  1839. string workUserCode = string.Empty;
  1840. // 生产工号Name
  1841. string workUserName = string.Empty;
  1842. // 本批采集的批次号
  1843. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  1844. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  1845. // 窑车批次号
  1846. string kilnCarBatchNo = null;//System.Guid.NewGuid().ToString();
  1847. // 窑车状态
  1848. string kilnCarStatus = string.Empty;
  1849. DataView dv = barcodeTable.DefaultView;
  1850. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1851. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1852. {
  1853. // 窑车Code
  1854. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1855. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1856. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1857. string Remarks = dr[0]["Remarks"].ToString();
  1858. #region 校验窑车是否可出窑炉
  1859. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1860. if (!string.IsNullOrEmpty(errMsg))
  1861. {
  1862. return errMsg;
  1863. }
  1864. #endregion
  1865. // 窑炉ID
  1866. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1867. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1868. // 窑车ID
  1869. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1870. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1871. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1872. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1873. if (!string.IsNullOrEmpty(errMsg))
  1874. {
  1875. return errMsg;
  1876. }
  1877. // 查询本次窑车产品的批次号
  1878. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1879. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1880. //更改窑车状态表入窑时间
  1881. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.UnloadCar, sUserInfo, procedure, kilnCarBatchNo);
  1882. if (!string.IsNullOrEmpty(errMsg))
  1883. {
  1884. return errMsg;
  1885. }
  1886. #endregion
  1887. // 条码信息
  1888. DataView dvFilter = barcodeTable.DefaultView;
  1889. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1890. DataTable dtNew = dvFilter.ToTable();
  1891. int? maxClassesSettingID = null;
  1892. // 条码信息
  1893. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1894. foreach (DataRow barcodeRow in dtNew.Rows)
  1895. {
  1896. // 条码
  1897. string barcode = barcodeRow["Barcode"].ToString();
  1898. // 生产工号
  1899. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1900. workUserCode = barcodeRow["UserCode"].ToString();
  1901. workUserName = barcodeRow["UserName"].ToString();
  1902. // 查询新插入的生产数据ID
  1903. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1904. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1905. int productionDataID = 0;
  1906. if (!string.IsNullOrEmpty(idStr))
  1907. {
  1908. productionDataID = int.Parse(idStr);
  1909. }
  1910. else
  1911. {
  1912. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1913. }
  1914. int? ClassesSettingID = null;//班次配置ID
  1915. #region 添加生产者数据
  1916. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1917. if (!string.IsNullOrEmpty(errMsg))
  1918. {
  1919. return errMsg;
  1920. }
  1921. #endregion
  1922. maxClassesSettingID = ClassesSettingID;
  1923. #region 添加生产数据
  1924. ProductionDataEntity productionData = new ProductionDataEntity();
  1925. #region 属性赋值
  1926. productionData.ClassesSettingID = ClassesSettingID;
  1927. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1928. productionData.Barcode = barcode;
  1929. productionData.CentralizedBatchNo = centralizedBatchNo;
  1930. productionData.ProductionLineID = procedure.ProductionLineID;
  1931. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1932. productionData.ProductionLineName = procedure.ProductionlineName;
  1933. productionData.CompleteProcedureID = procedure.ProcedureID;
  1934. productionData.ProcedureCode = procedure.ProcedureCode;
  1935. productionData.ProcedureName = procedure.ProcedureName;
  1936. productionData.ProcedureModel = procedure.ProcedureModel;
  1937. productionData.ModelType = procedure.ModelType;
  1938. productionData.NodeType = procedure.NodeType;
  1939. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1940. productionData.ReworkProcedureID = null;
  1941. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1942. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1943. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1944. productionData.PieceType = procedure.PieceType;
  1945. ////// string sqlReFire = @"select
  1946. ////// isrefire
  1947. ////// from tp_pm_inproduction where barcode=:barcode
  1948. ////// ";
  1949. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1950. ////// new OracleParameter(":barcode",barcode),
  1951. ////// };
  1952. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1953. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1954. ////// {
  1955. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1956. ////// {
  1957. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1958. ////// }
  1959. ////// }
  1960. productionData.OrganizationID = procedure.OrganizationID;
  1961. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1962. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1963. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1964. productionData.UserID = workUserID;
  1965. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1966. productionData.UserName = barcodeRow["UserName"].ToString();
  1967. #region 窑炉窑车属性
  1968. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1969. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1970. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1971. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1972. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1973. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1974. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1975. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1976. productionData.Remarks = barcodeRow["Remarks"].ToString();
  1977. #endregion
  1978. #endregion
  1979. string OutSpecialRepairflag = "0";//干补标识
  1980. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1981. if (!string.IsNullOrEmpty(errMsg))
  1982. {
  1983. return errMsg;
  1984. }
  1985. #endregion
  1986. if (procedure.NodeType == Constant.ProcedureNodeType.Middle.GetHashCode())
  1987. {
  1988. #region 中间工序 修改在产产品数据的当前工序,清空返工工序字段
  1989. InProductionEntity addInProductionEntity = new InProductionEntity();
  1990. addInProductionEntity.BarCode = barcode;
  1991. //流程工序ID
  1992. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1993. // 当前工序
  1994. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1995. // 生产数据ID
  1996. addInProductionEntity.ProductionDataID = productionDataID;
  1997. // 工序模型
  1998. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1999. // 工序类别
  2000. addInProductionEntity.ModelType = procedure.ModelType;
  2001. // 生产工号
  2002. addInProductionEntity.UserID = workUserID;
  2003. // 缺陷标识
  2004. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2005. #region 更新在产表窑车窑炉字段
  2006. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2007. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2008. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2009. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2010. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2011. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2012. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2013. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2014. #endregion
  2015. // 执行修改
  2016. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2017. // 执行失败
  2018. if (!string.IsNullOrEmpty(errMsg))
  2019. {
  2020. return errMsg;
  2021. }
  2022. #endregion
  2023. }
  2024. else if (procedure.NodeType == Constant.ProcedureNodeType.End.GetHashCode())
  2025. {
  2026. #region 结束工序 添加成品数据 删除在产产品数据
  2027. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  2028. finishedProduct.BarCode = barcode;
  2029. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  2030. if (!string.IsNullOrEmpty(errMsg))
  2031. {
  2032. return errMsg;
  2033. }
  2034. InProductionEntity delInProductionEntity = new InProductionEntity();
  2035. delInProductionEntity.BarCode = barcode;
  2036. // 执行删除 在产数据
  2037. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  2038. // 执行失败
  2039. if (!string.IsNullOrEmpty(errMsg))
  2040. {
  2041. return errMsg;
  2042. }
  2043. #endregion
  2044. }
  2045. //#region 添加生产者数据
  2046. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2047. //if (!string.IsNullOrEmpty(errMsg))
  2048. //{
  2049. // return errMsg;
  2050. //}
  2051. //#endregion
  2052. }
  2053. #region 插入窑车生产数据表
  2054. errMsg = AddKilnCarData(oracleTrConn,
  2055. accountDate,
  2056. kilnCarID,
  2057. kilnCarBatchNo,
  2058. workUserID,
  2059. workUserCode,
  2060. workUserName,
  2061. Remarks,
  2062. sUserInfo, maxClassesSettingID);
  2063. if (!string.IsNullOrEmpty(errMsg))
  2064. {
  2065. return errMsg;
  2066. }
  2067. #endregion
  2068. //#region 窑车生产者
  2069. //// 查询新插入的生产数据ID
  2070. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  2071. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  2072. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  2073. //if (!string.IsNullOrEmpty(errMsg))
  2074. //{
  2075. // return errMsg;
  2076. //}
  2077. //#endregion
  2078. #region 删除TP_PM_KilnCarGoods数据 按照窑车ID
  2079. errMsg = DeleteKilnCarGoodsByKilnCarID(oracleTrConn, kilnCarID);
  2080. if (!string.IsNullOrEmpty(errMsg))
  2081. {
  2082. return errMsg;
  2083. }
  2084. #endregion
  2085. }
  2086. return errMsg;
  2087. }
  2088. catch (Exception ex)
  2089. {
  2090. throw ex;
  2091. }
  2092. }
  2093. /// <summary>
  2094. /// 窑车补件计件
  2095. /// </summary>
  2096. /// <param name="oracleTrConn">数据连接对象</param>
  2097. /// <param name="procedure">工序对象</param>
  2098. /// <param name="barcodeTable">条码信息</param>
  2099. /// <param name="sUserInfo">用户基本信息</param>
  2100. /// <param name="goodsID">返回的产品ID</param>
  2101. /// <param name="goodsCode">返回的产品Code</param>
  2102. /// <param name="goodsName">返回的产品名称</param>
  2103. /// <returns>string</returns>
  2104. /// <remarks>
  2105. /// 张国印 2014.10.05 新建
  2106. /// </remarks>
  2107. private static string AddKilnCarSupplement(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2108. out int goodsID, out string goodsCode, out string goodsName)
  2109. {
  2110. try
  2111. {
  2112. goodsID = Constant.INT_IS_ZERO;
  2113. goodsCode = null;
  2114. goodsName = null;
  2115. string groutingUserCode = string.Empty;
  2116. // 获得账务日期
  2117. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2118. string errMsg = "";
  2119. // 生产工号
  2120. int workUserID = Constant.INT_IS_ZERO;
  2121. // 生产工号Code
  2122. string workUserCode = string.Empty;
  2123. // 生产工号Name
  2124. string workUserName = string.Empty;
  2125. // 本批采集的批次号
  2126. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  2127. // 窑车Code
  2128. string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2129. // 窑车批次号
  2130. string kilnCarBatchNo = System.Guid.NewGuid().ToString();
  2131. // 窑车状态
  2132. string kilnCarStatus = string.Empty;
  2133. #region 校验窑车是否可装车
  2134. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2135. if (!string.IsNullOrEmpty(errMsg))
  2136. {
  2137. return errMsg;
  2138. }
  2139. #endregion
  2140. // 窑炉ID
  2141. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2142. //// 窑车ID
  2143. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2144. int kilnID = 0;
  2145. // 窑车ID
  2146. int kilnCarID = 0;
  2147. // 条码信息
  2148. foreach (DataRow barcodeRow in barcodeTable.Rows)
  2149. {
  2150. kilnID = Convert.ToInt32(barcodeRow["kilnID"]);
  2151. kilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2152. //窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  2153. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2154. // 条码
  2155. string barcode = barcodeRow["Barcode"].ToString();
  2156. // 生产工号
  2157. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2158. workUserCode = barcodeRow["UserCode"].ToString();
  2159. workUserName = barcodeRow["UserName"].ToString();
  2160. //#region 校验条码有效性
  2161. //errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2162. //if (!string.IsNullOrEmpty(errMsg))
  2163. //{
  2164. // return errMsg;
  2165. //}
  2166. //#endregion
  2167. if (procedure.CollectType == 1)
  2168. {
  2169. #region 校验条码有效性
  2170. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2171. if (!string.IsNullOrEmpty(errMsg))
  2172. {
  2173. return errMsg;
  2174. }
  2175. #endregion
  2176. }
  2177. else
  2178. {
  2179. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  2180. tp_pm_groutingdailydetail.goodscode,
  2181. tp_pm_groutingdailydetail.goodsname,
  2182. tp_pm_groutingdailydetail.usercode as groutingUserCode
  2183. from tp_pm_groutingdailydetail where barcode=:barcode
  2184. ";
  2185. OracleParameter[] ReFireparas = new OracleParameter[] {
  2186. new OracleParameter(":barcode",barcode),
  2187. };
  2188. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  2189. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  2190. {
  2191. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  2192. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  2193. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  2194. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  2195. }
  2196. }
  2197. // 查询新插入的生产数据ID
  2198. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2199. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2200. int productionDataID = 0;
  2201. if (!string.IsNullOrEmpty(idStr))
  2202. {
  2203. productionDataID = int.Parse(idStr);
  2204. }
  2205. else
  2206. {
  2207. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2208. }
  2209. int? ClassesSettingID = null;//班次配置ID
  2210. #region 添加生产者数据
  2211. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2212. if (!string.IsNullOrEmpty(errMsg))
  2213. {
  2214. return errMsg;
  2215. }
  2216. #endregion
  2217. #region 添加生产数据
  2218. ProductionDataEntity productionData = new ProductionDataEntity();
  2219. #region 属性赋值
  2220. productionData.ClassesSettingID = ClassesSettingID;
  2221. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2222. productionData.Barcode = barcode;
  2223. productionData.CentralizedBatchNo = centralizedBatchNo;
  2224. productionData.ProductionLineID = procedure.ProductionLineID;
  2225. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2226. productionData.ProductionLineName = procedure.ProductionlineName;
  2227. productionData.CompleteProcedureID = procedure.ProcedureID;
  2228. productionData.ProcedureCode = procedure.ProcedureCode;
  2229. productionData.ProcedureName = procedure.ProcedureName;
  2230. productionData.ProcedureModel = procedure.ProcedureModel;
  2231. productionData.ModelType = procedure.ModelType;
  2232. productionData.NodeType = procedure.NodeType;
  2233. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2234. productionData.ReworkProcedureID = null;
  2235. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2236. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2237. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2238. productionData.OrganizationID = procedure.OrganizationID;
  2239. productionData.GoodsID = goodsID;
  2240. productionData.GoodsCode = goodsCode;
  2241. productionData.GoodsName = goodsName;
  2242. productionData.UserID = workUserID;
  2243. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2244. productionData.UserName = barcodeRow["UserName"].ToString();
  2245. productionData.PieceType = procedure.PieceType;
  2246. #region 窑炉窑车属性
  2247. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2248. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2249. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2250. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2251. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2252. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2253. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2254. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2255. #endregion
  2256. #endregion
  2257. string OutSpecialRepairflag = "0";//干补标识
  2258. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2259. if (!string.IsNullOrEmpty(errMsg))
  2260. {
  2261. return errMsg;
  2262. }
  2263. #endregion
  2264. #region 修改在产产品数据的当前工序,清空返工工序字段
  2265. InProductionEntity addInProductionEntity = new InProductionEntity();
  2266. addInProductionEntity.BarCode = barcode;
  2267. //流程工序
  2268. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2269. // 当前工序
  2270. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  2271. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2272. //生产数据ID
  2273. addInProductionEntity.ProductionDataID = productionDataID;
  2274. // 工序模型
  2275. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2276. // 工序类别
  2277. addInProductionEntity.ModelType = procedure.ModelType;
  2278. // 生产工号
  2279. addInProductionEntity.UserID = workUserID;
  2280. // 缺陷标识
  2281. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2282. #region 更新在产表窑车窑炉字段
  2283. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2284. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2285. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2286. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2287. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2288. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2289. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2290. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2291. #endregion
  2292. // 执行修改
  2293. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2294. // 执行失败
  2295. if (!string.IsNullOrEmpty(errMsg))
  2296. {
  2297. return errMsg;
  2298. }
  2299. #endregion
  2300. //#region 添加生产者数据
  2301. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2302. //if (!string.IsNullOrEmpty(errMsg))
  2303. //{
  2304. // return errMsg;
  2305. //}
  2306. //#endregion
  2307. #region 插入窑车产品表
  2308. errMsg = AddKilnCarGoods(oracleTrConn,
  2309. barcode,
  2310. kilnCarID,
  2311. goodsID,
  2312. productionData.KilnCarPosition.Value,
  2313. kilnCarBatchNo,
  2314. workUserID,
  2315. workUserCode,
  2316. workUserName,
  2317. sUserInfo);
  2318. if (!string.IsNullOrEmpty(errMsg))
  2319. {
  2320. return errMsg;
  2321. }
  2322. #endregion
  2323. }
  2324. return errMsg;
  2325. }
  2326. catch (Exception ex)
  2327. {
  2328. throw ex;
  2329. }
  2330. }
  2331. /// <summary>
  2332. /// 插入窑车生产数据表(装车)
  2333. /// </summary>
  2334. /// <param name="oracleTrConn">连接对象</param>
  2335. /// <param name="accountDate">账务日期</param>
  2336. /// <param name="kilnCarID">窑车ID</param>
  2337. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2338. /// <param name="workUserID">生产工号ID</param>
  2339. /// <param name="workUserCode">生产工号Code</param>
  2340. /// <param name="workUserName">生产工号Name</param>
  2341. /// <param name="sUserInfo">用户基本信息</param>
  2342. /// <returns>string</returns>
  2343. private static string AddKilnCarDataCreateTime(IDBTransaction oracleTrConn,
  2344. DateTime accountDate,
  2345. int kilnCarID,
  2346. string kilnCarBatchNo,
  2347. int workUserID,
  2348. string workUserCode,
  2349. string workUserName,
  2350. string remarks,
  2351. DateTime? createtime,
  2352. SUserInfo sUserInfo)
  2353. {
  2354. #region SQL
  2355. string sql = "insert into tp_pm_kilncardata"
  2356. + " (kilncarbatchno,"
  2357. + " kilncarid,"
  2358. + " kilnid,"
  2359. + " productionlineid,"
  2360. + " procedureid,"
  2361. + " procedurecode,"
  2362. + " procedurename,"
  2363. + " proceduremodel,"
  2364. + " modeltype,"
  2365. + " piecetype,"
  2366. + " kilncarstatus,"
  2367. + " UserID,"
  2368. + " UserCode,"
  2369. + " UserName,"
  2370. + " loadingtime,"
  2371. + " intokilntime,"
  2372. + " outkilntime,"
  2373. + " unloadingtime,"
  2374. + " accountdate,"
  2375. + " accountid,"
  2376. + " createuserid,"
  2377. + " updateuserid,"
  2378. + " createtime,"
  2379. + " remarks)"
  2380. + " select "
  2381. + " :pkilncarbatchno,"
  2382. + " kilncarid,"
  2383. + " kilnid,"
  2384. + " productionlineid,"
  2385. + " procedureid,"
  2386. + " procedurecode,"
  2387. + " procedurename,"
  2388. + " proceduremodel,"
  2389. + " modeltype,"
  2390. + " piecetype,"
  2391. + " kilncarstatus,"
  2392. + " :puserID,"
  2393. + " :puserCode,"
  2394. + " :puserName,"
  2395. + " loadingtime,"
  2396. + " intokilntime,"
  2397. + " outkilntime,"
  2398. + " unloadingtime,"
  2399. + " :paccountdate,"
  2400. + " :paccountid,"
  2401. + " :pcreateuserid,"
  2402. + " :pupdateuserid,"
  2403. + " :createtime,"
  2404. + " :remarks"
  2405. + " from tp_pm_kilncarstatus"
  2406. + " where kilncarid = :pkilncarid";
  2407. #endregion
  2408. #region 参数
  2409. OracleParameter[] paras = new OracleParameter[] {
  2410. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2411. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2412. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2413. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2414. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2415. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2416. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2417. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2418. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2419. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2420. new OracleParameter(":createtime",OracleDbType.Date,Convert.ToDateTime(createtime),ParameterDirection.Input),
  2421. };
  2422. #endregion
  2423. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2424. // 保存失败
  2425. if (result != Constant.INT_IS_ONE)
  2426. {
  2427. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2428. }
  2429. // 保存成功返回null
  2430. return null;
  2431. }
  2432. /// <summary>
  2433. /// 插入窑车生产数据表
  2434. /// </summary>
  2435. /// <param name="oracleTrConn">连接对象</param>
  2436. /// <param name="accountDate">账务日期</param>
  2437. /// <param name="kilnCarID">窑车ID</param>
  2438. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2439. /// <param name="workUserID">生产工号ID</param>
  2440. /// <param name="workUserCode">生产工号Code</param>
  2441. /// <param name="workUserName">生产工号Name</param>
  2442. /// <param name="sUserInfo">用户基本信息</param>
  2443. /// <returns>string</returns>
  2444. private static string AddKilnCarData(IDBTransaction oracleTrConn,
  2445. DateTime accountDate,
  2446. int kilnCarID,
  2447. string kilnCarBatchNo,
  2448. int workUserID,
  2449. string workUserCode,
  2450. string workUserName,
  2451. string remarks,
  2452. SUserInfo sUserInfo, int? ClassesSettingID)
  2453. {
  2454. #region SQL
  2455. string sql = "insert into tp_pm_kilncardata"
  2456. + " (kilncarbatchno,"
  2457. + " kilncarid,"
  2458. + " kilnid,"
  2459. + " productionlineid,"
  2460. + " procedureid,"
  2461. + " procedurecode,"
  2462. + " procedurename,"
  2463. + " proceduremodel,"
  2464. + " modeltype,"
  2465. + " piecetype,"
  2466. + " kilncarstatus,"
  2467. + " UserID,"
  2468. + " UserCode,"
  2469. + " UserName,"
  2470. + " loadingtime,"
  2471. + " intokilntime,"
  2472. + " outkilntime,"
  2473. + " unloadingtime,"
  2474. + " accountdate,"
  2475. + " accountid,"
  2476. + " createuserid,"
  2477. + " updateuserid,"
  2478. + " classesSettingID,"
  2479. + " remarks)"
  2480. + " select "
  2481. + " :pkilncarbatchno,"
  2482. + " kilncarid,"
  2483. + " kilnid,"
  2484. + " productionlineid,"
  2485. + " procedureid,"
  2486. + " procedurecode,"
  2487. + " procedurename,"
  2488. + " proceduremodel,"
  2489. + " modeltype,"
  2490. + " piecetype,"
  2491. + " kilncarstatus,"
  2492. + " :puserID,"
  2493. + " :puserCode,"
  2494. + " :puserName,"
  2495. + " loadingtime,"
  2496. + " intokilntime,"
  2497. + " outkilntime,"
  2498. + " unloadingtime,"
  2499. + " :paccountdate,"
  2500. + " :paccountid,"
  2501. + " :pcreateuserid,"
  2502. + " :pupdateuserid,"
  2503. + " :classesSettingID,"
  2504. + " :remarks"
  2505. + " from tp_pm_kilncarstatus"
  2506. + " where kilncarid = :pkilncarid";
  2507. #endregion
  2508. #region 参数
  2509. OracleParameter[] paras = new OracleParameter[] {
  2510. new OracleParameter(":classesSettingID",OracleDbType.Int32,ClassesSettingID,ParameterDirection.Input),
  2511. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2512. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2513. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2514. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2515. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2516. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2517. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2518. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2519. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2520. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2521. };
  2522. #endregion
  2523. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2524. // 保存失败
  2525. if (result != Constant.INT_IS_ONE)
  2526. {
  2527. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2528. }
  2529. // 保存成功返回null
  2530. return null;
  2531. }
  2532. /// <summary>
  2533. /// 插入窑车产品表
  2534. /// </summary>
  2535. /// <param name="oracleTrConn">连接对象</param>
  2536. /// <param name="barcode">条码</param>
  2537. /// <param name="kilnCarID">窑车号</param>
  2538. /// <param name="goodsID">产品ID</param>
  2539. /// <param name="KilnCarPosition">窑车位置</param>
  2540. /// <param name="kilnCarBatchNo">装车批次</param>
  2541. /// <param name="sUserInfo">用户基本信息</param>
  2542. /// <returns>string</returns>
  2543. private static string AddKilnCarGoods(IDBTransaction oracleTrConn, string barcode, int kilnCarID, int goodsID, int KilnCarPosition, string kilnCarBatchNo, int workUserID,
  2544. string workUserCode,
  2545. string workUserName, SUserInfo sUserInfo)
  2546. {
  2547. string sqlExist = "select 1 from tp_pm_kilncargoods where barcode=:barcode and accountid=:accountid";
  2548. OracleParameter[] parasExist = new OracleParameter[] {
  2549. new OracleParameter(":barcode",barcode),
  2550. new OracleParameter(":accountid",sUserInfo.AccountID),
  2551. };
  2552. oracleTrConn.ExecuteNonQuery(sqlExist, parasExist);
  2553. DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  2554. if (dsExist != null && dsExist.Tables[0].Rows.Count == 0)
  2555. {
  2556. string sql = "insert into tp_pm_kilncargoods"
  2557. + " (barcode,"
  2558. + " kilncarid,"
  2559. + " goodsid,"
  2560. + " kilncarposition,"
  2561. + " kilncarbatchno,"
  2562. + " accountid,"
  2563. + " userid,"
  2564. + " usercode,"
  2565. + " username,"
  2566. + " createuserid,"
  2567. + " updateuserid)"
  2568. + " values"
  2569. + " (:barcode,"
  2570. + " :kilncarid,"
  2571. + " :goodsid,"
  2572. + " :kilncarposition,"
  2573. + " :kilncarbatchno,"
  2574. + " :accountid,"
  2575. + " :userid,"
  2576. + " :usercode,"
  2577. + " :username,"
  2578. + " :createuserid,"
  2579. + " :updateuserid)";
  2580. #region 参数
  2581. OracleParameter[] paras = new OracleParameter[] {
  2582. new OracleParameter(":barcode",barcode),
  2583. new OracleParameter(":kilncarid",kilnCarID),
  2584. new OracleParameter(":goodsid",goodsID),
  2585. new OracleParameter(":kilncarposition",KilnCarPosition),
  2586. new OracleParameter(":kilncarbatchno",kilnCarBatchNo),
  2587. new OracleParameter(":accountid",sUserInfo.AccountID),
  2588. new OracleParameter(":createuserid",sUserInfo.UserID),
  2589. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2590. new OracleParameter(":userid",workUserID),
  2591. new OracleParameter(":usercode",workUserCode),
  2592. new OracleParameter(":username",workUserName),
  2593. };
  2594. #endregion
  2595. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2596. // 保存失败
  2597. if (result != Constant.INT_IS_ONE)
  2598. {
  2599. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2600. }
  2601. }
  2602. // 保存成功返回null
  2603. return null;
  2604. }
  2605. /// <summary>
  2606. /// 查询本次批次号
  2607. /// </summary>
  2608. /// <param name="oracleTrConn">连接对象</param>
  2609. /// <param name="kilnCarID">窑车ID</param>
  2610. /// <returns>string</returns>
  2611. private static string GetKilnCarBatchNoByKilnCarID(IDBTransaction oracleTrConn, int kilnCarID)
  2612. {
  2613. string sql = "SELECT Max(KilnCarBatchNo) FROM TP_PM_KilnCarGoods where KilnCarID = :kilnCarID";
  2614. #region 参数
  2615. OracleParameter[] paras = new OracleParameter[] {
  2616. new OracleParameter(":kilnCarID",kilnCarID),
  2617. };
  2618. #endregion
  2619. string batchNo = oracleTrConn.GetSqlResultToStr(sql, paras);
  2620. if (!string.IsNullOrEmpty(batchNo))
  2621. {
  2622. return batchNo;
  2623. }
  2624. else
  2625. {
  2626. return System.Guid.NewGuid().ToString();
  2627. }
  2628. }
  2629. /// <summary>
  2630. /// 插入窑车状态表
  2631. /// </summary>
  2632. /// <param name="oracleTrConn">连接对象</param>
  2633. /// <param name="procedure">工序ID</param>
  2634. /// <param name="kilnCarID">窑车ID</param>
  2635. /// <param name="kilnID">窑炉ID</param>
  2636. /// <param name="sUserInfo">用户基本信息</param>
  2637. /// <returns>string</returns>
  2638. private static string AddkilnCarStatus(IDBTransaction oracleTrConn, ProcedureEntity procedure, int kilnCarID, int kilnID, string kilnCarBatchNo, SUserInfo sUserInfo)
  2639. {
  2640. #region SQL
  2641. string sql = " insert into tp_pm_kilncarstatus "
  2642. + " (kilncarid, "
  2643. + " kilnid, "
  2644. + " productionlineid, "
  2645. + " procedureid, "
  2646. + " procedurecode, "
  2647. + " procedurename, "
  2648. + " proceduremodel, "
  2649. + " modeltype, "
  2650. + " piecetype, "
  2651. + " kilncarstatus, "
  2652. + " loadingtime, "
  2653. + " accountid, "
  2654. + " createuserid, "
  2655. + " updateuserid,kilnCarBatchNo) "
  2656. + " values "
  2657. + " (:kilncarid, "
  2658. + " :kilnid, "
  2659. + " :productionlineid, "
  2660. + " :procedureid, "
  2661. + " :procedurecode, "
  2662. + " :procedurename, "
  2663. + " :proceduremodel, "
  2664. + " :modeltype, "
  2665. + " :piecetype, "
  2666. + " '0', "
  2667. + " sysdate, "
  2668. + " :accountid, "
  2669. + " :createuserid, "
  2670. + " :updateuserid,:kilnCarBatchNo)";
  2671. #endregion
  2672. #region 参数
  2673. OracleParameter[] paras = new OracleParameter[] {
  2674. new OracleParameter(":kilncarid",kilnCarID),
  2675. new OracleParameter(":kilnid",kilnID),
  2676. new OracleParameter(":productionlineid",procedure.ProductionLineID),
  2677. new OracleParameter(":procedureid",procedure.ProcedureID),
  2678. new OracleParameter(":procedurecode",procedure.ProcedureCode),
  2679. new OracleParameter(":procedurename",procedure.ProcedureName),
  2680. new OracleParameter(":proceduremodel",procedure.ProcedureModel),
  2681. new OracleParameter(":modeltype",procedure.ModelType),
  2682. new OracleParameter(":piecetype",procedure.PieceType),
  2683. new OracleParameter(":accountID",sUserInfo.AccountID),
  2684. new OracleParameter(":createuserid",sUserInfo.UserID),
  2685. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2686. new OracleParameter(":kilnCarBatchNo",kilnCarBatchNo),
  2687. };
  2688. #endregion
  2689. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2690. // 保存失败
  2691. if (result != Constant.INT_IS_ONE)
  2692. {
  2693. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2694. }
  2695. // 保存成功返回null
  2696. return null;
  2697. }
  2698. /// <summary>
  2699. /// 更新窑车状态表中的对应的时间
  2700. /// </summary>
  2701. /// <param name="oracleTrConn">数据连接</param>
  2702. /// <param name="kilnCarID">窑车ID</param>
  2703. /// <param name="pModelType">操作类型</param>
  2704. /// <param name="sUserInfo">用户基本信息</param>
  2705. /// <returns>
  2706. /// 张国印 2014.10.04 新建
  2707. /// </returns>
  2708. private static string UpdatekilnCarStatus(IDBTransaction oracleTrConn, int kilnCarID, Constant.ProcedureModelType pModelType, SUserInfo sUserInfo, ProcedureEntity procedure, string kilnCarBatchNo)
  2709. {
  2710. if (pModelType == Constant.ProcedureModelType.LoadCar)
  2711. {
  2712. //procedure.ProcedureID,
  2713. //procedure.ProcedureCode,
  2714. //procedure.ProcedureName,
  2715. //procedure.ModelType
  2716. #region 装窑车操作时,更新tp_pm_kilncarstatus的装车时间
  2717. #region SQL语句和参数
  2718. string sql = " Update tp_pm_kilncarstatus Set"
  2719. + " KilnCarStatus = :pKilnCarStatus, "
  2720. + " LoadingTime = sysdate, "
  2721. + " IntoKilnTime = null, "
  2722. + " OutKilnTime = null, "
  2723. + " UnloadingTime = null, "
  2724. + " UpdateUserID = :pUpdateUserID, "
  2725. + " ProcedureID = :ProcedureID, "
  2726. + " ProcedureCode = :ProcedureCode, "
  2727. + " ProcedureName = :ProcedureName, "
  2728. + " ModelType = :ModelType, "
  2729. + " kilnCarBatchNo = :kilnCarBatchNo "
  2730. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2731. OracleParameter[] paras = new OracleParameter[]
  2732. {
  2733. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2734. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2735. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2736. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2737. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2738. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2739. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2740. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2741. new OracleParameter(":kilnCarBatchNo", OracleDbType.Varchar2, kilnCarBatchNo, ParameterDirection.Input),
  2742. };
  2743. #endregion
  2744. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2745. // 保存失败
  2746. if (result != Constant.INT_IS_ONE)
  2747. {
  2748. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2749. }
  2750. #endregion
  2751. }
  2752. else if (pModelType == Constant.ProcedureModelType.IntoKiln)
  2753. {
  2754. #region 入窑操作时,更新tp_pm_kilncarstatus的入窑时间
  2755. #region SQL语句和参数
  2756. string sql = " Update tp_pm_kilncarstatus Set"
  2757. + " KilnCarStatus = :pKilnCarStatus, "
  2758. + " IntoKilnTime = sysdate, "
  2759. + " UpdateUserID = :pUpdateUserID, "
  2760. + " ProcedureID = :ProcedureID, "
  2761. + " ProcedureCode = :ProcedureCode, "
  2762. + " ProcedureName = :ProcedureName, "
  2763. + " ModelType = :ModelType "
  2764. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2765. OracleParameter[] paras = new OracleParameter[]
  2766. {
  2767. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 1, ParameterDirection.Input),
  2768. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2769. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2770. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2771. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2772. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2773. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2774. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2775. };
  2776. #endregion
  2777. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2778. // 保存失败
  2779. if (result != Constant.INT_IS_ONE)
  2780. {
  2781. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2782. }
  2783. #endregion
  2784. }
  2785. else if (pModelType == Constant.ProcedureModelType.OutKiln)
  2786. {
  2787. #region 出窑操作时,更新tp_pm_kilncarstatus的出窑时间
  2788. #region SQL语句和参数
  2789. string sql = " Update tp_pm_kilncarstatus Set"
  2790. + " OutKilnTime = sysdate, "
  2791. + " UpdateUserID = :pUpdateUserID, "
  2792. + " ProcedureID = :ProcedureID, "
  2793. + " ProcedureCode = :ProcedureCode, "
  2794. + " ProcedureName = :ProcedureName, "
  2795. + " ModelType = :ModelType "
  2796. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2797. OracleParameter[] paras = new OracleParameter[]
  2798. {
  2799. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2800. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2801. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2802. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2803. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2804. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2805. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2806. };
  2807. #endregion
  2808. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2809. // 保存失败
  2810. if (result != Constant.INT_IS_ONE)
  2811. {
  2812. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2813. }
  2814. #endregion
  2815. }
  2816. else if (pModelType == Constant.ProcedureModelType.UnloadCar)
  2817. {
  2818. #region 卸窑车操作时,更新tp_pm_kilncarstatus的卸窑车时间
  2819. #region SQL语句和参数
  2820. string sql = " Update tp_pm_kilncarstatus Set"
  2821. + " KilnCarStatus = :pKilnCarStatus, "
  2822. //+ " LoadingTime = null, "
  2823. //+ " IntoKilnTime = null, "
  2824. //+ " OutKilnTime = null, "
  2825. + " UnloadingTime = sysdate, "
  2826. + " UpdateUserID = :pUpdateUserID, "
  2827. + " ProcedureID = :ProcedureID, "
  2828. + " ProcedureCode = :ProcedureCode, "
  2829. + " ProcedureName = :ProcedureName, "
  2830. + " ModelType = :ModelType "
  2831. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2832. OracleParameter[] paras = new OracleParameter[]
  2833. {
  2834. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2835. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2836. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  2837. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  2838. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  2839. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  2840. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  2841. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  2842. };
  2843. #endregion
  2844. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2845. // 保存失败
  2846. if (result != Constant.INT_IS_ONE)
  2847. {
  2848. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  2849. }
  2850. #endregion
  2851. }
  2852. // 保存成功返回null
  2853. return string.Empty;
  2854. }
  2855. /// <summary>
  2856. /// 校验窑车是否可用
  2857. /// </summary>
  2858. /// <param name="oracleTrConn">连接对象</param>
  2859. /// <param name="pProcedureId">工序ID</param>
  2860. /// <param name="kilnCarCode">窑车号</param>
  2861. /// <param name="pModelType">操作类型</param>
  2862. /// <param name="sUserInfo">用户基本信息</param>
  2863. /// <param name="kilnCarStatus">窑车状态</param>
  2864. /// <returns>string</returns>
  2865. private static string CheckKilnCarrStatus(IDBTransaction oracleTrConn, int pProcedureId, string kilnCarCode, int pModelType, SUserInfo sUserInfo, out string kilnCarStatus)
  2866. {
  2867. kilnCarStatus = string.Empty;
  2868. OracleParameter[] paras = new OracleParameter[]{
  2869. new OracleParameter("in_accountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  2870. new OracleParameter("in_kilnCarCode",OracleDbType.NVarchar2, kilnCarCode,ParameterDirection.Input),
  2871. new OracleParameter("in_modelType",OracleDbType.Int32, pModelType,ParameterDirection.Input),
  2872. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  2873. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  2874. new OracleParameter("in_procedureid",OracleDbType.Int32, pProcedureId,ParameterDirection.Input),
  2875. // 验证能否卸窑
  2876. new OracleParameter("in_UserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  2877. };
  2878. DataSet returnDataSet = oracleTrConn.ExecStoredProcedure("PRO_PM_CheckKilnCar", paras);
  2879. string errMsg = paras[3].Value.ToString() == "null" ? string.Empty : paras[3].Value.ToString();
  2880. if (string.IsNullOrEmpty(errMsg))
  2881. {
  2882. if (pModelType == (int)Constant.ProcedureModelType.LoadCar)
  2883. {
  2884. kilnCarStatus = returnDataSet.Tables[0].Rows[0]["KilnCarStatus"].ToString();
  2885. }
  2886. }
  2887. return errMsg;
  2888. }
  2889. /// <summary>
  2890. /// 添加生产者
  2891. /// </summary>
  2892. /// <param name="oracleTrConn">连接对象</param>
  2893. /// <param name="accountDate">账务日期</param>
  2894. /// <param name="productionDataID">生产数据ID</param>
  2895. /// <param name="workUserID">生产工号ID</param>
  2896. /// <param name="workUserCode">生产工号Code</param>
  2897. /// <param name="sUserInfo">用户基本信息</param>
  2898. /// <returns>string</returns>
  2899. private static string AddProducer(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo, ref int? ClassesSettingID)
  2900. {
  2901. // 参数
  2902. OracleParameter[] paras;
  2903. #region 查询班次配置表是否有数据
  2904. string sql = "select max(ClassesSettingID)"
  2905. + " from tp_pc_classessetting"
  2906. + " where Valueflag =1 and AccountID = :accountID"
  2907. + " and UserID = :userID"
  2908. + " and AccountDate = :accountDate";
  2909. paras = new OracleParameter[] {
  2910. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2911. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2912. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2913. };
  2914. string countStr = oracleTrConn.GetSqlResultToStr(sql, paras);
  2915. int classesSettingID = 0;
  2916. #endregion
  2917. #region 没有班次配置数据,将工号所属员工插入班次配置表中
  2918. if (string.IsNullOrEmpty(countStr) || Constant.INT_IS_ZERO == int.Parse(countStr))
  2919. {
  2920. // 查询新插入的班次配置表ID
  2921. sql = "select SEQ_PC_ClassesSetting_ID.nextval from dual";
  2922. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2923. // 新插入的班次配置表ID
  2924. if (!string.IsNullOrEmpty(idStr))
  2925. {
  2926. classesSettingID = int.Parse(idStr);
  2927. }
  2928. else
  2929. {
  2930. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2931. }
  2932. ClassesSettingID = Convert.ToInt32(classesSettingID);
  2933. #region 班次配置总表
  2934. sql = "insert into tp_pc_classessetting"
  2935. + " (ClassesSettingID,accountdate, "
  2936. + " userid, "
  2937. + " usercode, "
  2938. + " accountid, "
  2939. + " createuserid, "
  2940. + " updateuserid,ORGANIZATIONID)"
  2941. + " select "
  2942. + " :classesSettingID, "
  2943. + " :accountdate, "
  2944. + " USERID, "
  2945. + " UserCode, "
  2946. + " accountid,"
  2947. + " :createuserid,"
  2948. + " :updateuserid,ORGANIZATIONID"
  2949. + " from TP_MST_User"
  2950. + " where UserID = :userID";
  2951. paras = new OracleParameter[] {
  2952. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  2953. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2954. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2955. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2956. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2957. };
  2958. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2959. // 失败
  2960. if (result != Constant.INT_IS_ONE)
  2961. {
  2962. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2963. }
  2964. #endregion
  2965. #region 班次配置明细SQL
  2966. sql = " insert into tp_pc_classesdetail"
  2967. + " (classessettingid,"
  2968. + " accountdate,"
  2969. + " userid,"
  2970. + " usercode,"
  2971. + " UJobsID,"
  2972. + " staffid,"
  2973. + " SJobsID,"
  2974. + " staffstatus,"
  2975. + " accountid,"
  2976. + " createuserid,"
  2977. + " updateuserid,Uorganizationid,Sorganizationid)"
  2978. + " select "
  2979. + " :classessettingid,"
  2980. + " :accountdate,"
  2981. + " userStaff.Userid,"
  2982. + " :usercode,"
  2983. + " userStaff.Ujobsid,"
  2984. + " userStaff.Staffid,"
  2985. + " staff.Jobs,"
  2986. + " staff.staffstatus,"
  2987. + " :accountID,"
  2988. + " :createuserid,"
  2989. + " :updateuserid,user2.organizationid,staff.organizationid"
  2990. + " from TP_MST_UserStaff userStaff"
  2991. + " inner join tp_hr_staff staff on staff.staffid = userStaff.Staffid"
  2992. + " inner join tp_mst_user user2 on userStaff.userid = user2.userid"
  2993. + " where (staff.StaffStatus = 1 or staff.StaffStatus = 2)"
  2994. + " and staff.ValueFlag = 1"
  2995. + " and staff.AccountID = :accountID"
  2996. + " and userStaff.UserID = :userID";
  2997. paras = new OracleParameter[] {
  2998. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  2999. new OracleParameter(":accountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3000. new OracleParameter(":usercode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  3001. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3002. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3003. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3004. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3005. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3006. };
  3007. result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3008. // 失败
  3009. if (result == Constant.INT_IS_ZERO)
  3010. {
  3011. return string.Format(Messages.MSG_CMN_W007, "生产工号[" + workUserCode + "]没有配置生产员工");
  3012. }
  3013. #endregion
  3014. }
  3015. else
  3016. {
  3017. ClassesSettingID = int.Parse(countStr);
  3018. }
  3019. #endregion
  3020. //#region 将班次配置表中的数据插入生产者表中
  3021. //sql = "insert into tp_pm_producer"
  3022. // + " (productiondataid,"
  3023. // + " staffid,"
  3024. // + " userid,"
  3025. // + " usercode,"
  3026. // + " UJobsID,"
  3027. // + " staffstatus,"
  3028. // + " SJobsID,"
  3029. // + " classessettingid"
  3030. // + " )"
  3031. // + " select :productiondataid,"
  3032. // + " staffid,"
  3033. // + " userid,"
  3034. // + " usercode,"
  3035. // + " UJobsID,"
  3036. // + " staffstatus,"
  3037. // + " SJobsID,"
  3038. // + " :classessettingid"
  3039. // + " from tp_pc_classesdetail"
  3040. // + " where ValueFlag = 1"
  3041. // + " and classessettingid = (select max(ClassesSettingID)"
  3042. // + " from TP_PC_ClassesSetting"
  3043. // + " where ValueFlag = 1 and AccountDate=:accountDate"
  3044. // + " and UserID = :userID)";
  3045. //paras = new OracleParameter[] {
  3046. // new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  3047. // new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID.ToString()=="0"?null:classesSettingID.ToString(),ParameterDirection.Input),
  3048. // new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3049. // new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3050. // };
  3051. //int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3052. //// 失败
  3053. //if (resultCount == Constant.INT_IS_ZERO)
  3054. //{
  3055. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3056. //}
  3057. //#endregion
  3058. return null;
  3059. }
  3060. /// <summary>
  3061. /// 窑车生产者
  3062. /// </summary>
  3063. /// <param name="oracleTrConn">连接对象</param>
  3064. /// <param name="accountDate">账务日期</param>
  3065. /// <param name="kilnCarDataID">窑车生产数据ID</param>
  3066. /// <param name="workUserID">生产工号ID</param>
  3067. /// <param name="sUserInfo">用户基本信息</param>
  3068. /// <returns>string</returns>
  3069. private static string AddKilnCarProducer(IDBTransaction oracleTrConn, DateTime accountDate, int kilnCarDataID, int workUserID, SUserInfo sUserInfo)
  3070. {
  3071. // 参数
  3072. OracleParameter[] paras;
  3073. #region 将班次配置表中的数据插入生产者表中
  3074. string sql = "insert into TP_PM_KilnCarProducer"
  3075. + " (KilnCarDataID,"
  3076. + " staffid,"
  3077. + " userid,"
  3078. + " usercode,"
  3079. + " Ujobsid,"
  3080. + " staffstatus,"
  3081. + " Sjobsid,"
  3082. + " classessettingid"
  3083. + " )"
  3084. + " select :kilnCarDataID,"
  3085. + " staffid,"
  3086. + " userid,"
  3087. + " usercode,"
  3088. + " Ujobsid,"
  3089. + " staffstatus,"
  3090. + " Sjobsid,"
  3091. + " classessettingid"
  3092. + " from tp_pc_classesdetail"
  3093. + " where ValueFlag = 1"
  3094. + " and classessettingid = (select max(ClassesSettingID)"
  3095. + " from TP_PC_ClassesSetting"
  3096. + " where ValueFlag = 1 and AccountDate=:accountDate"
  3097. + " and UserID = :userID)";
  3098. paras = new OracleParameter[] {
  3099. new OracleParameter(":kilnCarDataID",OracleDbType.Int32,kilnCarDataID,ParameterDirection.Input),
  3100. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3101. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3102. };
  3103. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3104. // 失败
  3105. if (resultCount == Constant.INT_IS_ZERO)
  3106. {
  3107. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3108. }
  3109. #endregion
  3110. return null;
  3111. }
  3112. /// <summary>
  3113. /// 添加生产数据
  3114. /// </summary>
  3115. /// <param name="oracleTrConn">连接对象</param>
  3116. /// <param name="accountDate">账务日期</param>
  3117. /// <param name="productionData">生产数据</param>
  3118. /// <param name="sUserInfo">用户基本信息</param>
  3119. /// <returns>string</returns>
  3120. /// <remarks>
  3121. /// 陈冰 2014.09.18 新建
  3122. /// </remarks>
  3123. private static string AddProductionDataCreateTime(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  3124. {
  3125. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3126. // string selectSql = @"select TP_PM_GroutingProduct.GroutingDate,
  3127. // TP_PM_GroutingProduct.GroutingUserID,
  3128. // TP_PM_GroutingProduct.GroutingUserCode,
  3129. // TP_PM_GroutingProduct.GroutingNum,
  3130. // TP_PM_GroutingProduct.GroutingMouldCode,
  3131. // TP_PM_GroutingProduct.MouldCode,
  3132. // TP_PM_GroutingDaily.GroutingDailyID,
  3133. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3134. // TP_PM_GroutingDaily.GroutingLineID,
  3135. // TP_PM_GroutingDaily.GroutingLineCode,
  3136. // TP_PM_GroutingDaily.GroutingLineName,
  3137. // TP_PM_GroutingDaily.GMouldTypeID,
  3138. // TP_PM_GroutingDaily.CanManyTimes,
  3139. // TP_PM_GroutingDailyDetail.GroutingLineDetailID
  3140. // from TP_PM_GroutingProduct
  3141. // left join TP_PM_GroutingDaily
  3142. // on TP_PM_GroutingProduct.GroutingDailyID=TP_PM_GroutingDaily.GroutingDailyID
  3143. // left join TP_PM_GroutingDailyDetail
  3144. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3145. // where TP_PM_GroutingProduct.barcode=:barcode";
  3146. //这地方连了两张表,为了成检的时候,次品在次新增
  3147. string returnVal = "";
  3148. string selectSql = @"select
  3149. GroutingDate,
  3150. GroutingUserID,
  3151. GroutingUserCode,
  3152. GroutingNum,
  3153. GroutingMouldCode,
  3154. MouldCode,
  3155. GroutingDailyID,
  3156. GroutingDailyDetailID,
  3157. GroutingLineID,
  3158. GroutingLineCode,
  3159. GroutingLineName,
  3160. GMouldTypeID,
  3161. CanManyTimes,
  3162. GroutingLineDetailID,
  3163. SpecialRepairflag
  3164. from tp_pm_inproduction where barcode=:barcode
  3165. union
  3166. select
  3167. GroutingDate,
  3168. GroutingUserID,
  3169. GroutingUserCode,
  3170. GroutingNum,
  3171. GroutingMouldCode,
  3172. MouldCode,
  3173. GroutingDailyID,
  3174. GroutingDailyDetailID,
  3175. GroutingLineID,
  3176. GroutingLineCode,
  3177. GroutingLineName,
  3178. GMouldTypeID,
  3179. CanManyTimes,
  3180. GroutingLineDetailID,
  3181. SpecialRepairflag
  3182. from TP_PM_InProductionTrash where barcode=:barcode
  3183. ";
  3184. OracleParameter[] selectparas = new OracleParameter[] {
  3185. new OracleParameter(":barcode",productionData.Barcode),
  3186. };
  3187. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  3188. DateTime GroutingDate = new DateTime();
  3189. int GroutingUserID = 0, SpecialRepairflag = 0;
  3190. string GroutingUserCode = "";
  3191. int GroutingNum = 0;
  3192. string GroutingMouldCode = "";
  3193. string MouldCode = "";
  3194. //注浆日报ID
  3195. int GroutingDailyID = 0;
  3196. //注浆日报明细ID
  3197. int GroutingDailyDetailID = 0;
  3198. //成型生产线ID
  3199. int GroutingLineID = 0;
  3200. //成型生产线编码
  3201. string GroutingLineCode = "";
  3202. // 成型生产线名称
  3203. string GroutingLineName = "";
  3204. //成型线类型ID
  3205. int GMouldTypeID = 0;
  3206. // 能否多次注浆
  3207. int CanManyTimes = 0;
  3208. // 成型生产线明细ID
  3209. int GroutingLineDetailID = 0;
  3210. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3211. {
  3212. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3213. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3214. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3215. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3216. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3217. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3218. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3219. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3220. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3221. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3222. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3223. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3224. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3225. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3226. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3227. returnVal = SpecialRepairflag.ToString();
  3228. }
  3229. #endregion
  3230. #region 更新窑炉窑车属性
  3231. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3232. {
  3233. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3234. if (ds != null)
  3235. {
  3236. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3237. {
  3238. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3239. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3240. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3241. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3242. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3243. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3244. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3245. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3246. }
  3247. }
  3248. }
  3249. #endregion
  3250. //string sql = "select createtime from TP_PM_KilnCarGoods"
  3251. // + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  3252. //OracleParameter[] paras = new OracleParameter[] {
  3253. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3254. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3255. //};
  3256. //DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sql, paras);
  3257. //if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0)
  3258. //{
  3259. // sql = "update TP_PM_ProductionData set "
  3260. // + " CreateTime=:CreateTime"
  3261. // + " where barcode=:barcode and ProcedureID=:ProcedureID and KilnCarID=:KilnCarID and AccountID=:AccountID";
  3262. // paras = new OracleParameter[] {
  3263. // new OracleParameter(":CreateTime",Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"])),
  3264. // new OracleParameter(":barcode",productionData.Barcode),
  3265. // new OracleParameter(":ProcedureID",productionData.CompleteProcedureID),
  3266. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3267. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3268. // };
  3269. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3270. //}
  3271. #region SQL
  3272. string sql = "insert into tp_pm_productiondata"
  3273. + " ("
  3274. + " barcode,"
  3275. + " centralizedbatchno,"
  3276. + " productionlineid,"
  3277. + " productionlinecode,"
  3278. + " productionlinename,"
  3279. + " procedureid,"
  3280. + " procedurecode,"
  3281. + " procedurename,"
  3282. + " proceduremodel,"
  3283. + " modeltype,"
  3284. + " piecetype,"
  3285. + " isreworked,"
  3286. + " nodetype,"
  3287. + " ispublicbody,"
  3288. + " isrefire,"
  3289. + " organizationid,"
  3290. + " goodsid,"
  3291. + " goodscode,"
  3292. + " goodsname,"
  3293. + " userid,"
  3294. + " usercode,"
  3295. + " username,"
  3296. + " kilnid,"
  3297. + " kilncode,"
  3298. + " kilnname,"
  3299. + " kilncarid,"
  3300. + " kilncarcode,"
  3301. + " kilncarname,"
  3302. + " kilncarbatchno,"
  3303. + " kilncarposition,"
  3304. + " reworkprocedureid,"
  3305. + " reworkprocedurecode,"
  3306. + " reworkprocedurename,"
  3307. + " remarks,"
  3308. + " accountdate,"
  3309. + " accountid,"
  3310. + " GoodsLevelID,"
  3311. + " GoodsLevelTypeID,"
  3312. + " createuserid,"
  3313. + " updateuserid,"
  3314. + " GroutingDate,"
  3315. + " GroutingUserID,"
  3316. + " GroutingUserCode,"
  3317. + " GroutingNum,"
  3318. + " GroutingMouldCode,"
  3319. + " MouldCode,"
  3320. + "GroutingDailyID,"
  3321. + "GroutingDailyDetailID,"
  3322. + "GroutingLineID,"
  3323. + " GroutingLineCode,"
  3324. + "GroutingLineName,"
  3325. + "GMouldTypeID,"
  3326. + "CanManyTimes,"
  3327. + "GroutingLineDetailID,"
  3328. + "CreateTime,SpecialRepairflag"
  3329. + ")"
  3330. + " values"
  3331. + " ("
  3332. + " :barcode,"
  3333. + " :centralizedbatchno,"
  3334. + " :productionlineid,"
  3335. + " :productionlinecode,"
  3336. + " :productionlinename,"
  3337. + " :procedureid,"
  3338. + " :procedurecode,"
  3339. + " :procedurename,"
  3340. + " :proceduremodel,"
  3341. + " :modeltype,"
  3342. + " :piecetype,"
  3343. + " :isreworked,"
  3344. + " :nodetype,"
  3345. + " :ispublicbody,"
  3346. + " :isrefire,"
  3347. + " :organizationid,"
  3348. + " :goodsid,"
  3349. + " :goodscode,"
  3350. + " :goodsname,"
  3351. + " :userid,"
  3352. + " :usercode,"
  3353. + " :username,"
  3354. + " :kilnid,"
  3355. + " :kilncode,"
  3356. + " :kilnname,"
  3357. + " :kilncarid,"
  3358. + " :kilncarcode,"
  3359. + " :kilncarname,"
  3360. + " :kilncarbatchno,"
  3361. + " :kilncarposition,"
  3362. + " :reworkprocedureid,"
  3363. + " :reworkprocedurecode,"
  3364. + " :reworkprocedurename,"
  3365. + " :remarks,"
  3366. + " :accountdata,"
  3367. + " :accountid,"
  3368. + " :GoodsLevelID,"
  3369. + " :GoodsLevelTypeID,"
  3370. + " :createuserid,"
  3371. + " :updateuserid,"
  3372. + " :groutingdate,"
  3373. + " :groutinguserid,"
  3374. + " :groutingusercode,"
  3375. + " :groutingnum,"
  3376. + " :groutingmouldcode,"
  3377. + " :mouldcode,"
  3378. + ":groutingdailyid,"
  3379. + ":groutingdailydetailid,"
  3380. + ":groutinglineid,"
  3381. + " :groutinglinecode,"
  3382. + ":groutinglinename,"
  3383. + ":gmouldtypeid,"
  3384. + ":canmanytimes,"
  3385. + ":groutinglinedetailid,"
  3386. + ":CreateTime,:SpecialRepairflag"
  3387. + ")";
  3388. #endregion
  3389. #region OracleParameter
  3390. OracleParameter[] paras = new OracleParameter[] {
  3391. new OracleParameter(":barcode",productionData.Barcode),
  3392. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3393. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3394. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3395. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3396. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3397. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3398. new OracleParameter(":procedurename",productionData.ProcedureName),
  3399. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3400. new OracleParameter(":modeltype",productionData.ModelType),
  3401. new OracleParameter(":piecetype",productionData.PieceType),
  3402. new OracleParameter(":isreworked",productionData.IsReworked),
  3403. new OracleParameter(":nodetype",productionData.NodeType),
  3404. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3405. new OracleParameter(":isrefire",productionData.IsReFire),
  3406. new OracleParameter(":organizationid",productionData.OrganizationID),
  3407. new OracleParameter(":goodsid",productionData.GoodsID),
  3408. new OracleParameter(":goodscode",productionData.GoodsCode),
  3409. new OracleParameter(":goodsname",productionData.GoodsName),
  3410. new OracleParameter(":userid",productionData.UserID),
  3411. new OracleParameter(":usercode",productionData.UserCode),
  3412. new OracleParameter(":username",productionData.UserName),
  3413. new OracleParameter(":kilnid",productionData.KilnID),
  3414. new OracleParameter(":kilncode",productionData.KilnCode),
  3415. new OracleParameter(":kilnname",productionData.KilnName),
  3416. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3417. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3418. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3419. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3420. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3421. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3422. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3423. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3424. new OracleParameter(":remarks",productionData.Remarks),
  3425. new OracleParameter(":accountdata",accountDate),
  3426. new OracleParameter(":accountid",sUserInfo.AccountID),
  3427. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3428. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3429. new OracleParameter(":createuserid",sUserInfo.UserID),
  3430. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3431. new OracleParameter(":groutingdate",GroutingDate),
  3432. new OracleParameter(":groutinguserid",GroutingUserID),
  3433. new OracleParameter(":groutingusercode",GroutingUserCode),
  3434. new OracleParameter(":groutingnum",GroutingNum),
  3435. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3436. new OracleParameter(":mouldcode",MouldCode),
  3437. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3438. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3439. new OracleParameter(":groutinglineid",GroutingLineID),
  3440. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3441. new OracleParameter(":groutinglinename",GroutingLineName),
  3442. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3443. new OracleParameter(":canmanytimes",CanManyTimes),
  3444. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3445. new OracleParameter(":CreateTime",productionData.CreateTime),
  3446. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3447. };
  3448. #endregion
  3449. foreach (OracleParameter para in paras)
  3450. {
  3451. if (string.IsNullOrEmpty(para.Value + ""))
  3452. {
  3453. para.Value = DBNull.Value;
  3454. }
  3455. }
  3456. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3457. OutSpecialRepairflag = returnVal;
  3458. // 失败
  3459. if (result != Constant.INT_IS_ONE)
  3460. {
  3461. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3462. }
  3463. // 成功返回null
  3464. return null;
  3465. }
  3466. /// <summary>
  3467. /// 添加生产数据
  3468. /// </summary>
  3469. /// <param name="oracleTrConn">连接对象</param>
  3470. /// <param name="accountDate">账务日期</param>
  3471. /// <param name="productionData">生产数据</param>
  3472. /// <param name="sUserInfo">用户基本信息</param>
  3473. /// <returns>string</returns>
  3474. /// <remarks>
  3475. /// 陈冰 2014.09.18 新建
  3476. /// </remarks>
  3477. private static string AddProductionDataDeliverMud(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag
  3478. , out DataSet outGroutingProduct)
  3479. {
  3480. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3481. string selectSql = "";
  3482. string returnVal = "";
  3483. selectSql = @"select GroutingDate,
  3484. ClassesSettingID,
  3485. UserID as GroutingUserID,
  3486. UserCode as GroutingUserCode,
  3487. GroutingCount as GroutingNum,
  3488. GroutingMouldCode,
  3489. MouldCode,
  3490. GroutingDailyID,
  3491. GroutingDailyDetailID,
  3492. GroutingLineID,
  3493. GroutingLineCode,
  3494. GroutingLineName,
  3495. GroutingLineDetailID,
  3496. SpecialRepairflag,
  3497. goodsid,
  3498. goodscode,
  3499. goodsname,
  3500. GMouldTypeID,
  3501. CanManyTimes,
  3502. LogoID
  3503. from tp_pm_GroutingDailyDetail
  3504. where tp_pm_GroutingDailyDetail.GroutingDailyDetailID=:GroutingDailyDetailID";
  3505. OracleParameter[] selectparas1 = new OracleParameter[] {
  3506. new OracleParameter(":GroutingDailyDetailID",productionData.GroutingDailyDetailID),
  3507. };
  3508. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas1);
  3509. DateTime GroutingDate = new DateTime();
  3510. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  3511. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  3512. int? ClassesSettingID = null;
  3513. int? LogoID = null;
  3514. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3515. {
  3516. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3517. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3518. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3519. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3520. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3521. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3522. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3523. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3524. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3525. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3526. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3527. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3528. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3529. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3530. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3531. returnVal = SpecialRepairflag.ToString();
  3532. if (productionData.IsPublicBody.ToString() != "1")
  3533. ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  3534. else
  3535. ClassesSettingID = productionData.ClassesSettingID == null ? Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]) : productionData.ClassesSettingID;
  3536. if (dsGroutingProduct.Tables[0].Rows[0]["LogoID"] != DBNull.Value)
  3537. {
  3538. LogoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["LogoID"]);
  3539. }
  3540. //根据明细ID.update
  3541. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  3542. OracleParameter[] paras2 = new OracleParameter[] {
  3543. new OracleParameter(":deliveruserid",productionData.UserID),
  3544. new OracleParameter(":deliverusercode",productionData.UserCode),
  3545. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3546. };
  3547. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  3548. }
  3549. outGroutingProduct = dsGroutingProduct;
  3550. #endregion
  3551. #region 更新窑炉窑车属性
  3552. //if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3553. //{
  3554. // DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3555. // if (ds != null)
  3556. // {
  3557. // if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3558. // {
  3559. // productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3560. // productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3561. // productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3562. // productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3563. // productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3564. // productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3565. // productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3566. // productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3567. // }
  3568. // }
  3569. //}
  3570. #endregion
  3571. #region SQL
  3572. string sql = "insert into tp_pm_productiondataIn"
  3573. + " (productiondataid,"
  3574. + " barcode,"
  3575. + " centralizedbatchno,"
  3576. + " productionlineid,"
  3577. + " productionlinecode,"
  3578. + " productionlinename,"
  3579. + " procedureid,"
  3580. + " procedurecode,"
  3581. + " procedurename,"
  3582. + " proceduremodel,"
  3583. + " modeltype,"
  3584. + " piecetype,"
  3585. + " isreworked,"
  3586. + " nodetype,"
  3587. + " ispublicbody,"
  3588. + " isrefire,"
  3589. + " organizationid,"
  3590. + " goodsid,"
  3591. + " goodscode,"
  3592. + " goodsname,"
  3593. + " userid,"
  3594. + " usercode,"
  3595. + " username,"
  3596. + " kilnid,"
  3597. + " kilncode,"
  3598. + " kilnname,"
  3599. + " kilncarid,"
  3600. + " kilncarcode,"
  3601. + " kilncarname,"
  3602. + " kilncarbatchno,"
  3603. + " kilncarposition,"
  3604. + " reworkprocedureid,"
  3605. + " reworkprocedurecode,"
  3606. + " reworkprocedurename,"
  3607. + " remarks,"
  3608. + " accountdate,"
  3609. + " accountid,"
  3610. + " GoodsLevelID,"
  3611. + " GoodsLevelTypeID,"
  3612. + " createuserid,"
  3613. + " updateuserid,"
  3614. + " GroutingDate,"
  3615. + " GroutingUserID,"
  3616. + " GroutingUserCode,"
  3617. + " GroutingNum,"
  3618. + " GroutingMouldCode,"
  3619. + " MouldCode,"
  3620. + "GroutingDailyID,"
  3621. + "GroutingDailyDetailID,"
  3622. + "GroutingLineID,"
  3623. + " GroutingLineCode,"
  3624. + "GroutingLineName,"
  3625. + "GMouldTypeID,"
  3626. + "CanManyTimes,"
  3627. + "GroutingLineDetailID,"
  3628. + "SpecialRepairflag,"
  3629. + "ClassesSettingID,"
  3630. + "LogoID"
  3631. + ")"
  3632. + " values"
  3633. + " (:productiondataid,"
  3634. + " :barcode,"
  3635. + " :centralizedbatchno,"
  3636. + " :productionlineid,"
  3637. + " :productionlinecode,"
  3638. + " :productionlinename,"
  3639. + " :procedureid,"
  3640. + " :procedurecode,"
  3641. + " :procedurename,"
  3642. + " :proceduremodel,"
  3643. + " :modeltype,"
  3644. + " :piecetype,"
  3645. + " :isreworked,"
  3646. + " :nodetype,"
  3647. + " :ispublicbody,"
  3648. + " :isrefire,"
  3649. + " :organizationid,"
  3650. + " :goodsid,"
  3651. + " :goodscode,"
  3652. + " :goodsname,"
  3653. + " :userid,"
  3654. + " :usercode,"
  3655. + " :username,"
  3656. + " :kilnid,"
  3657. + " :kilncode,"
  3658. + " :kilnname,"
  3659. + " :kilncarid,"
  3660. + " :kilncarcode,"
  3661. + " :kilncarname,"
  3662. + " :kilncarbatchno,"
  3663. + " :kilncarposition,"
  3664. + " :reworkprocedureid,"
  3665. + " :reworkprocedurecode,"
  3666. + " :reworkprocedurename,"
  3667. + " :remarks,"
  3668. + " :accountdata,"
  3669. + " :accountid,"
  3670. + " :GoodsLevelID,"
  3671. + " :GoodsLevelTypeID,"
  3672. + " :createuserid,"
  3673. + " :updateuserid,"
  3674. + " :groutingdate,"
  3675. + " :groutinguserid,"
  3676. + " :groutingusercode,"
  3677. + " :groutingnum,"
  3678. + " :groutingmouldcode,"
  3679. + " :mouldcode,"
  3680. + ":groutingdailyid,"
  3681. + ":groutingdailydetailid,"
  3682. + ":groutinglineid,"
  3683. + " :groutinglinecode,"
  3684. + ":groutinglinename,"
  3685. + ":gmouldtypeid,"
  3686. + ":canmanytimes,"
  3687. + ":groutinglinedetailid,"
  3688. + ":specialRepairflag,"
  3689. + ":classesSettingID,"
  3690. + ":LogoID"
  3691. + ")";
  3692. #endregion
  3693. #region OracleParameter
  3694. OracleParameter[] paras = new OracleParameter[] {
  3695. new OracleParameter(":classesSettingID",ClassesSettingID),
  3696. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  3697. new OracleParameter(":barcode",productionData.Barcode),
  3698. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3699. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3700. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3701. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3702. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3703. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3704. new OracleParameter(":procedurename",productionData.ProcedureName),
  3705. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3706. new OracleParameter(":modeltype",productionData.ModelType),
  3707. new OracleParameter(":piecetype",productionData.PieceType),
  3708. new OracleParameter(":isreworked",productionData.IsReworked),
  3709. new OracleParameter(":nodetype",productionData.NodeType),
  3710. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3711. new OracleParameter(":isrefire",productionData.IsReFire),
  3712. new OracleParameter(":organizationid",productionData.OrganizationID),
  3713. new OracleParameter(":goodsid",productionData.GoodsID),
  3714. new OracleParameter(":goodscode",productionData.GoodsCode),
  3715. new OracleParameter(":goodsname",productionData.GoodsName),
  3716. new OracleParameter(":userid",productionData.UserID),
  3717. new OracleParameter(":usercode",productionData.UserCode),
  3718. new OracleParameter(":username",productionData.UserName),
  3719. new OracleParameter(":kilnid",productionData.KilnID),
  3720. new OracleParameter(":kilncode",productionData.KilnCode),
  3721. new OracleParameter(":kilnname",productionData.KilnName),
  3722. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3723. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3724. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3725. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3726. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3727. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3728. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3729. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3730. new OracleParameter(":remarks",productionData.Remarks),
  3731. new OracleParameter(":accountdata",accountDate),
  3732. new OracleParameter(":accountid",sUserInfo.AccountID),
  3733. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3734. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3735. new OracleParameter(":createuserid",sUserInfo.UserID),
  3736. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3737. new OracleParameter(":groutingdate",GroutingDate),
  3738. new OracleParameter(":groutinguserid",GroutingUserID),
  3739. new OracleParameter(":groutingusercode",GroutingUserCode),
  3740. new OracleParameter(":groutingnum",GroutingNum),
  3741. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3742. new OracleParameter(":mouldcode",MouldCode),
  3743. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3744. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3745. new OracleParameter(":groutinglineid",GroutingLineID),
  3746. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3747. new OracleParameter(":groutinglinename",GroutingLineName),
  3748. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3749. new OracleParameter(":canmanytimes",CanManyTimes),
  3750. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3751. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3752. new OracleParameter(":LogoID",LogoID),
  3753. };
  3754. #endregion
  3755. foreach (OracleParameter para in paras)
  3756. {
  3757. if (string.IsNullOrEmpty(para.Value + ""))
  3758. {
  3759. para.Value = DBNull.Value;
  3760. }
  3761. }
  3762. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3763. OutSpecialRepairflag = returnVal;
  3764. // 失败
  3765. if (result != Constant.INT_IS_ONE)
  3766. {
  3767. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3768. }
  3769. // 成功返回null
  3770. return null;
  3771. }
  3772. /// <summary>
  3773. /// 添加生产数据
  3774. /// </summary>
  3775. /// <param name="oracleTrConn">连接对象</param>
  3776. /// <param name="accountDate">账务日期</param>
  3777. /// <param name="productionData">生产数据</param>
  3778. /// <param name="sUserInfo">用户基本信息</param>
  3779. /// <returns>string</returns>
  3780. /// <remarks>
  3781. /// 陈冰 2014.09.18 新建
  3782. /// </remarks>
  3783. private static string AddProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  3784. {
  3785. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3786. string selectSql = "";
  3787. string returnVal = "";
  3788. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  3789. {
  3790. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  3791. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  3792. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  3793. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3794. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  3795. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  3796. // TP_PM_GroutingDailyDetail.MouldCode,
  3797. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  3798. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3799. // TP_PM_GroutingDailyDetail.GroutingLineID,
  3800. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  3801. // TP_PM_GroutingDailyDetail.GroutingLineName,
  3802. // TP_PM_GroutingDaily.GMouldTypeID,
  3803. // TP_PM_GroutingDaily.CanManyTimes,
  3804. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  3805. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  3806. // from TP_PM_GroutingDaily
  3807. // inner join TP_PM_GroutingDailyDetail
  3808. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3809. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  3810. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  3811. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  3812. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  3813. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  3814. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  3815. TP_PM_GroutingDailyDetail.MouldCode,
  3816. TP_PM_GroutingDailyDetail.GroutingDailyID,
  3817. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3818. TP_PM_GroutingDailyDetail.GroutingLineID,
  3819. TP_PM_GroutingDailyDetail.GroutingLineCode,
  3820. TP_PM_GroutingDailyDetail.GroutingLineName,
  3821. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  3822. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  3823. (select GMouldTypeID
  3824. from TP_PM_GroutingDaily
  3825. where TP_PM_GroutingDaily.GroutingDailyID =
  3826. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  3827. (select CanManyTimes
  3828. from TP_PM_GroutingDaily
  3829. where TP_PM_GroutingDaily.GroutingDailyID =
  3830. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  3831. 0 as IsReFire
  3832. from TP_PM_GroutingDailyDetail
  3833. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  3834. }
  3835. else
  3836. {
  3837. //这地方连了两张表,为了成检的时候,次品在次新增
  3838. // selectSql = @"select
  3839. // GroutingDate,
  3840. // GroutingUserID,
  3841. // GroutingUserCode,
  3842. // GroutingNum,
  3843. // GroutingMouldCode,
  3844. // MouldCode,
  3845. // GroutingDailyID,
  3846. // GroutingDailyDetailID,
  3847. // GroutingLineID,
  3848. // GroutingLineCode,
  3849. // GroutingLineName,
  3850. // GMouldTypeID,
  3851. // CanManyTimes,
  3852. // GroutingLineDetailID,
  3853. // SpecialRepairflag,
  3854. // IsReFire
  3855. //
  3856. // from tp_pm_inproduction where barcode=:barcode
  3857. // union
  3858. // select
  3859. // GroutingDate,
  3860. // GroutingUserID,
  3861. // GroutingUserCode,
  3862. // GroutingNum,
  3863. // GroutingMouldCode,
  3864. // MouldCode,
  3865. // GroutingDailyID,
  3866. // GroutingDailyDetailID,
  3867. // GroutingLineID,
  3868. // GroutingLineCode,
  3869. // GroutingLineName,
  3870. // GMouldTypeID,
  3871. // CanManyTimes,
  3872. // GroutingLineDetailID,
  3873. // SpecialRepairflag,
  3874. // IsReFire
  3875. // from TP_PM_InProductionTrash where barcode=:barcode
  3876. // ";
  3877. selectSql = @"select
  3878. GroutingDate,
  3879. GroutingUserID,
  3880. GroutingUserCode,
  3881. GroutingNum,
  3882. GroutingMouldCode,
  3883. MouldCode,
  3884. GroutingDailyID,
  3885. GroutingDailyDetailID,
  3886. GroutingLineID,
  3887. GroutingLineCode,
  3888. GroutingLineName,
  3889. GMouldTypeID,
  3890. CanManyTimes,
  3891. GroutingLineDetailID,
  3892. SpecialRepairflag,
  3893. IsReFire,
  3894. logoid
  3895. from tp_pm_inproduction where barcode=:barcode
  3896. ";
  3897. }
  3898. OracleParameter[] selectparas = new OracleParameter[] {
  3899. new OracleParameter(":barcode",productionData.Barcode),
  3900. };
  3901. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  3902. DateTime GroutingDate = new DateTime();
  3903. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  3904. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  3905. int IsReFire = 0;
  3906. int? logoID = null;
  3907. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3908. {
  3909. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3910. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3911. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3912. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3913. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3914. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3915. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3916. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3917. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3918. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3919. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3920. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3921. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3922. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3923. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3924. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  3925. if (IsReFire > 0) //大于零代表重烧过
  3926. {
  3927. productionData.IsReFire = IsReFire;
  3928. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  3929. }
  3930. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  3931. {
  3932. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  3933. }
  3934. //if (productionData.LogoID != null) //当前工序有商标
  3935. //{
  3936. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  3937. // {
  3938. // logoID = productionData.LogoID;
  3939. // //根据明细ID.update
  3940. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  3941. // OracleParameter[] paras2 = new OracleParameter[] {
  3942. // new OracleParameter(":logoid",productionData.LogoID)
  3943. // };
  3944. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  3945. // }
  3946. //}
  3947. returnVal = SpecialRepairflag.ToString();
  3948. }
  3949. #endregion
  3950. #region 更新窑炉窑车属性
  3951. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3952. {
  3953. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3954. if (ds != null)
  3955. {
  3956. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3957. {
  3958. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3959. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3960. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3961. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3962. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3963. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3964. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3965. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3966. }
  3967. }
  3968. }
  3969. #endregion
  3970. #region SQL
  3971. string sql = "insert into tp_pm_productiondataIn"
  3972. + " (productiondataid,"
  3973. + " barcode,"
  3974. + " centralizedbatchno,"
  3975. + " productionlineid,"
  3976. + " productionlinecode,"
  3977. + " productionlinename,"
  3978. + " procedureid,"
  3979. + " procedurecode,"
  3980. + " procedurename,"
  3981. + " proceduremodel,"
  3982. + " modeltype,"
  3983. + " piecetype,"
  3984. + " isreworked,"
  3985. + " nodetype,"
  3986. + " ispublicbody,"
  3987. + " isrefire,"
  3988. + " organizationid,"
  3989. + " goodsid,"
  3990. + " goodscode,"
  3991. + " goodsname,"
  3992. + " userid,"
  3993. + " usercode,"
  3994. + " username,"
  3995. + " kilnid,"
  3996. + " kilncode,"
  3997. + " kilnname,"
  3998. + " kilncarid,"
  3999. + " kilncarcode,"
  4000. + " kilncarname,"
  4001. + " kilncarbatchno,"
  4002. + " kilncarposition,"
  4003. + " reworkprocedureid,"
  4004. + " reworkprocedurecode,"
  4005. + " reworkprocedurename,"
  4006. + " remarks,"
  4007. + " accountdate,"
  4008. + " accountid,"
  4009. + " GoodsLevelID,"
  4010. + " GoodsLevelTypeID,"
  4011. + " createuserid,"
  4012. + " updateuserid,"
  4013. + " GroutingDate,"
  4014. + " GroutingUserID,"
  4015. + " GroutingUserCode,"
  4016. + " GroutingNum,"
  4017. + " GroutingMouldCode,"
  4018. + " MouldCode,"
  4019. + "GroutingDailyID,"
  4020. + "GroutingDailyDetailID,"
  4021. + "GroutingLineID,"
  4022. + " GroutingLineCode,"
  4023. + "GroutingLineName,"
  4024. + "GMouldTypeID,"
  4025. + "CanManyTimes,"
  4026. + "GroutingLineDetailID,"
  4027. + "SpecialRepairflag,"
  4028. + "ClassesSettingID,"
  4029. + "LogoID"
  4030. + ")"
  4031. + " values"
  4032. + " (:productiondataid,"
  4033. + " :barcode,"
  4034. + " :centralizedbatchno,"
  4035. + " :productionlineid,"
  4036. + " :productionlinecode,"
  4037. + " :productionlinename,"
  4038. + " :procedureid,"
  4039. + " :procedurecode,"
  4040. + " :procedurename,"
  4041. + " :proceduremodel,"
  4042. + " :modeltype,"
  4043. + " :piecetype,"
  4044. + " :isreworked,"
  4045. + " :nodetype,"
  4046. + " :ispublicbody,"
  4047. + " :isrefire,"
  4048. + " :organizationid,"
  4049. + " :goodsid,"
  4050. + " :goodscode,"
  4051. + " :goodsname,"
  4052. + " :userid,"
  4053. + " :usercode,"
  4054. + " :username,"
  4055. + " :kilnid,"
  4056. + " :kilncode,"
  4057. + " :kilnname,"
  4058. + " :kilncarid,"
  4059. + " :kilncarcode,"
  4060. + " :kilncarname,"
  4061. + " :kilncarbatchno,"
  4062. + " :kilncarposition,"
  4063. + " :reworkprocedureid,"
  4064. + " :reworkprocedurecode,"
  4065. + " :reworkprocedurename,"
  4066. + " :remarks,"
  4067. + " :accountdata,"
  4068. + " :accountid,"
  4069. + " :GoodsLevelID,"
  4070. + " :GoodsLevelTypeID,"
  4071. + " :createuserid,"
  4072. + " :updateuserid,"
  4073. + " :groutingdate,"
  4074. + " :groutinguserid,"
  4075. + " :groutingusercode,"
  4076. + " :groutingnum,"
  4077. + " :groutingmouldcode,"
  4078. + " :mouldcode,"
  4079. + ":groutingdailyid,"
  4080. + ":groutingdailydetailid,"
  4081. + ":groutinglineid,"
  4082. + " :groutinglinecode,"
  4083. + ":groutinglinename,"
  4084. + ":gmouldtypeid,"
  4085. + ":canmanytimes,"
  4086. + ":groutinglinedetailid,"
  4087. + ":specialRepairflag,"
  4088. + ":classesSettingID,"
  4089. + ":logoID"
  4090. + ")";
  4091. #endregion
  4092. #region OracleParameter
  4093. OracleParameter[] paras = new OracleParameter[] {
  4094. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4095. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4096. new OracleParameter(":barcode",productionData.Barcode),
  4097. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4098. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4099. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4100. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4101. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4102. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4103. new OracleParameter(":procedurename",productionData.ProcedureName),
  4104. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4105. new OracleParameter(":modeltype",productionData.ModelType),
  4106. new OracleParameter(":piecetype",productionData.PieceType),
  4107. new OracleParameter(":isreworked",productionData.IsReworked),
  4108. new OracleParameter(":nodetype",productionData.NodeType),
  4109. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4110. new OracleParameter(":isrefire",productionData.IsReFire),
  4111. new OracleParameter(":organizationid",productionData.OrganizationID),
  4112. new OracleParameter(":goodsid",productionData.GoodsID),
  4113. new OracleParameter(":goodscode",productionData.GoodsCode),
  4114. new OracleParameter(":goodsname",productionData.GoodsName),
  4115. new OracleParameter(":userid",productionData.UserID),
  4116. new OracleParameter(":usercode",productionData.UserCode),
  4117. new OracleParameter(":username",productionData.UserName),
  4118. new OracleParameter(":kilnid",productionData.KilnID),
  4119. new OracleParameter(":kilncode",productionData.KilnCode),
  4120. new OracleParameter(":kilnname",productionData.KilnName),
  4121. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4122. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4123. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4124. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4125. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4126. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4127. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4128. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4129. new OracleParameter(":remarks",productionData.Remarks),
  4130. new OracleParameter(":accountdata",accountDate),
  4131. new OracleParameter(":accountid",sUserInfo.AccountID),
  4132. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4133. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4134. new OracleParameter(":createuserid",sUserInfo.UserID),
  4135. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4136. new OracleParameter(":groutingdate",GroutingDate),
  4137. new OracleParameter(":groutinguserid",GroutingUserID),
  4138. new OracleParameter(":groutingusercode",GroutingUserCode),
  4139. new OracleParameter(":groutingnum",GroutingNum),
  4140. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4141. new OracleParameter(":mouldcode",MouldCode),
  4142. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4143. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4144. new OracleParameter(":groutinglineid",GroutingLineID),
  4145. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4146. new OracleParameter(":groutinglinename",GroutingLineName),
  4147. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4148. new OracleParameter(":canmanytimes",CanManyTimes),
  4149. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4150. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4151. new OracleParameter(":logoID",logoID),
  4152. };
  4153. #endregion
  4154. foreach (OracleParameter para in paras)
  4155. {
  4156. if (string.IsNullOrEmpty(para.Value + ""))
  4157. {
  4158. para.Value = DBNull.Value;
  4159. }
  4160. }
  4161. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4162. OutSpecialRepairflag = returnVal;
  4163. // 失败
  4164. if (result != Constant.INT_IS_ONE)
  4165. {
  4166. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4167. }
  4168. // 成功返回null
  4169. return null;
  4170. }
  4171. /// <summary>
  4172. /// 添加生产数据(单独为成检所做,因为成检可以从次品到其它,需要读一标识,别的不需要连接回收站表)
  4173. /// </summary>
  4174. /// <param name="oracleTrConn">连接对象</param>
  4175. /// <param name="accountDate">账务日期</param>
  4176. /// <param name="productionData">生产数据</param>
  4177. /// <param name="sUserInfo">用户基本信息</param>
  4178. /// <returns>string</returns>
  4179. /// <remarks>
  4180. /// 陈冰 2014.09.18 新建
  4181. /// </remarks>
  4182. private static string AddFinishCheckProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  4183. {
  4184. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4185. string selectSql = "";
  4186. string returnVal = "";
  4187. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4188. {
  4189. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4190. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4191. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4192. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4193. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4194. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4195. // TP_PM_GroutingDailyDetail.MouldCode,
  4196. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4197. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4198. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4199. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4200. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4201. // TP_PM_GroutingDaily.GMouldTypeID,
  4202. // TP_PM_GroutingDaily.CanManyTimes,
  4203. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4204. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4205. // from TP_PM_GroutingDaily
  4206. // inner join TP_PM_GroutingDailyDetail
  4207. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4208. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4209. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4210. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4211. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4212. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4213. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4214. TP_PM_GroutingDailyDetail.MouldCode,
  4215. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4216. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4217. TP_PM_GroutingDailyDetail.GroutingLineID,
  4218. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4219. TP_PM_GroutingDailyDetail.GroutingLineName,
  4220. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4221. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4222. (select GMouldTypeID
  4223. from TP_PM_GroutingDaily
  4224. where TP_PM_GroutingDaily.GroutingDailyID =
  4225. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4226. (select CanManyTimes
  4227. from TP_PM_GroutingDaily
  4228. where TP_PM_GroutingDaily.GroutingDailyID =
  4229. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4230. 0 as IsReFire
  4231. from TP_PM_GroutingDailyDetail
  4232. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4233. }
  4234. else
  4235. {
  4236. //这地方连了两张表,为了成检的时候,次品在次新增
  4237. selectSql = @"select
  4238. GroutingDate,
  4239. GroutingUserID,
  4240. GroutingUserCode,
  4241. GroutingNum,
  4242. GroutingMouldCode,
  4243. MouldCode,
  4244. GroutingDailyID,
  4245. GroutingDailyDetailID,
  4246. GroutingLineID,
  4247. GroutingLineCode,
  4248. GroutingLineName,
  4249. GMouldTypeID,
  4250. CanManyTimes,
  4251. GroutingLineDetailID,
  4252. SpecialRepairflag,
  4253. IsReFire,
  4254. Logoid
  4255. from tp_pm_inproduction where barcode=:barcode
  4256. union
  4257. select
  4258. GroutingDate,
  4259. GroutingUserID,
  4260. GroutingUserCode,
  4261. GroutingNum,
  4262. GroutingMouldCode,
  4263. MouldCode,
  4264. GroutingDailyID,
  4265. GroutingDailyDetailID,
  4266. GroutingLineID,
  4267. GroutingLineCode,
  4268. GroutingLineName,
  4269. GMouldTypeID,
  4270. CanManyTimes,
  4271. GroutingLineDetailID,
  4272. SpecialRepairflag,
  4273. IsReFire,
  4274. logoid
  4275. from TP_PM_InProductionTrash where barcode=:barcode
  4276. ";
  4277. }
  4278. OracleParameter[] selectparas = new OracleParameter[] {
  4279. new OracleParameter(":barcode",productionData.Barcode),
  4280. };
  4281. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4282. DateTime GroutingDate = new DateTime();
  4283. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4284. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4285. int IsReFire = 0;
  4286. int? logoid = null;
  4287. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4288. {
  4289. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4290. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4291. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4292. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4293. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4294. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4295. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4296. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4297. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4298. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4299. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4300. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4301. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4302. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4303. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4304. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4305. if (dsGroutingProduct.Tables[0].Rows[0]["logoid"].ToString() != "")
  4306. {
  4307. logoid = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoid"]);
  4308. }
  4309. if (IsReFire > 0) //大于零代表重烧过
  4310. {
  4311. productionData.IsReFire = IsReFire;
  4312. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4313. }
  4314. returnVal = SpecialRepairflag.ToString();
  4315. }
  4316. #endregion
  4317. #region 更新窑炉窑车属性
  4318. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4319. {
  4320. DataSet ds = GetFinishCheckKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4321. if (ds != null)
  4322. {
  4323. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4324. {
  4325. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4326. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4327. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4328. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4329. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4330. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4331. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4332. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4333. }
  4334. }
  4335. }
  4336. #endregion
  4337. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 6) //判断重烧必须有返工工序
  4338. {
  4339. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4340. {
  4341. OutSpecialRepairflag = "";
  4342. return string.Format("产品分级【重烧】必须填写返工工序", "条码", "保存");
  4343. }
  4344. }
  4345. DateTime? checkTime = null;
  4346. if (productionData.IsPDA != null)
  4347. {
  4348. if (productionData.PDACheckTime != null)
  4349. {
  4350. // PDA端
  4351. if (productionData.PDACheckTime.ToString() != string.Empty)
  4352. {
  4353. checkTime = Convert.ToDateTime(productionData.PDACheckTime);
  4354. }
  4355. }
  4356. }
  4357. else
  4358. {
  4359. if (productionData.CheckTime != null)
  4360. {
  4361. // PDA端
  4362. if (productionData.CheckTime.ToString() != string.Empty)
  4363. {
  4364. checkTime = Convert.ToDateTime(productionData.CheckTime);
  4365. }
  4366. }
  4367. }
  4368. #region SQL
  4369. string sql = "insert into tp_pm_productiondataIn"
  4370. + " (productiondataid,"
  4371. + " barcode,"
  4372. + " centralizedbatchno,"
  4373. + " productionlineid,"
  4374. + " productionlinecode,"
  4375. + " productionlinename,"
  4376. + " procedureid,"
  4377. + " procedurecode,"
  4378. + " procedurename,"
  4379. + " proceduremodel,"
  4380. + " modeltype,"
  4381. + " piecetype,"
  4382. + " isreworked,"
  4383. + " nodetype,"
  4384. + " ispublicbody,"
  4385. + " isrefire,"
  4386. + " organizationid,"
  4387. + " goodsid,"
  4388. + " goodscode,"
  4389. + " goodsname,"
  4390. + " userid,"
  4391. + " usercode,"
  4392. + " username,"
  4393. + " kilnid,"
  4394. + " kilncode,"
  4395. + " kilnname,"
  4396. + " kilncarid,"
  4397. + " kilncarcode,"
  4398. + " kilncarname,"
  4399. + " kilncarbatchno,"
  4400. + " kilncarposition,"
  4401. + " reworkprocedureid,"
  4402. + " reworkprocedurecode,"
  4403. + " reworkprocedurename,"
  4404. + " remarks,"
  4405. + " accountdate,"
  4406. + " accountid,"
  4407. + " GoodsLevelID,"
  4408. + " GoodsLevelTypeID,"
  4409. + " createuserid,"
  4410. + " updateuserid,"
  4411. + " GroutingDate,"
  4412. + " GroutingUserID,"
  4413. + " GroutingUserCode,"
  4414. + " GroutingNum,"
  4415. + " GroutingMouldCode,"
  4416. + " MouldCode,"
  4417. + "GroutingDailyID,"
  4418. + "GroutingDailyDetailID,"
  4419. + "GroutingLineID,"
  4420. + " GroutingLineCode,"
  4421. + "GroutingLineName,"
  4422. + "GMouldTypeID,"
  4423. + "CanManyTimes,"
  4424. + "GroutingLineDetailID,"
  4425. + "SpecialRepairflag,"
  4426. + "ClassesSettingID,"
  4427. + "LogoID,"
  4428. + "CheckTime"
  4429. + ")"
  4430. + " values"
  4431. + " (:productiondataid,"
  4432. + " :barcode,"
  4433. + " :centralizedbatchno,"
  4434. + " :productionlineid,"
  4435. + " :productionlinecode,"
  4436. + " :productionlinename,"
  4437. + " :procedureid,"
  4438. + " :procedurecode,"
  4439. + " :procedurename,"
  4440. + " :proceduremodel,"
  4441. + " :modeltype,"
  4442. + " :piecetype,"
  4443. + " :isreworked,"
  4444. + " :nodetype,"
  4445. + " :ispublicbody,"
  4446. + " :isrefire,"
  4447. + " :organizationid,"
  4448. + " :goodsid,"
  4449. + " :goodscode,"
  4450. + " :goodsname,"
  4451. + " :userid,"
  4452. + " :usercode,"
  4453. + " :username,"
  4454. + " :kilnid,"
  4455. + " :kilncode,"
  4456. + " :kilnname,"
  4457. + " :kilncarid,"
  4458. + " :kilncarcode,"
  4459. + " :kilncarname,"
  4460. + " :kilncarbatchno,"
  4461. + " :kilncarposition,"
  4462. + " :reworkprocedureid,"
  4463. + " :reworkprocedurecode,"
  4464. + " :reworkprocedurename,"
  4465. + " :remarks,"
  4466. + " :accountdata,"
  4467. + " :accountid,"
  4468. + " :GoodsLevelID,"
  4469. + " :GoodsLevelTypeID,"
  4470. + " :createuserid,"
  4471. + " :updateuserid,"
  4472. + " :groutingdate,"
  4473. + " :groutinguserid,"
  4474. + " :groutingusercode,"
  4475. + " :groutingnum,"
  4476. + " :groutingmouldcode,"
  4477. + " :mouldcode,"
  4478. + ":groutingdailyid,"
  4479. + ":groutingdailydetailid,"
  4480. + ":groutinglineid,"
  4481. + " :groutinglinecode,"
  4482. + ":groutinglinename,"
  4483. + ":gmouldtypeid,"
  4484. + ":canmanytimes,"
  4485. + ":groutinglinedetailid,"
  4486. + ":specialRepairflag,"
  4487. + ":classesSettingID,"
  4488. + ":logoid,";
  4489. if (checkTime == null)
  4490. {
  4491. sql = sql + "sysdate";
  4492. }
  4493. else
  4494. {
  4495. sql = sql + ":checkTime";
  4496. }
  4497. sql = sql + ")";
  4498. #endregion
  4499. #region OracleParameter
  4500. OracleParameter[] paras = null;
  4501. if (checkTime != null)
  4502. {
  4503. paras = new OracleParameter[] {
  4504. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4505. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4506. new OracleParameter(":barcode",productionData.Barcode),
  4507. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4508. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4509. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4510. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4511. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4512. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4513. new OracleParameter(":procedurename",productionData.ProcedureName),
  4514. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4515. new OracleParameter(":modeltype",productionData.ModelType),
  4516. new OracleParameter(":piecetype",productionData.PieceType),
  4517. new OracleParameter(":isreworked",productionData.IsReworked),
  4518. new OracleParameter(":nodetype",productionData.NodeType),
  4519. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4520. new OracleParameter(":isrefire",productionData.IsReFire),
  4521. new OracleParameter(":organizationid",productionData.OrganizationID),
  4522. new OracleParameter(":goodsid",productionData.GoodsID),
  4523. new OracleParameter(":goodscode",productionData.GoodsCode),
  4524. new OracleParameter(":goodsname",productionData.GoodsName),
  4525. new OracleParameter(":userid",productionData.UserID),
  4526. new OracleParameter(":usercode",productionData.UserCode),
  4527. new OracleParameter(":username",productionData.UserName),
  4528. new OracleParameter(":kilnid",productionData.KilnID),
  4529. new OracleParameter(":kilncode",productionData.KilnCode),
  4530. new OracleParameter(":kilnname",productionData.KilnName),
  4531. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4532. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4533. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4534. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4535. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4536. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4537. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4538. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4539. new OracleParameter(":remarks",productionData.Remarks),
  4540. new OracleParameter(":accountdata",accountDate),
  4541. new OracleParameter(":accountid",sUserInfo.AccountID),
  4542. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4543. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4544. new OracleParameter(":createuserid",sUserInfo.UserID),
  4545. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4546. new OracleParameter(":groutingdate",GroutingDate),
  4547. new OracleParameter(":groutinguserid",GroutingUserID),
  4548. new OracleParameter(":groutingusercode",GroutingUserCode),
  4549. new OracleParameter(":groutingnum",GroutingNum),
  4550. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4551. new OracleParameter(":mouldcode",MouldCode),
  4552. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4553. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4554. new OracleParameter(":groutinglineid",GroutingLineID),
  4555. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4556. new OracleParameter(":groutinglinename",GroutingLineName),
  4557. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4558. new OracleParameter(":canmanytimes",CanManyTimes),
  4559. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4560. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4561. new OracleParameter(":logoid",logoid),
  4562. new OracleParameter(":checkTime",checkTime),
  4563. };
  4564. }
  4565. else
  4566. {
  4567. paras = new OracleParameter[] {
  4568. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4569. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4570. new OracleParameter(":barcode",productionData.Barcode),
  4571. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4572. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4573. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4574. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4575. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4576. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4577. new OracleParameter(":procedurename",productionData.ProcedureName),
  4578. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4579. new OracleParameter(":modeltype",productionData.ModelType),
  4580. new OracleParameter(":piecetype",productionData.PieceType),
  4581. new OracleParameter(":isreworked",productionData.IsReworked),
  4582. new OracleParameter(":nodetype",productionData.NodeType),
  4583. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4584. new OracleParameter(":isrefire",productionData.IsReFire),
  4585. new OracleParameter(":organizationid",productionData.OrganizationID),
  4586. new OracleParameter(":goodsid",productionData.GoodsID),
  4587. new OracleParameter(":goodscode",productionData.GoodsCode),
  4588. new OracleParameter(":goodsname",productionData.GoodsName),
  4589. new OracleParameter(":userid",productionData.UserID),
  4590. new OracleParameter(":usercode",productionData.UserCode),
  4591. new OracleParameter(":username",productionData.UserName),
  4592. new OracleParameter(":kilnid",productionData.KilnID),
  4593. new OracleParameter(":kilncode",productionData.KilnCode),
  4594. new OracleParameter(":kilnname",productionData.KilnName),
  4595. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4596. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4597. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4598. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4599. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4600. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4601. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4602. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4603. new OracleParameter(":remarks",productionData.Remarks),
  4604. new OracleParameter(":accountdata",accountDate),
  4605. new OracleParameter(":accountid",sUserInfo.AccountID),
  4606. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4607. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4608. new OracleParameter(":createuserid",sUserInfo.UserID),
  4609. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4610. new OracleParameter(":groutingdate",GroutingDate),
  4611. new OracleParameter(":groutinguserid",GroutingUserID),
  4612. new OracleParameter(":groutingusercode",GroutingUserCode),
  4613. new OracleParameter(":groutingnum",GroutingNum),
  4614. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4615. new OracleParameter(":mouldcode",MouldCode),
  4616. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4617. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4618. new OracleParameter(":groutinglineid",GroutingLineID),
  4619. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4620. new OracleParameter(":groutinglinename",GroutingLineName),
  4621. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4622. new OracleParameter(":canmanytimes",CanManyTimes),
  4623. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4624. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4625. new OracleParameter(":logoid",logoid),
  4626. };
  4627. }
  4628. #endregion
  4629. foreach (OracleParameter para in paras)
  4630. {
  4631. if (string.IsNullOrEmpty(para.Value + ""))
  4632. {
  4633. para.Value = DBNull.Value;
  4634. }
  4635. }
  4636. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4637. OutSpecialRepairflag = returnVal;
  4638. // 失败
  4639. if (result != Constant.INT_IS_ONE)
  4640. {
  4641. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4642. }
  4643. // 成功返回null
  4644. return null;
  4645. }
  4646. /// <summary>
  4647. /// 删除在产数据
  4648. /// </summary>
  4649. /// <param name="oracleTrConn">连接对象</param>
  4650. /// <param name="delInProductionEntity">在产数据对象</param>
  4651. /// <returns>string</returns>
  4652. /// <remarks>
  4653. /// 陈冰 2014.09.18 新建
  4654. /// </remarks>
  4655. private static string DeleteInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  4656. {
  4657. OracleParameter[] paras = new OracleParameter[] {
  4658. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4659. };
  4660. int result = 0;
  4661. //删除在产表之前,插入到产品回收表中
  4662. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  4663. {
  4664. OracleParameter[] parasPDA = new OracleParameter[] {
  4665. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4666. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4667. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4668. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  4669. };
  4670. string sqlInsert = @"insert into TP_PM_InProductionTrash
  4671. (
  4672. BarCode,
  4673. ProductionLineID,
  4674. ProductionLineCode,
  4675. ProductionLineName,
  4676. ProcedureModel,
  4677. ModelType,
  4678. DefectFlag,
  4679. ReworkProcedureID,
  4680. IsPublicBody,
  4681. IsReFire,
  4682. GoodsLevelID,
  4683. GoodsLevelTypeID,
  4684. GoodsID,
  4685. GoodsCode,
  4686. GoodsName,
  4687. UserID,
  4688. GroutingDailyID,
  4689. GroutingDailyDetailID,
  4690. GroutingDate,
  4691. GroutingLineID,
  4692. GroutingLineCode,
  4693. GroutingLineName,
  4694. GMouldTypeID,
  4695. CanManyTimes,
  4696. GroutingLineDetailID,
  4697. GroutingMouldCode,
  4698. MouldCode,
  4699. GroutingUserID,
  4700. GroutingUserCode,
  4701. GroutingNum,
  4702. Remarks,
  4703. KilnID,
  4704. KilnCode,
  4705. KilnName,
  4706. KilnCarID,
  4707. KilnCarCode,
  4708. KilnCarName,
  4709. KilnCarBatchNo,
  4710. KilnCarPosition,
  4711. AccountID,
  4712. ValueFlag,
  4713. CreateTime,
  4714. CreateUserID,
  4715. UpdateUserID,
  4716. SpecialRepairflag,
  4717. FlowProcedureID,
  4718. FlowProcedureTime,
  4719. ProcedureID,
  4720. ProcedureTime,
  4721. ProductionDataID,
  4722. logoid, ISREWORKFLAG, SEMICHECKID
  4723. )
  4724. select
  4725. BarCode,
  4726. ProductionLineID,
  4727. ProductionLineCode,
  4728. ProductionLineName,
  4729. ProcedureModel,
  4730. ModelType,
  4731. DefectFlag,
  4732. ReworkProcedureID,
  4733. IsPublicBody,
  4734. IsReFire,
  4735. GoodsLevelID,
  4736. GoodsLevelTypeID,
  4737. GoodsID,
  4738. GoodsCode,
  4739. GoodsName,
  4740. UserID,
  4741. GroutingDailyID,
  4742. GroutingDailyDetailID,
  4743. GroutingDate,
  4744. GroutingLineID,
  4745. GroutingLineCode,
  4746. GroutingLineName,
  4747. GMouldTypeID,
  4748. CanManyTimes,
  4749. GroutingLineDetailID,
  4750. GroutingMouldCode,
  4751. MouldCode,
  4752. GroutingUserID,
  4753. GroutingUserCode,
  4754. GroutingNum,
  4755. Remarks,
  4756. KilnID,
  4757. KilnCode,
  4758. KilnName,
  4759. KilnCarID,
  4760. KilnCarCode,
  4761. KilnCarName,
  4762. KilnCarBatchNo,
  4763. KilnCarPosition,
  4764. AccountID,
  4765. ValueFlag,
  4766. CreateTime,
  4767. :CreateUserID,
  4768. :UpdateUserID,
  4769. SpecialRepairflag,
  4770. :FlowProcedureID,
  4771. FlowProcedureTime,
  4772. :FlowProcedureID,
  4773. ProcedureTime,
  4774. ProductionDataID,
  4775. logoid, ISREWORKFLAG, SEMICHECKID
  4776. from TP_PM_InProduction
  4777. where barcode=:barcode
  4778. ";
  4779. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  4780. }
  4781. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  4782. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  4783. // 删除失败
  4784. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  4785. if (result == Constant.INT_IS_ZERO)
  4786. {
  4787. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4788. }
  4789. // 成功返回null
  4790. return null;
  4791. }
  4792. /// <summary>
  4793. /// 删除在产数据
  4794. /// </summary>
  4795. /// <param name="oracleTrConn">连接对象</param>
  4796. /// <param name="delInProductionEntity">在产数据对象</param>
  4797. /// <returns>string</returns>
  4798. /// <remarks>
  4799. /// 陈冰 2014.09.18 新建
  4800. /// </remarks>
  4801. private static string DeletePDAInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  4802. {
  4803. OracleParameter[] paras = new OracleParameter[] {
  4804. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4805. };
  4806. int result = 0;
  4807. //删除在产表之前,插入到产品回收表中
  4808. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  4809. {
  4810. OracleParameter[] parasPDA = new OracleParameter[] {
  4811. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4812. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  4813. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4814. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  4815. new OracleParameter(":ProductionDataID",OracleDbType.Int32,delInProductionEntity.ProductionDataID,ParameterDirection.Input),
  4816. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,delInProductionEntity.GoodsLevelID,ParameterDirection.Input),
  4817. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,delInProductionEntity.GoodsLevelTypeID,ParameterDirection.Input),
  4818. };
  4819. //删除在产表前,在产表生产数据ID更新下,如不更新这样就不准了,例如,次品到次品 第一次不会影响,因为第一次TP_PM_InProductionTrash表里没有
  4820. // 如果第二次走次品到次品,才有效,下面的sqlInsert则没有效,因为在产表里没有数据插入不到回收表
  4821. string sqlupdate = "update TP_PM_InProductionTrash set ProductionDataID=:ProductionDataID where barcode=:barcode";
  4822. OracleParameter[] parasupdate = new OracleParameter[] {
  4823. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  4824. new OracleParameter(":ProductionDataID",delInProductionEntity.ProductionDataID),
  4825. };
  4826. oracleTrConn.ExecuteNonQuery(sqlupdate, parasupdate);
  4827. string sqlInsert = @"insert into TP_PM_InProductionTrash
  4828. (
  4829. BarCode,
  4830. ProductionLineID,
  4831. ProductionLineCode,
  4832. ProductionLineName,
  4833. ProcedureModel,
  4834. ModelType,
  4835. DefectFlag,
  4836. ReworkProcedureID,
  4837. IsPublicBody,
  4838. IsReFire,
  4839. GoodsLevelID,
  4840. GoodsLevelTypeID,
  4841. GoodsID,
  4842. GoodsCode,
  4843. GoodsName,
  4844. UserID,
  4845. GroutingDailyID,
  4846. GroutingDailyDetailID,
  4847. GroutingDate,
  4848. GroutingLineID,
  4849. GroutingLineCode,
  4850. GroutingLineName,
  4851. GMouldTypeID,
  4852. CanManyTimes,
  4853. GroutingLineDetailID,
  4854. GroutingMouldCode,
  4855. MouldCode,
  4856. GroutingUserID,
  4857. GroutingUserCode,
  4858. GroutingNum,
  4859. Remarks,
  4860. KilnID,
  4861. KilnCode,
  4862. KilnName,
  4863. KilnCarID,
  4864. KilnCarCode,
  4865. KilnCarName,
  4866. KilnCarBatchNo,
  4867. KilnCarPosition,
  4868. AccountID,
  4869. ValueFlag,
  4870. CreateUserID,
  4871. UpdateUserID,
  4872. SpecialRepairflag,
  4873. FlowProcedureID,
  4874. FlowProcedureTime,
  4875. ProcedureID,
  4876. ProcedureTime,
  4877. ProductionDataID,
  4878. logoid, ISREWORKFLAG, SEMICHECKID
  4879. )
  4880. select
  4881. BarCode,
  4882. ProductionLineID,
  4883. ProductionLineCode,
  4884. ProductionLineName,
  4885. ProcedureModel,
  4886. ModelType,
  4887. DefectFlag,
  4888. ReworkProcedureID,
  4889. IsPublicBody,
  4890. IsReFire,
  4891. :GoodsLevelID,
  4892. :GoodsLevelTypeID,
  4893. GoodsID,
  4894. GoodsCode,
  4895. GoodsName,
  4896. UserID,
  4897. GroutingDailyID,
  4898. GroutingDailyDetailID,
  4899. GroutingDate,
  4900. GroutingLineID,
  4901. GroutingLineCode,
  4902. GroutingLineName,
  4903. GMouldTypeID,
  4904. CanManyTimes,
  4905. GroutingLineDetailID,
  4906. GroutingMouldCode,
  4907. MouldCode,
  4908. GroutingUserID,
  4909. GroutingUserCode,
  4910. GroutingNum,
  4911. Remarks,
  4912. KilnID,
  4913. KilnCode,
  4914. KilnName,
  4915. KilnCarID,
  4916. KilnCarCode,
  4917. KilnCarName,
  4918. KilnCarBatchNo,
  4919. KilnCarPosition,
  4920. AccountID,
  4921. ValueFlag,
  4922. :CreateUserID,
  4923. :UpdateUserID,
  4924. SpecialRepairflag,
  4925. :FlowProcedureID,
  4926. FlowProcedureTime,
  4927. :FlowProcedureID,
  4928. ProcedureTime,
  4929. :ProductionDataID,
  4930. logoid, ISREWORKFLAG, SEMICHECKID
  4931. from TP_PM_InProduction
  4932. where barcode=:barcode
  4933. ";
  4934. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  4935. }
  4936. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  4937. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  4938. // 删除失败
  4939. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  4940. if (result == Constant.INT_IS_ZERO)
  4941. {
  4942. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4943. }
  4944. // 成功返回null
  4945. return null;
  4946. }
  4947. /// <summary>
  4948. /// 根据窑车ID 删除窑车产品
  4949. /// </summary>
  4950. /// <param name="oracleTrConn">数据连接</param>
  4951. /// <param name="pKilnCarID">窑车ID</param>
  4952. /// <returns>
  4953. /// 张国印 2014.10.04 新建
  4954. /// </returns>
  4955. private static string DeleteKilnCarGoodsByKilnCarID(IDBTransaction oracleTrConn, int pKilnCarID)
  4956. {
  4957. string sql = "delete TP_PM_KilnCarGoods where KilnCarID = :pKilnCarID";
  4958. OracleParameter[] paras = new OracleParameter[] {
  4959. new OracleParameter(":pKilnCarID", OracleDbType.Int32, pKilnCarID, ParameterDirection.Input),
  4960. };
  4961. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4962. // 删除失败
  4963. if (result <= Constant.INT_IS_ZERO)
  4964. {
  4965. return string.Format(Messages.MSG_CMN_W001, "窑车产品", "保存");
  4966. }
  4967. // 成功返回null
  4968. return null;
  4969. }
  4970. /// <summary>
  4971. /// 添加产成品
  4972. /// </summary>
  4973. /// <param name="oracleTrConn">连接对象</param>
  4974. /// <param name="finishedProduct">产成品对象</param>
  4975. /// <param name="sUserInfo">用户基本信息</param>
  4976. /// <returns>string</returns>
  4977. /// <remarks>
  4978. /// 陈冰 2014.09.18 新建
  4979. /// </remarks>
  4980. private static string AddFinishedProduct(IDBTransaction oracleTrConn,
  4981. FinishedProductEntity finishedProduct, SUserInfo sUserInfo
  4982. , string finishedloadbatchno)
  4983. {
  4984. List<OracleParameter> paras = new List<OracleParameter>();
  4985. string sql = "";
  4986. #region
  4987. // add 2015/11/16
  4988. // if (finishedProduct.LogoID != null && Convert.ToInt32(finishedProduct.LogoID) > 0)
  4989. // {
  4990. // #region SQL
  4991. // //废弃
  4992. // sql = " insert into tp_pm_finishedproduct"
  4993. // + " (barcode, "
  4994. // + " productionlineid, "
  4995. // + " productionlinecode, "
  4996. // + " productionlinename, "
  4997. // + " ispublicbody, "
  4998. // + " isrefire, "
  4999. // + " GoodsLevelID, "
  5000. // + " GoodsLevelTypeID, "
  5001. // + " goodsid, "
  5002. // + " goodscode, "
  5003. // + " goodsname, "
  5004. // + " groutingdailyid, "
  5005. // + " groutingdailydetailid, "
  5006. // + " groutingdate, "
  5007. // + " groutinglineid, "
  5008. // + " groutinglinecode, "
  5009. // + " groutinglinename, "
  5010. // + " gmouldtypeid, "
  5011. // + " groutinglinedetailid, "
  5012. // + " groutingmouldcode, "
  5013. // + " mouldcode, "
  5014. // + " accountdate, "
  5015. // + " accountid, "
  5016. // + " createuserid, "
  5017. // + " updateuserid,"
  5018. // + " groutinguserid, "
  5019. // + " groutingusercode, "
  5020. // + " groutingnum, "
  5021. // + " kilnid, "
  5022. // + " kilncode, "
  5023. // + " kilnname, "
  5024. // + " kilncarid, "
  5025. // + " kilncarcode, "
  5026. // + " kilncarname, "
  5027. // + " kilncarbatchno, "
  5028. // + " kilncarposition, "
  5029. // + " specialRepairflag, "
  5030. // + " logoid "
  5031. // + ") "
  5032. // + " select barcode, "
  5033. // + " productionlineid, "
  5034. // + " productionlinecode, "
  5035. // + " productionlinename, "
  5036. // + " ispublicbody, "
  5037. // + " isrefire, ";
  5038. // #region 产品等级
  5039. // //if (finishedProduct.GoodsGrade == null)
  5040. // //{
  5041. // // sql = sql + " goodsgrade,";
  5042. // //}
  5043. // //// 最后一个工序如果是检验工序,可更改产品等级
  5044. // //else
  5045. // //{
  5046. // // sql = sql + " :goodsgrade, ";
  5047. // // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5048. // //}
  5049. // //如果包装时,产成品未走过成检,则直接视为正品
  5050. // int? GoodsLevelTypeID = null;
  5051. // int? GoodsLevelID = null;
  5052. // if (finishedProduct.GoodsLevelID == null)
  5053. // {
  5054. // string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5055. // (
  5056. // select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5057. // ") and AccountID=" + sUserInfo.AccountID;
  5058. // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5059. // if (ds != null && ds.Tables[0].Rows.Count > 0)
  5060. // {
  5061. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5062. // {
  5063. // if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5064. // {
  5065. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5066. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5067. // }
  5068. // else
  5069. // {
  5070. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5071. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5072. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5073. // {
  5074. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5075. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5076. // }
  5077. // }
  5078. // }
  5079. // }
  5080. // else
  5081. // {
  5082. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5083. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5084. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5085. // {
  5086. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5087. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5088. // }
  5089. // }
  5090. // }
  5091. // if (finishedProduct.GoodsLevelID == null)
  5092. // {
  5093. // //sql = sql + " GoodsLevelID,";
  5094. // // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5095. // ////// sql = sql + @"
  5096. // ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5097. // ////// (
  5098. // ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5099. // ////// ) and AccountID=:AccountID),";
  5100. // sql = sql + GoodsLevelID.ToString() + " ,";
  5101. // }
  5102. // // 最后一个工序如果是检验工序,可更改产品等级
  5103. // else
  5104. // {
  5105. // sql = sql + " :GoodsLevelID, ";
  5106. // paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5107. // }
  5108. // if (finishedProduct.GoodsLevelTypeID == null)
  5109. // {
  5110. // //sql = sql + " GoodsLevelTypeID,";
  5111. // sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5112. // }
  5113. // // 最后一个工序如果是检验工序,可更改产品等级
  5114. // else
  5115. // {
  5116. // sql = sql + " :GoodsLevelTypeID, ";
  5117. // paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5118. // }
  5119. // #endregion
  5120. // sql = sql + " goodsid, "
  5121. // + " goodscode, "
  5122. // + " goodsname, "
  5123. // + " groutingdailyid, "
  5124. // + " groutingdailydetailid, "
  5125. // + " groutingdate, "
  5126. // + " groutinglineid, "
  5127. // + " groutinglinecode, "
  5128. // + " groutinglinename, "
  5129. // + " gmouldtypeid, "
  5130. // + " groutinglinedetailid, "
  5131. // + " groutingmouldcode, "
  5132. // + " mouldcode, "
  5133. // + " fun_cmn_getaccountdate(accountid), "
  5134. // + " accountid, "
  5135. // + " :createuserid, "
  5136. // + " :updateuserid, "
  5137. // + " groutinguserid, "
  5138. // + " groutingusercode, "
  5139. // + " groutingnum, "
  5140. // + " kilnid, "
  5141. // + " kilncode, "
  5142. // + " kilnname, "
  5143. // + " kilncarid, "
  5144. // + " kilncarcode, "
  5145. // + " kilncarname, "
  5146. // + " kilncarbatchno, "
  5147. // + " kilncarposition, "
  5148. // + " specialRepairflag, "
  5149. // + " :logoid "
  5150. // + " from tp_pm_inproduction "
  5151. // + " where Barcode=:barcode";
  5152. // #endregion
  5153. // paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5154. // paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5155. // paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5156. // paras.Add(new OracleParameter(":logoid", finishedProduct.LogoID));
  5157. // // end 2015/11/16
  5158. // }
  5159. // else
  5160. // {
  5161. #endregion
  5162. #region SQL
  5163. //废弃
  5164. sql = " insert into tp_pm_finishedproduct"
  5165. + " (barcode, "
  5166. + " productionlineid, "
  5167. + " productionlinecode, "
  5168. + " productionlinename, "
  5169. + " ispublicbody, "
  5170. + " isrefire, "
  5171. + " GoodsLevelID, "
  5172. + " GoodsLevelTypeID, "
  5173. + " goodsid, "
  5174. + " goodscode, "
  5175. + " goodsname, "
  5176. + " groutingdailyid, "
  5177. + " groutingdailydetailid, "
  5178. + " groutingdate, "
  5179. + " groutinglineid, "
  5180. + " groutinglinecode, "
  5181. + " groutinglinename, "
  5182. + " gmouldtypeid, "
  5183. + " groutinglinedetailid, "
  5184. + " groutingmouldcode, "
  5185. + " mouldcode, "
  5186. + " accountdate, "
  5187. + " accountid, "
  5188. + " createuserid, "
  5189. + " updateuserid,"
  5190. + " groutinguserid, "
  5191. + " groutingusercode, "
  5192. + " groutingnum, "
  5193. + " kilnid, "
  5194. + " kilncode, "
  5195. + " kilnname, "
  5196. + " kilncarid, "
  5197. + " kilncarcode, "
  5198. + " kilncarname, "
  5199. + " kilncarbatchno, "
  5200. + " kilncarposition, "
  5201. + " specialRepairflag, "
  5202. + " logoid,OnlyCode ,finishedloadbatchno"
  5203. + ") "
  5204. + " select barcode, "
  5205. + " productionlineid, "
  5206. + " productionlinecode, "
  5207. + " productionlinename, "
  5208. + " ispublicbody, "
  5209. + " isrefire, ";
  5210. #region 产品等级
  5211. //if (finishedProduct.GoodsGrade == null)
  5212. //{
  5213. // sql = sql + " goodsgrade,";
  5214. //}
  5215. //// 最后一个工序如果是检验工序,可更改产品等级
  5216. //else
  5217. //{
  5218. // sql = sql + " :goodsgrade, ";
  5219. // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5220. //}
  5221. //如果包装时,产成品未走过成检,则直接视为正品
  5222. int? GoodsLevelTypeID = null;
  5223. int? GoodsLevelID = null;
  5224. if (finishedProduct.GoodsLevelID == null)
  5225. {
  5226. string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5227. (
  5228. select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5229. ") and AccountID=" + sUserInfo.AccountID;
  5230. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5231. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5232. {
  5233. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5234. {
  5235. if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5236. {
  5237. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5238. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5239. }
  5240. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 4)//正品
  5241. {
  5242. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5243. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5244. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5245. {
  5246. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5247. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5248. }
  5249. }
  5250. else
  5251. {
  5252. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5253. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5254. }
  5255. }
  5256. }
  5257. else
  5258. {
  5259. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5260. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5261. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5262. {
  5263. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5264. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5265. }
  5266. }
  5267. }
  5268. if (finishedProduct.GoodsLevelID == null)
  5269. {
  5270. //sql = sql + " GoodsLevelID,";
  5271. // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5272. ////// sql = sql + @"
  5273. ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5274. ////// (
  5275. ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5276. ////// ) and AccountID=:AccountID),";
  5277. sql = sql + GoodsLevelID.ToString() + " ,";
  5278. }
  5279. // 最后一个工序如果是检验工序,可更改产品等级
  5280. else
  5281. {
  5282. sql = sql + " :GoodsLevelID, ";
  5283. paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5284. }
  5285. if (finishedProduct.GoodsLevelTypeID == null)
  5286. {
  5287. //sql = sql + " GoodsLevelTypeID,";
  5288. sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5289. }
  5290. // 最后一个工序如果是检验工序,可更改产品等级
  5291. else
  5292. {
  5293. sql = sql + " :GoodsLevelTypeID, ";
  5294. paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5295. }
  5296. #endregion
  5297. sql = sql + " goodsid, "
  5298. + " goodscode, "
  5299. + " goodsname, "
  5300. + " groutingdailyid, "
  5301. + " groutingdailydetailid, "
  5302. + " groutingdate, "
  5303. + " groutinglineid, "
  5304. + " groutinglinecode, "
  5305. + " groutinglinename, "
  5306. + " gmouldtypeid, "
  5307. + " groutinglinedetailid, "
  5308. + " groutingmouldcode, "
  5309. + " mouldcode, "
  5310. + " fun_cmn_getaccountdate(accountid), "
  5311. + " accountid, "
  5312. + " :createuserid, "
  5313. + " :updateuserid, "
  5314. + " groutinguserid, "
  5315. + " groutingusercode, "
  5316. + " groutingnum, "
  5317. + " kilnid, "
  5318. + " kilncode, "
  5319. + " kilnname, "
  5320. + " kilncarid, "
  5321. + " kilncarcode, "
  5322. + " kilncarname, "
  5323. + " kilncarbatchno, "
  5324. + " kilncarposition, "
  5325. + " specialRepairflag, "
  5326. + " logoid, "
  5327. + " (select OnlyCode from tp_pm_groutingdailydetail where barcode=:barcode), :finishedloadbatchno"
  5328. + " from tp_pm_inproduction "
  5329. + " where Barcode=:barcode";
  5330. #endregion
  5331. paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5332. paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5333. paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5334. paras.Add(new OracleParameter(":finishedloadbatchno", finishedloadbatchno));
  5335. //}
  5336. //paras.Add(new OracleParameter(":AccountID", sUserInfo.AccountID));
  5337. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  5338. // 保存失败
  5339. if (result != Constant.INT_IS_ONE)
  5340. {
  5341. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5342. }
  5343. // 保存成功返回null
  5344. return null;
  5345. }
  5346. /// <summary>
  5347. /// 添加在产产品数据
  5348. /// </summary>
  5349. /// <param name="oracleTrConn">连接对象</param>
  5350. /// <param name="inProduction">在产产品实体类</param>
  5351. /// <param name="sUserInfo">用户基本信息</param>
  5352. /// <returns>string</returns>
  5353. /// <remarks>
  5354. /// 陈冰 2014.09.18 新建
  5355. /// </remarks>
  5356. private static string AddInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo, DataSet _dsDataset)
  5357. {
  5358. #region SQL
  5359. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  5360. OracleParameter[] parasExist = new OracleParameter[] {
  5361. new OracleParameter(":barcode",inProduction.BarCode.Trim()),
  5362. };
  5363. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  5364. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  5365. {
  5366. // 获取生产线ID,生产线名称,生产编码
  5367. string sql = @"select TP_PC_ProductionLine.ProductionLineID,TP_PC_ProductionLine.ProductionLineCode,TP_PC_ProductionLine.ProductionLineName
  5368. from TP_PC_Procedure inner join TP_PC_ProductionLine
  5369. on TP_PC_Procedure.ProductionLineID=TP_PC_ProductionLine.ProductionLineID
  5370. where TP_PC_Procedure.ProcedureID=:ProcedureID
  5371. ";
  5372. OracleParameter[] paras = new OracleParameter[] {
  5373. new OracleParameter(":ProcedureID",inProduction.FlowProcedureID),
  5374. };
  5375. dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5376. #region 获取生产线信息
  5377. int ProductionLineID = 0;//生产线ID
  5378. string ProductionLineCode = "", ProductionLineName = "";//生产线名称,编码
  5379. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5380. {
  5381. ProductionLineID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["ProductionLineID"]);
  5382. ProductionLineCode = dsresult.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  5383. ProductionLineName = dsresult.Tables[0].Rows[0]["ProductionLineName"].ToString();
  5384. }
  5385. #endregion
  5386. #region 获取注浆信息
  5387. // sql = @"select
  5388. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  5389. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  5390. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  5391. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  5392. // TP_PM_GroutingDailyDetail.MouldCode,
  5393. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  5394. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  5395. // TP_PM_GroutingDailyDetail.GroutingLineID,
  5396. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  5397. // TP_PM_GroutingDailyDetail.GroutingLineName,
  5398. // TP_PM_GroutingDaily.GMouldTypeID,
  5399. // TP_PM_GroutingDaily.CanManyTimes,
  5400. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  5401. // TP_PM_GroutingDailyDetail.SpecialRepairflag,
  5402. // TP_PM_GroutingDailyDetail.GoodsID,
  5403. // TP_PM_GroutingDailyDetail.GoodsCode,
  5404. // TP_PM_GroutingDailyDetail.GoodsName,
  5405. // TP_PM_GroutingDailyDetail.GroutingDate
  5406. // from TP_PM_GroutingDaily
  5407. // inner join TP_PM_GroutingDailyDetail
  5408. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  5409. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5410. // sql = @"select
  5411. // UserID as GroutingUserID,
  5412. // UserCode as GroutingUserCode,
  5413. // GroutingCount as GroutingNum,
  5414. // GroutingMouldCode,
  5415. // MouldCode,
  5416. // GroutingDailyID,
  5417. // GroutingDailyDetailID,
  5418. // GroutingLineID,
  5419. // GroutingLineCode,
  5420. // GroutingLineName,
  5421. // GroutingLineDetailID,
  5422. // SpecialRepairflag,
  5423. // GoodsID,
  5424. // GoodsCode,
  5425. // GoodsName,
  5426. // GroutingDate,
  5427. // (select GMouldTypeID
  5428. // from TP_PM_GroutingDaily
  5429. // where TP_PM_GroutingDaily.GroutingDailyID =
  5430. // TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  5431. // (select CanManyTimes
  5432. // from TP_PM_GroutingDaily
  5433. // where TP_PM_GroutingDaily.GroutingDailyID =
  5434. // TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes
  5435. // from TP_PM_GroutingDailyDetail
  5436. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5437. // sql = @"select
  5438. // GroutingUserID,
  5439. // GroutingUserCode,
  5440. // GroutingNum,
  5441. // GroutingMouldCode,
  5442. // MouldCode,
  5443. // GroutingDailyID,
  5444. // GroutingDailyDetailID,
  5445. // GroutingLineID,
  5446. // GroutingLineCode,
  5447. // GroutingLineName,
  5448. // GroutingLineDetailID,
  5449. // SpecialRepairflag,
  5450. // GoodsID,
  5451. // GoodsCode,
  5452. // GoodsName,
  5453. // GroutingDate,
  5454. // GMouldTypeID
  5455. // CanManyTimes
  5456. // from tp_pm_productiondata
  5457. // where tp_pm_productiondata.barcode=:barcode";
  5458. // paras = new OracleParameter[] {
  5459. // new OracleParameter(":barcode",inProduction.BarCode),
  5460. // };
  5461. dsresult = _dsDataset;
  5462. //dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5463. // 产品ID, 注浆登记ID, 注浆明细ID, 成型线ID 成型线类型ID 能否多次注浆 成型生产线明细ID
  5464. int goodsid = 0, groutingDailyID = 0, groutingdailydetailid = 0, groutinglineid = 0, gMouldTypeID = 0, canManyTimes = 0, groutingLineDetailID = 0;
  5465. // 产品编码, 产品名称 成型线编码 成型线名称 注浆模具编号 模具编号
  5466. string goodsCode = "", goodsName = "", groutingLineCode = "", groutingLineName = "", groutingmouldcode = "", mouldCode = "";
  5467. DateTime? groutingdate = null; // 注浆日期
  5468. int groutingUserID = 0, groutingNum = 0; //注浆工号ID,注浆次数
  5469. string groutingUserCode = "";//注浆工号
  5470. int? LogoID = null;
  5471. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5472. {
  5473. goodsid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GoodsID"]);
  5474. groutingDailyID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyID"]);
  5475. groutingdailydetailid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  5476. groutinglineid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineID"]);
  5477. groutingLineDetailID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineDetailID"]);
  5478. groutingdate = Convert.ToDateTime(dsresult.Tables[0].Rows[0]["GroutingDate"]);
  5479. goodsCode = dsresult.Tables[0].Rows[0]["GoodsCode"].ToString();
  5480. goodsName = dsresult.Tables[0].Rows[0]["GoodsName"].ToString();
  5481. groutingLineCode = dsresult.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  5482. groutingLineName = dsresult.Tables[0].Rows[0]["GroutingLineName"].ToString();
  5483. groutingmouldcode = dsresult.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  5484. mouldCode = dsresult.Tables[0].Rows[0]["MouldCode"].ToString();
  5485. groutingUserCode = dsresult.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  5486. groutingUserID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingUserID"]);
  5487. gMouldTypeID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GMouldTypeID"]);
  5488. canManyTimes = Convert.ToInt32(dsresult.Tables[0].Rows[0]["CanManyTimes"]);
  5489. groutingNum = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingNum"]);
  5490. if (dsresult.Tables[0].Rows[0]["logoid"].ToString() != "")
  5491. {
  5492. LogoID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["logoid"]);
  5493. }
  5494. }
  5495. #endregion
  5496. sql = " insert into tp_pm_inproduction"
  5497. + " ( barcode,"
  5498. + " productionlineid,"
  5499. + " productionlinecode,"
  5500. + " productionlinename,"
  5501. + " proceduremodel,"
  5502. + " modeltype,"
  5503. + " ispublicbody,"
  5504. + " goodsid,"
  5505. + " goodscode,"
  5506. + " goodsname,"
  5507. + " userid,"
  5508. + " groutingdailyid,"
  5509. + " groutingdailydetailid,"
  5510. + " groutingdate,"
  5511. + " groutinglineid,"
  5512. + " groutinglinecode,"
  5513. + " groutinglinename,"
  5514. + " gmouldtypeid,"
  5515. + " canmanytimes,"
  5516. + " groutinglinedetailid,"
  5517. + " groutingmouldcode,"
  5518. + " mouldcode,"
  5519. + " accountid,"
  5520. + " createuserid,"
  5521. + " updateuserid,GoodsLevelTypeID,"
  5522. + " GroutingUserID,"
  5523. + " GroutingUserCode,"
  5524. + " GroutingNum,"
  5525. + " SpecialRepairflag,"
  5526. + " FlowProcedureID,"
  5527. + " FlowProcedureTime,"
  5528. + " ProcedureID,"
  5529. + " ProcedureTime,"
  5530. + " ProductionDataID,logoid"
  5531. + " ) values ("
  5532. + " :barcode,"
  5533. + " :productionlineid,"
  5534. + " :productionlinecode,"
  5535. + " :productionlinename,"
  5536. + " :procedureModel,"
  5537. + " :modelType,"
  5538. + " :isPublicBody,"
  5539. + " :goodsid,"
  5540. + " :goodscode,"
  5541. + " :goodsname,"
  5542. + " :userID,"
  5543. + " :groutingdailyid,"
  5544. + " :groutingdailydetailid,"
  5545. + " :groutingdate,"
  5546. + " :groutinglineid,"
  5547. + " :groutinglinecode,"
  5548. + " :groutinglinename,"
  5549. + " :gmouldtypeid,"
  5550. + " :canmanytimes,"
  5551. + " :groutinglinedetailid,"
  5552. + " :groutingmouldcode,"
  5553. + " :mouldcode,"
  5554. + " :accountID,"
  5555. + " :createUserID,"
  5556. + " :updateUserID,"
  5557. + " null,"
  5558. + " :groutinguserid,"
  5559. + " :groutingusercode,"
  5560. + " :groutingnum,"
  5561. + " :specialRepairflag,"
  5562. + " :flowProcedureID,"
  5563. + " sysdate,"
  5564. + " :procedureID,"
  5565. + " sysdate,"
  5566. + " :productionDataID,:logoid"
  5567. + " ) ";
  5568. #endregion
  5569. paras = new OracleParameter[] {
  5570. new OracleParameter(":procedureModel",inProduction.ProcedureModel),
  5571. new OracleParameter(":modelType",inProduction.ModelType),
  5572. new OracleParameter(":isPublicBody",inProduction.IsPublicBody),
  5573. new OracleParameter(":userID",inProduction.UserID),
  5574. new OracleParameter(":accountID",sUserInfo.AccountID),
  5575. new OracleParameter(":createUserID",sUserInfo.UserID),
  5576. new OracleParameter(":updateUserID",sUserInfo.UserID),
  5577. new OracleParameter(":barcode",inProduction.BarCode),
  5578. new OracleParameter(":specialRepairflag",inProduction.SpecialRepairflag),
  5579. new OracleParameter(":productionlineid",ProductionLineID),//---开始赋值
  5580. new OracleParameter(":productionlinecode",ProductionLineCode),
  5581. new OracleParameter(":productionlinename",ProductionLineName),
  5582. new OracleParameter(":goodsid",goodsid),
  5583. new OracleParameter(":goodscode",goodsCode),
  5584. new OracleParameter(":goodsname",goodsName),
  5585. new OracleParameter(":groutingdailyid",groutingDailyID),
  5586. new OracleParameter(":groutingdailydetailid",groutingdailydetailid),
  5587. new OracleParameter(":groutingdate",groutingdate),
  5588. new OracleParameter(":groutinglineid",groutinglineid),
  5589. new OracleParameter(":groutinglinecode",groutingLineCode),
  5590. new OracleParameter(":groutinglinename",groutingLineName),
  5591. new OracleParameter(":gmouldtypeid",gMouldTypeID),
  5592. new OracleParameter(":canmanytimes",canManyTimes),
  5593. new OracleParameter(":groutinglinedetailid",groutingLineDetailID),
  5594. new OracleParameter(":groutingmouldcode",groutingmouldcode),
  5595. new OracleParameter(":mouldcode",mouldCode),
  5596. new OracleParameter(":groutinguserid",groutingUserID),
  5597. new OracleParameter(":groutingusercode",groutingUserCode),
  5598. new OracleParameter(":groutingnum",groutingNum),
  5599. new OracleParameter(":flowProcedureID",inProduction.FlowProcedureID),
  5600. new OracleParameter(":procedureID",inProduction.FlowProcedureID),
  5601. new OracleParameter(":productionDataID",inProduction.ProductionDataID),
  5602. new OracleParameter(":logoid",LogoID),
  5603. };
  5604. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5605. // 保存失败
  5606. if (result != Constant.INT_IS_ONE)
  5607. {
  5608. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5609. }
  5610. //交坯后,更新用过条码 2015/7/14
  5611. string updateUsedBarCode = "update TP_PM_USEDBARCODE set barcodestatus=3 where barcode='" + inProduction.BarCode + "'";
  5612. oracleTrConn.ExecuteNonQuery(updateUsedBarCode);
  5613. //交坯后,更新用过条码 end
  5614. }
  5615. // 保存成功返回null
  5616. return null;
  5617. }
  5618. /// <summary>
  5619. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5620. /// </summary>
  5621. /// <param name="oracleTrConn"></param>
  5622. /// <param name="barcode"></param>
  5623. /// <param name="sUserInfo"></param>
  5624. /// <returns></returns>
  5625. private static DataSet GetFinishCheckKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5626. {
  5627. string sql = @"select
  5628. KilnID,
  5629. KilnCode,
  5630. KilnName,
  5631. KilnCarID,
  5632. KilnCarCode,
  5633. KilnCarName,
  5634. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5635. KilnCarPosition
  5636. from tp_pm_inproduction where barcode=:barcode
  5637. union
  5638. select
  5639. KilnID,
  5640. KilnCode,
  5641. KilnName,
  5642. KilnCarID,
  5643. KilnCarCode,
  5644. KilnCarName,
  5645. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5646. KilnCarPosition
  5647. from TP_PM_InProductionTrash where barcode=:barcode
  5648. ";
  5649. try
  5650. {
  5651. IDataParameter[] paras = new OracleParameter[]
  5652. {
  5653. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  5654. };
  5655. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  5656. if (returnDs != null
  5657. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5658. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5659. {
  5660. return returnDs;
  5661. }
  5662. else
  5663. {
  5664. return null;
  5665. }
  5666. }
  5667. catch (Exception ex)
  5668. {
  5669. throw ex;
  5670. }
  5671. }
  5672. /// <summary>
  5673. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5674. /// </summary>
  5675. /// <param name="oracleTrConn"></param>
  5676. /// <param name="barcode"></param>
  5677. /// <param name="sUserInfo"></param>
  5678. /// <returns></returns>
  5679. private static DataSet GetKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5680. {
  5681. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  5682. // (
  5683. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  5684. // )";
  5685. // string sql = @"select
  5686. // KilnID,
  5687. // KilnCode,
  5688. // KilnName,
  5689. // KilnCarID,
  5690. // KilnCarCode,
  5691. // KilnCarName,
  5692. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5693. // KilnCarPosition
  5694. // from tp_pm_inproduction where barcode=:barcode
  5695. // union
  5696. // select
  5697. // KilnID,
  5698. // KilnCode,
  5699. // KilnName,
  5700. // KilnCarID,
  5701. // KilnCarCode,
  5702. // KilnCarName,
  5703. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5704. // KilnCarPosition
  5705. // from TP_PM_InProductionTrash where barcode=:barcode
  5706. //";
  5707. string sql = @"select
  5708. KilnID,
  5709. KilnCode,
  5710. KilnName,
  5711. KilnCarID,
  5712. KilnCarCode,
  5713. KilnCarName,
  5714. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5715. KilnCarPosition
  5716. from tp_pm_inproduction where barcode=:barcode
  5717. ";
  5718. try
  5719. {
  5720. IDataParameter[] paras = new OracleParameter[]
  5721. {
  5722. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  5723. };
  5724. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  5725. if (returnDs != null
  5726. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5727. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5728. {
  5729. return returnDs;
  5730. }
  5731. else
  5732. {
  5733. return null;
  5734. }
  5735. }
  5736. catch (Exception ex)
  5737. {
  5738. throw ex;
  5739. }
  5740. }
  5741. /// <summary>
  5742. /// 修改在产数据
  5743. /// </summary>
  5744. /// <param name="oracleTrConn">连接对象</param>
  5745. /// <param name="inProduction">在产数据实体类</param>
  5746. /// <param name="sUserInfo">用户基本信息</param>
  5747. /// <returns>string</returns>
  5748. /// <remarks>
  5749. /// 陈冰 2014.09.18 新建
  5750. /// </remarks>
  5751. private static string UpdateInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo)
  5752. {
  5753. List<OracleParameter> paras = new List<OracleParameter>();
  5754. //paras.Add(new OracleParameter(":completeProcedureID", inProduction.CompleteProcedureID));
  5755. paras.Add(new OracleParameter(":procedureModel", inProduction.ProcedureModel));
  5756. paras.Add(new OracleParameter(":modelType", inProduction.ModelType));
  5757. paras.Add(new OracleParameter(":defectFlag", inProduction.DefectFlag));
  5758. paras.Add(new OracleParameter(":reworkProcedureID", inProduction.ReworkProcedureID));
  5759. paras.Add(new OracleParameter(":flowprocedureid", inProduction.FlowProcedureID));
  5760. paras.Add(new OracleParameter(":procedureID", inProduction.ProcedureID));
  5761. paras.Add(new OracleParameter(":productionDataID", inProduction.ProductionDataID));
  5762. #region SQL
  5763. string sql = " update TP_PM_InProduction "
  5764. //+ " set CompleteProcedureID = :completeProcedureID,"
  5765. + "set ProcedureModel = :procedureModel,"
  5766. + " ModelType = :modelType,"
  5767. + " DefectFlag = :defectFlag,"
  5768. + " flowprocedureid = :flowprocedureid,"
  5769. + " flowproceduretime = sysdate,"
  5770. + " procedureID = :procedureID,"
  5771. + " procedureTime = sysdate,"
  5772. + " productionDataID = :productionDataID,"
  5773. // + " GoodsLevelTypeID = :GoodsLevelTypeID,"
  5774. + " ReworkProcedureID = :reworkProcedureID,";
  5775. #region 只有交坯工序是才传值更改公坯字段
  5776. if (inProduction.IsPublicBody != null)
  5777. {
  5778. sql = sql + " IsPublicBody = :isPublicBody,";
  5779. paras.Add(new OracleParameter(":isPublicBody", inProduction.IsPublicBody));
  5780. }
  5781. #endregion
  5782. #region 只有走特定返工工序时才更改重烧字段
  5783. if (inProduction.IsReFire != null)
  5784. {
  5785. sql = sql + " IsReFire = :isReFire,";
  5786. paras.Add(new OracleParameter(":isReFire", inProduction.IsReFire));
  5787. }
  5788. #endregion
  5789. #region 只有成检时才更新产品分级字段
  5790. //if (inProduction.GoodsGrade != null)
  5791. //{
  5792. // sql = sql + " GoodsGrade = :goodsGrade,";
  5793. // paras.Add(new OracleParameter(":goodsGrade", inProduction.GoodsGrade));
  5794. //}
  5795. if (inProduction.GoodsLevelID != null)
  5796. {
  5797. sql = sql + " GoodsLevelID = :GoodsLevelID,";
  5798. paras.Add(new OracleParameter(":GoodsLevelID", inProduction.GoodsLevelID));
  5799. }
  5800. if (inProduction.GoodsLevelTypeID != null)
  5801. {
  5802. sql = sql + " GoodsLevelTypeID = :GoodsLevelTypeID,";
  5803. paras.Add(new OracleParameter(":GoodsLevelTypeID", inProduction.GoodsLevelTypeID));
  5804. }
  5805. #region 更新窑炉窑车属性
  5806. if (inProduction.ModelType == 1 || inProduction.ModelType == 2 || inProduction.ModelType == 3 || inProduction.ModelType == 4 || inProduction.ModelType == 6)
  5807. {
  5808. sql = sql + " KilnID = :KilnID,";
  5809. paras.Add(new OracleParameter(":KilnID", inProduction.KilnID));
  5810. sql = sql + " KilnCode = :KilnCode,";
  5811. paras.Add(new OracleParameter(":KilnCode", inProduction.KilnCode));
  5812. sql = sql + " KilnName = :KilnName,";
  5813. paras.Add(new OracleParameter(":KilnName", inProduction.KilnName));
  5814. sql = sql + " KilnCarID = :KilnCarID,";
  5815. paras.Add(new OracleParameter(":KilnCarID", inProduction.KilnCarID));
  5816. sql = sql + " KilnCarCode = :KilnCarCode,";
  5817. paras.Add(new OracleParameter(":KilnCarCode", inProduction.KilnCarCode));
  5818. sql = sql + " KilnCarName = :KilnCarName,";
  5819. paras.Add(new OracleParameter(":KilnCarName", inProduction.KilnCarName));
  5820. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  5821. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  5822. sql = sql + " KilnCarPosition = :KilnCarPosition,";
  5823. paras.Add(new OracleParameter(":KilnCarPosition", inProduction.KilnCarPosition));
  5824. }
  5825. else
  5826. {
  5827. //
  5828. ////////DataSet ds = GetKilnCarInfo(oracleTrConn, inProduction.BarCode, sUserInfo);
  5829. ////////if (ds != null)
  5830. ////////{
  5831. //////// if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  5832. //////// {
  5833. //////// sql = sql + " KilnID = :KilnID,";
  5834. //////// paras.Add(new OracleParameter(":KilnID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"])));
  5835. //////// sql = sql + " KilnCode = :KilnCode,";
  5836. //////// paras.Add(new OracleParameter(":KilnCode", ds.Tables[0].Rows[0]["KilnCode"].ToString()));
  5837. //////// sql = sql + " KilnName = :KilnName,";
  5838. //////// paras.Add(new OracleParameter(":KilnName", ds.Tables[0].Rows[0]["KilnName"].ToString()));
  5839. //////// sql = sql + " KilnCarID = :KilnCarID,";
  5840. //////// paras.Add(new OracleParameter(":KilnCarID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"])));
  5841. //////// sql = sql + " KilnCarCode = :KilnCarCode,";
  5842. //////// paras.Add(new OracleParameter(":KilnCarCode", ds.Tables[0].Rows[0]["KilnCarCode"].ToString()));
  5843. //////// sql = sql + " KilnCarName = :KilnCarName,";
  5844. //////// paras.Add(new OracleParameter(":KilnCarName", ds.Tables[0].Rows[0]["KilnCarName"].ToString()));
  5845. //////// sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  5846. //////// paras.Add(new OracleParameter(":KilnCarBatchNo", ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString()));
  5847. //////// sql = sql + " KilnCarPosition = :KilnCarPosition,";
  5848. //////// paras.Add(new OracleParameter(":KilnCarPosition", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"])));
  5849. //////// }
  5850. ////////}
  5851. }
  5852. #endregion
  5853. #endregion
  5854. #region 更新在产商标
  5855. if (inProduction.LogoID != null)
  5856. {
  5857. sql = sql + " LogoID = :LogoID,";
  5858. paras.Add(new OracleParameter(":LogoID", inProduction.LogoID));
  5859. }
  5860. #endregion
  5861. sql = sql + " UserID = :userID,"
  5862. + " UpdateUserID = :updateUserID"
  5863. + " where Barcode = :barCode";
  5864. #endregion
  5865. paras.Add(new OracleParameter(":userID", inProduction.UserID));
  5866. paras.Add(new OracleParameter(":updateUserID", sUserInfo.UserID));
  5867. paras.Add(new OracleParameter(":barCode", inProduction.BarCode));
  5868. foreach (var para in paras)
  5869. {
  5870. if (para.Value + "" == "")
  5871. {
  5872. para.Value = DBNull.Value;
  5873. }
  5874. }
  5875. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  5876. // 保存失败
  5877. if (result != Constant.INT_IS_ONE)
  5878. {
  5879. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5880. }
  5881. // 保存成功返回null
  5882. return null;
  5883. }
  5884. /// <summary>
  5885. /// 校验条码有效
  5886. /// </summary>
  5887. /// <param name="oracleTrConn">连接对象</param>
  5888. /// <param name="procedureID">工序ID</param>
  5889. /// <param name="barcode">条码</param>
  5890. /// <param name="goodsID">返回的产品ID</param>
  5891. /// <param name="goodsCode">返回的产品Code</param>
  5892. /// <param name="goodsName">返回的产品名称</param>
  5893. /// <param name="groutingUserID">返回的注浆者ID</param>
  5894. /// <returns>string</returns>
  5895. /// <remarks>
  5896. /// 陈冰 2014.09.18 新建
  5897. /// </remarks>
  5898. private static string CheckBarcode(IDBTransaction oracleTrConn,
  5899. int procedureID,
  5900. string barcode,
  5901. out int goodsID,
  5902. out string goodsCode,
  5903. out string goodsName,
  5904. out string groutingUserCode,
  5905. SUserInfo sUserInfo
  5906. )
  5907. {
  5908. try
  5909. {
  5910. OracleParameter[] paras = new OracleParameter[]{
  5911. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  5912. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  5913. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  5914. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  5915. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  5916. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  5917. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  5918. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  5919. };
  5920. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  5921. if (!"null".Equals(paras[3].Value + ""))
  5922. {
  5923. goodsID = Convert.ToInt32(paras[3].Value + "");
  5924. }
  5925. else
  5926. {
  5927. goodsID = 0;
  5928. }
  5929. goodsCode = paras[4].Value + "";
  5930. goodsName = paras[5].Value + "";
  5931. if (!"null".Equals(paras[6].Value + ""))
  5932. {
  5933. groutingUserCode = paras[6].Value + "";
  5934. }
  5935. else
  5936. {
  5937. groutingUserCode = null;
  5938. }
  5939. if ("null".Equals(paras[2].Value + ""))
  5940. {
  5941. return null;
  5942. }
  5943. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  5944. }
  5945. catch (Exception ex)
  5946. {
  5947. throw ex;
  5948. }
  5949. }
  5950. /// <summary>
  5951. /// 查询工序信息
  5952. /// </summary>
  5953. /// <param name="oracleTrConn">连接对象</param>
  5954. /// <param name="procedureID">工序ID</param>
  5955. /// <returns>工序实体</returns>
  5956. private static ProcedureEntity GetProcedurByID(IDBTransaction oracleTrConn, int procedureID)
  5957. {
  5958. ProcedureEntity procedureEntity = new ProcedureEntity();
  5959. string procsql = "pro_pm_searchProcedurbyID";
  5960. try
  5961. {
  5962. IDataParameter[] paras = new OracleParameter[]
  5963. {
  5964. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  5965. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  5966. };
  5967. DataSet returnDs = oracleTrConn.ExecStoredProcedure(procsql, paras);
  5968. if (returnDs != null
  5969. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  5970. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  5971. {
  5972. DataRow row = returnDs.Tables[0].Rows[0];
  5973. // 转实体
  5974. procedureEntity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  5975. return procedureEntity;
  5976. }
  5977. else
  5978. {
  5979. return null;
  5980. }
  5981. }
  5982. catch (Exception ex)
  5983. {
  5984. throw ex;
  5985. }
  5986. }
  5987. #endregion
  5988. #region 检验
  5989. /// <summary>
  5990. /// 保存条码信息
  5991. /// </summary>
  5992. /// <param name="procedureID">工序ID</param>
  5993. /// <param name="productionDataEntitys">生产数据集</param>
  5994. /// <param name="sUserInfo">用户基本信息</param>
  5995. /// <returns>string</returns>
  5996. public static string AddCheckBarcode(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  5997. {
  5998. string errMsg = "";
  5999. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6000. try
  6001. {
  6002. oracleTrConn.Connect();
  6003. #region 查询工序信息
  6004. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  6005. #endregion
  6006. #region 标准检验(半成品)
  6007. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  6008. {
  6009. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6010. }
  6011. #endregion
  6012. #region 成品检验
  6013. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  6014. {
  6015. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6016. }
  6017. #endregion
  6018. #region 入窑前检验
  6019. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  6020. {
  6021. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  6022. }
  6023. #endregion
  6024. // 没有错误 提交事务
  6025. if (string.IsNullOrEmpty(errMsg))
  6026. {
  6027. oracleTrConn.Commit();
  6028. }
  6029. }
  6030. catch (Exception ex)
  6031. {
  6032. oracleTrConn.Rollback();
  6033. throw ex;
  6034. }
  6035. finally
  6036. {
  6037. // 释放资源
  6038. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6039. {
  6040. oracleTrConn.Disconnect();
  6041. }
  6042. }
  6043. return errMsg;
  6044. }
  6045. /// <summary>
  6046. /// 入窑前检验
  6047. /// </summary>
  6048. /// <param name="oracleTrConn">连接对象</param>
  6049. /// <param name="procedure">工序</param>
  6050. /// <param name="productionDataEntitys">生产数据集</param>
  6051. /// <param name="sUserInfo">用户基本信息</param>
  6052. /// <returns>string</returns>
  6053. private static string AddIntoKilnCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6054. {
  6055. string errMsg = "";
  6056. // 获得账务日期
  6057. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6058. // 本批采集的批次号
  6059. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6060. #region 查询产品分级
  6061. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6062. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6063. #endregion
  6064. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6065. {
  6066. if (string.IsNullOrEmpty(productionData.Barcode))
  6067. {
  6068. throw new Exception("传入的条码号为空");
  6069. }
  6070. if (productionData.ProductionDataID != 0)
  6071. {
  6072. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6073. if (!string.IsNullOrEmpty(errMsg))
  6074. {
  6075. return errMsg;
  6076. }
  6077. // 删除报废条码
  6078. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6079. where tp_pm_scrapproduct.barcode=:barcode";
  6080. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6081. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6082. };
  6083. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6084. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6085. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6086. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6087. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6088. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6089. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6090. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6091. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6092. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6093. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6094. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6095. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6096. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6097. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6098. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6099. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6100. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6101. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6102. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6103. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6104. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6105. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6106. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6107. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6108. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6109. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6110. from TP_PM_InProductionTrash where barcode=:barcode ";
  6111. OracleParameter[] InProductparas = new OracleParameter[]{
  6112. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6113. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6114. };
  6115. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6116. //删除回收站中的条码
  6117. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6118. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6119. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6120. };
  6121. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6122. }
  6123. int goodsID = Constant.INT_IS_ZERO;
  6124. string goodsCode = string.Empty;
  6125. string goodsName = string.Empty;
  6126. // 注浆者工号
  6127. string groutingUserCode = string.Empty;
  6128. #region 校验条码有效性
  6129. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6130. if (!string.IsNullOrEmpty(errMsg))
  6131. {
  6132. if (productionData.ProductionDataID == 0)
  6133. return errMsg;
  6134. }
  6135. #endregion
  6136. #region 获得产品分级ID
  6137. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  6138. // 获得产品分级ID
  6139. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  6140. #endregion
  6141. // 查询新插入的生产数据ID
  6142. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6143. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6144. int productionDataID = 0;
  6145. if (!string.IsNullOrEmpty(idStr))
  6146. {
  6147. productionDataID = int.Parse(idStr);
  6148. }
  6149. else
  6150. {
  6151. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6152. }
  6153. int? ClassesSettingID = null;//班次配置ID
  6154. #region 添加生产者数据
  6155. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6156. if (!string.IsNullOrEmpty(errMsg))
  6157. {
  6158. return errMsg;
  6159. }
  6160. #endregion
  6161. #region 添加生产数据
  6162. #region 属性赋值
  6163. productionData.ClassesSettingID = ClassesSettingID;
  6164. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6165. productionData.CentralizedBatchNo = centralizedBatchNo;
  6166. productionData.ProductionLineID = procedure.ProductionLineID;
  6167. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6168. productionData.ProductionLineName = procedure.ProductionlineName;
  6169. productionData.ProcedureID = procedure.ProcedureID;
  6170. productionData.ProcedureCode = procedure.ProcedureCode;
  6171. productionData.ProcedureName = procedure.ProcedureName;
  6172. productionData.ProcedureModel = procedure.ProcedureModel;
  6173. productionData.ModelType = procedure.ModelType;
  6174. productionData.NodeType = procedure.NodeType;
  6175. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6176. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6177. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6178. productionData.OrganizationID = procedure.OrganizationID;
  6179. productionData.GoodsID = goodsID;
  6180. productionData.GoodsCode = goodsCode;
  6181. productionData.GoodsName = goodsName;
  6182. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6183. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6184. //如果报废给此产品最状态赋值 wangxin 2015/4/1 因为删除掉了生产数据表中的产品最终状态
  6185. ////if (productionData.ProductionDefects != null)
  6186. ////{
  6187. //// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6188. //// {
  6189. //// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6190. //// {
  6191. //// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6192. //// break;
  6193. //// }
  6194. //// }
  6195. ////}
  6196. ////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6197. ////{
  6198. //// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  6199. ////}
  6200. ////// string sqlReFire = @"select
  6201. ////// isrefire
  6202. ////// from tp_pm_inproduction where barcode=:barcode
  6203. ////// ";
  6204. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  6205. ////// new OracleParameter(":barcode",productionData.Barcode),
  6206. ////// };
  6207. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  6208. ////// //DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6209. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6210. ////// {
  6211. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  6212. ////// {
  6213. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6214. ////// }
  6215. ////// }
  6216. #endregion
  6217. string OutSpecialRepairflag = "0";//干补标识
  6218. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6219. errMsg = AddProductionDataWaster(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6220. if (!string.IsNullOrEmpty(errMsg))
  6221. {
  6222. return errMsg;
  6223. }
  6224. #endregion
  6225. //#region 添加生产者数据
  6226. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  6227. //if (!string.IsNullOrEmpty(errMsg))
  6228. //{
  6229. // return errMsg;
  6230. //}
  6231. //#endregion
  6232. #region 条码有缺陷
  6233. // 废品标识
  6234. bool scrapFlag = false;
  6235. // 存在缺陷 插入缺陷表
  6236. if (productionData.ProductionDefects != null)
  6237. {
  6238. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6239. {
  6240. #region 保存缺陷
  6241. productionDefect.ProductionDataID = productionDataID;
  6242. productionDefect.BarCode = productionData.Barcode;
  6243. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6244. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6245. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6246. productionDefect.ProcedureID = procedure.ProcedureID;
  6247. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6248. productionDefect.ProcedureName = procedure.ProcedureName;
  6249. productionDefect.UserID = productionData.UserID;
  6250. productionDefect.UserCode = productionData.UserCode;
  6251. productionDefect.UserName = productionData.UserName;
  6252. productionDefect.GoodsID = productionData.GoodsID;
  6253. productionDefect.GoodsCode = productionData.GoodsCode;
  6254. productionDefect.GoodsName = productionData.GoodsName;
  6255. productionData.Remarks = productionData.Remarks;
  6256. productionDefect.ScrapResponFlag
  6257. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6258. // 保存缺陷
  6259. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6260. if (!string.IsNullOrEmpty(errMsg))
  6261. {
  6262. return errMsg;
  6263. }
  6264. #endregion
  6265. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  6266. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  6267. {
  6268. scrapFlag = true;
  6269. #region 添加废弃产品 删除在产产品数据
  6270. #region 添加废弃产品
  6271. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6272. #region 属性赋值
  6273. scrapProduct.BarCode = productionData.Barcode;
  6274. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  6275. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6276. {
  6277. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  6278. }
  6279. else
  6280. {
  6281. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6282. }
  6283. scrapProduct.ScrapDate = accountDate;
  6284. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  6285. scrapProduct.Remarks = productionDefect.Remarks;
  6286. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6287. scrapProduct.Auditor = sUserInfo.UserID;
  6288. scrapProduct.AuditlDate = accountDate;
  6289. scrapProduct.AccountDate = accountDate;
  6290. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6291. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6292. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  6293. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  6294. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6295. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6296. scrapProduct.ScrapType = 1;
  6297. #endregion
  6298. // 保存报废
  6299. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6300. // 保存失败
  6301. if (!string.IsNullOrEmpty(errMsg))
  6302. {
  6303. return errMsg;
  6304. }
  6305. #endregion
  6306. #region 添加责任工序
  6307. // 不是开始工序时。需要添加责任工序
  6308. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  6309. {
  6310. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6311. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6312. ResponProcedureEntity responProce = new ResponProcedureEntity();
  6313. #region 属性赋值
  6314. responProce.BarCode = productionData.Barcode;
  6315. responProce.ProductionDataID = productionDataID;
  6316. responProce.ProductionLineID = productionDefect.ProductionLineID;
  6317. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6318. responProce.ProductionLineName = productionDefect.ProductionLineName;
  6319. responProce.ProcedureID = productionDefect.DefectProcedureID;
  6320. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6321. responProce.ProcedureName = productionDefect.DefectProcedureName;
  6322. responProce.UserID = productionDefect.DefectUserID;
  6323. responProce.UserCode = productionDefect.DefectUserCode;
  6324. responProce.UserName = productionDefect.DefectUserName;
  6325. responProce.Remarks = productionDefect.Remarks;
  6326. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6327. #endregion
  6328. // 保存责任工序
  6329. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6330. // 保存失败
  6331. if (!string.IsNullOrEmpty(errMsg))
  6332. {
  6333. return errMsg;
  6334. }
  6335. }
  6336. #endregion
  6337. #region 删除在产产品数据
  6338. InProductionEntity delInProductionEntity = new InProductionEntity();
  6339. delInProductionEntity.BarCode = productionData.Barcode;
  6340. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  6341. // 执行删除 在产数据
  6342. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6343. // 执行失败
  6344. // if (!string.IsNullOrEmpty(errMsg)) 注释日期2015-12-28
  6345. // {
  6346. // return errMsg;
  6347. // }
  6348. #endregion
  6349. #endregion
  6350. }
  6351. #endregion
  6352. }
  6353. }
  6354. #endregion
  6355. // 条码有缺陷或者报废
  6356. //wangxin 20150414
  6357. //if (scrapFlag || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  6358. //{
  6359. #region 有缺陷 删除条码对应窑车产品
  6360. if (productionData.DefectFlag == Constant.GoodsLevelType.Defect.GetHashCode())
  6361. {
  6362. errMsg = DeleteKilnCarGoods(oracleTrConn, productionData.Barcode);
  6363. if (!string.IsNullOrEmpty(errMsg))
  6364. {
  6365. return errMsg;
  6366. }
  6367. }
  6368. #endregion
  6369. //}
  6370. //wangxin 20150414 end
  6371. // 条码没有报废
  6372. if (!scrapFlag)
  6373. {
  6374. #region 修改在产产品数据的当前工序
  6375. InProductionEntity inProductionEntity = new InProductionEntity();
  6376. inProductionEntity.BarCode = productionData.Barcode;
  6377. //流程工序
  6378. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  6379. // 当前工序
  6380. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6381. inProductionEntity.ProcedureID = procedure.ProcedureID;
  6382. // 生产数据ID
  6383. inProductionEntity.ProductionDataID = productionDataID;
  6384. // 工序模型
  6385. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6386. // 工序类别
  6387. inProductionEntity.ModelType = procedure.ModelType;
  6388. // 生产工号
  6389. inProductionEntity.UserID = productionData.UserID;
  6390. // 缺陷标识
  6391. inProductionEntity.DefectFlag = productionData.DefectFlag;
  6392. // 返工工序ID
  6393. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6394. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6395. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6396. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  6397. // 执行修改
  6398. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6399. // 执行失败
  6400. if (!string.IsNullOrEmpty(errMsg))
  6401. {
  6402. return errMsg;
  6403. }
  6404. #endregion
  6405. }
  6406. }
  6407. return errMsg;
  6408. }
  6409. /// <summary>
  6410. /// 删除窑车产品
  6411. /// </summary>
  6412. /// <param name="oracleTrConn">数据连接</param>
  6413. /// <param name="barcode">产品条码</param>
  6414. /// <returns>string</returns>
  6415. private static string DeleteKilnCarGoods(IDBTransaction oracleTrConn, string barcode)
  6416. {
  6417. string sql = "delete TP_PM_KilnCarGoods where BarCode = :barcode";
  6418. OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":barcode", barcode) };
  6419. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  6420. // 保存失败
  6421. if (result != Constant.INT_IS_ONE)
  6422. {
  6423. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6424. }
  6425. return null;
  6426. }
  6427. /// <summary>
  6428. /// 添加成品编辑
  6429. /// </summary>
  6430. /// <param name="oracleTrConn">数据连接</param>
  6431. /// <param name="procedure">工序对象</param>
  6432. /// <param name="productionDataEntitys">生产数据集</param>
  6433. /// <param name="sUserInfo">用户基本信息</param>
  6434. /// <returns>string</returns>
  6435. //private static string AddFinishCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6436. //{
  6437. // string errMsg = "";
  6438. // // 获得账务日期
  6439. // DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6440. // // 本批采集的批次号
  6441. // string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6442. // foreach (ProductionDataEntity productionData in productionDataEntitys)
  6443. // {
  6444. // if (string.IsNullOrEmpty(productionData.Barcode))
  6445. // {
  6446. // throw new Exception("传入的条码号为空");
  6447. // }
  6448. // int goodsID = Constant.INT_IS_ZERO;
  6449. // string goodsCode = string.Empty;
  6450. // string goodsName = string.Empty;
  6451. // // 注浆者工号
  6452. // string groutingUserCode = string.Empty;
  6453. // // 次品标识
  6454. // bool substandardFlag = false;
  6455. // #region 校验条码有效性
  6456. // errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6457. // if (!string.IsNullOrEmpty(errMsg))
  6458. // {
  6459. // if (productionData.ProductionDataID == 0)
  6460. // return errMsg;
  6461. // }
  6462. // #endregion
  6463. // #region 添加生产数据
  6464. // #region 属性赋值
  6465. // productionData.CentralizedBatchNo = centralizedBatchNo;
  6466. // productionData.ProductionLineID = procedure.ProductionLineID;
  6467. // productionData.ProductionLineCode = procedure.ProductionlineCode;
  6468. // productionData.ProductionLineName = procedure.ProductionlineName;
  6469. // productionData.CompleteProcedureID = procedure.ProcedureID;
  6470. // productionData.ProcedureCode = procedure.ProcedureCode;
  6471. // productionData.ProcedureName = procedure.ProcedureName;
  6472. // productionData.ProcedureModel = procedure.ProcedureModel;
  6473. // productionData.ModelType = procedure.ModelType;
  6474. // productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  6475. // // 重烧
  6476. // if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  6477. // {
  6478. // //productionData.GoodsLevelID = null;
  6479. // productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6480. // }
  6481. // // 次品
  6482. // else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6483. // {
  6484. // //productionData.GoodsLevelID = null;
  6485. // substandardFlag = true;
  6486. // }
  6487. // // 查询新插入的生产数据ID
  6488. // if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  6489. // {
  6490. // //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  6491. // //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  6492. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  6493. // DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6494. // if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6495. // {
  6496. // productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6497. // }
  6498. // }
  6499. // productionData.OrganizationID = procedure.OrganizationID;
  6500. // productionData.GoodsID = goodsID;
  6501. // productionData.GoodsCode = goodsCode;
  6502. // productionData.GoodsName = goodsName;
  6503. // productionData.GoodsLevelID = productionData.GoodsLevelID;
  6504. // productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6505. // //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6506. // //{
  6507. // // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  6508. // //}
  6509. // #endregion
  6510. // string OutSpecialRepairflag = "0";//干补标识
  6511. // errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6512. // if (!string.IsNullOrEmpty(errMsg))
  6513. // {
  6514. // return errMsg;
  6515. // }
  6516. // // 查询新插入的生产数据ID
  6517. // string sql = "select SEQ_PM_ProductionData_ID.Currval from dual";
  6518. // string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6519. // // 新插入的班次配置表ID
  6520. // int productionDataID = 0;
  6521. // if (!string.IsNullOrEmpty(idStr))
  6522. // {
  6523. // productionDataID = int.Parse(idStr);
  6524. // }
  6525. // else
  6526. // {
  6527. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6528. // }
  6529. // #endregion
  6530. // #region 添加生产者数据
  6531. // int? ClassesSettingID = null;//班次配置ID
  6532. // errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6533. // if (!string.IsNullOrEmpty(errMsg))
  6534. // {
  6535. // return errMsg;
  6536. // }
  6537. // #endregion
  6538. // #region 条码有缺陷
  6539. // #region 是次品 添加废弃产品
  6540. // if (substandardFlag)
  6541. // {
  6542. // #region 添加废弃产品
  6543. // ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6544. // #region 属性赋值
  6545. // scrapProduct.BarCode = productionData.Barcode;
  6546. // scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  6547. // scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6548. // scrapProduct.ScrapDate = accountDate;
  6549. // scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  6550. // scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6551. // scrapProduct.Auditor = sUserInfo.UserID;
  6552. // scrapProduct.AuditlDate = accountDate;
  6553. // scrapProduct.AccountDate = accountDate;
  6554. // scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6555. // scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6556. // #endregion
  6557. // // 保存报废
  6558. // errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6559. // // 保存失败
  6560. // if (!string.IsNullOrEmpty(errMsg))
  6561. // {
  6562. // return errMsg;
  6563. // }
  6564. // #endregion
  6565. // }
  6566. // #endregion
  6567. // // 存在缺陷 插入缺陷表
  6568. // if (productionData.ProductionDefects != null)
  6569. // {
  6570. // foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6571. // {
  6572. // #region 保存缺陷
  6573. // productionDefect.ProductionDataID = productionDataID;
  6574. // productionDefect.BarCode = productionData.Barcode;
  6575. // productionDefect.ProductionLineID = procedure.ProductionLineID;
  6576. // productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6577. // productionDefect.ProductionLineName = procedure.ProductionlineName;
  6578. // productionDefect.ProcedureID = procedure.ProcedureID;
  6579. // productionDefect.ProcedureCode = procedure.ProcedureCode;
  6580. // productionDefect.ProcedureName = procedure.ProcedureName;
  6581. // productionDefect.UserID = productionData.UserID;
  6582. // productionDefect.UserCode = productionData.UserCode;
  6583. // productionDefect.UserName = productionData.UserName;
  6584. // productionDefect.GoodsID = productionData.GoodsID;
  6585. // productionDefect.GoodsCode = productionData.GoodsCode;
  6586. // productionDefect.GoodsName = productionData.GoodsName;
  6587. // productionData.Remarks = productionData.Remarks;
  6588. // productionDefect.ScrapResponFlag
  6589. // = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6590. // // 保存缺陷
  6591. // errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6592. // if (!string.IsNullOrEmpty(errMsg))
  6593. // {
  6594. // return errMsg;
  6595. // }
  6596. // #endregion
  6597. // #region 是次品 添加废弃责任工序
  6598. // if (substandardFlag)
  6599. // {
  6600. // #region 添加责任工序
  6601. // ResponProcedureEntity responProce = new ResponProcedureEntity();
  6602. // // 查询新插入的废弃ID
  6603. // string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6604. // string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  6605. // #region 属性赋值
  6606. // responProce.BarCode = productionData.Barcode;
  6607. // responProce.ProductionDataID = productionDataID;
  6608. // responProce.ProductionLineID = productionDefect.ProductionLineID;
  6609. // responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6610. // responProce.ProductionLineName = productionDefect.ProductionLineName;
  6611. // responProce.ProcedureID = productionDefect.DefectProcedureID;
  6612. // responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6613. // responProce.ProcedureName = productionDefect.DefectProcedureName;
  6614. // responProce.UserID = productionDefect.DefectUserID;
  6615. // responProce.UserCode = productionDefect.DefectUserCode;
  6616. // responProce.UserName = productionDefect.DefectUserName;
  6617. // responProce.Remarks = productionDefect.Remarks;
  6618. // responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  6619. // #endregion
  6620. // // 保存责任工序
  6621. // errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6622. // // 保存失败
  6623. // if (!string.IsNullOrEmpty(errMsg))
  6624. // {
  6625. // return errMsg;
  6626. // }
  6627. // #endregion
  6628. // }
  6629. // #endregion
  6630. // }
  6631. // }
  6632. // #endregion
  6633. // #region 条码是次品 删除在产产品数据
  6634. // if (substandardFlag)
  6635. // {
  6636. // #region 删除在产产品数据
  6637. // InProductionEntity delInProductionEntity = new InProductionEntity();
  6638. // delInProductionEntity.BarCode = productionData.Barcode;
  6639. // // 执行删除 在产数据
  6640. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6641. // // 执行失败
  6642. // if (!string.IsNullOrEmpty(errMsg))
  6643. // {
  6644. // return errMsg;
  6645. // }
  6646. // #endregion
  6647. // }
  6648. // #endregion
  6649. // #region 条码不是次品
  6650. // if (!substandardFlag)
  6651. // {
  6652. // #region 中间工序/重烧 修改在产产品数据
  6653. // if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  6654. // || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  6655. // {
  6656. // #region 修改在产产品数据的当前工序
  6657. // InProductionEntity inProductionEntity = new InProductionEntity();
  6658. // inProductionEntity.BarCode = productionData.Barcode;
  6659. // // 当前工序
  6660. // inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6661. // // 工序模型
  6662. // inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6663. // // 工序类别
  6664. // inProductionEntity.ModelType = procedure.ModelType;
  6665. // // 生产工号
  6666. // inProductionEntity.UserID = productionData.UserID;
  6667. // // 重烧
  6668. // inProductionEntity.IsReFire = productionData.IsReFire;
  6669. // // 缺陷
  6670. // inProductionEntity.DefectFlag = productionData.DefectFlag;
  6671. // // 产品分级
  6672. // inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  6673. // // 返工工序ID
  6674. // inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6675. // inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6676. // inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6677. // // 执行修改
  6678. // errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6679. // // 执行失败
  6680. // if (!string.IsNullOrEmpty(errMsg))
  6681. // {
  6682. // return errMsg;
  6683. // }
  6684. // #endregion
  6685. // }
  6686. // #endregion
  6687. // #region 结束工序 添加成品数据 删除在产产品数据
  6688. // else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  6689. // {
  6690. // #region 添加成品数据 删除在产产品数据
  6691. // FinishedProductEntity finishedProduct = new FinishedProductEntity();
  6692. // finishedProduct.BarCode = productionData.Barcode;
  6693. // errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo);
  6694. // if (!string.IsNullOrEmpty(errMsg))
  6695. // {
  6696. // return errMsg;
  6697. // }
  6698. // InProductionEntity delInProductionEntity = new InProductionEntity();
  6699. // delInProductionEntity.BarCode = productionData.Barcode;
  6700. // // 执行删除 在产数据
  6701. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  6702. // // 执行失败
  6703. // if (!string.IsNullOrEmpty(errMsg))
  6704. // {
  6705. // return errMsg;
  6706. // }
  6707. // #endregion
  6708. // }
  6709. // #endregion
  6710. // }
  6711. // #endregion
  6712. // }
  6713. // return errMsg;
  6714. //}
  6715. /// <summary>
  6716. /// 保存标准检验
  6717. /// </summary>
  6718. /// <param name="oracleTrConn">连接对象</param>
  6719. /// <param name="procedure">工序信息</param>
  6720. /// <param name="productionDataEntitys">生产数据集合</param>
  6721. /// <param name="sUserInfo">用户基本信息</param>
  6722. /// <returns>string</returns>
  6723. private static string AddNormalCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6724. {
  6725. string errMsg = "";
  6726. // 获得账务日期
  6727. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6728. // 本批采集的批次号
  6729. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  6730. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  6731. #region 查询产品分级
  6732. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6733. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6734. #endregion
  6735. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6736. {
  6737. if (string.IsNullOrEmpty(productionData.Barcode))
  6738. {
  6739. throw new Exception("传入的条码号为空");
  6740. }
  6741. if (productionData.ProductionDataID != 0)
  6742. {
  6743. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6744. if (!string.IsNullOrEmpty(errMsg))
  6745. {
  6746. return errMsg;
  6747. }
  6748. // 删除报废条码
  6749. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6750. where tp_pm_scrapproduct.barcode=:barcode";
  6751. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6752. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6753. };
  6754. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6755. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6756. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6757. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6758. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6759. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6760. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6761. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6762. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6763. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6764. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6765. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6766. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6767. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6768. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6769. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6770. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6771. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6772. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6773. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6774. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6775. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6776. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6777. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6778. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6779. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6780. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6781. from TP_PM_InProductionTrash where barcode=:barcode ";
  6782. OracleParameter[] InProductparas = new OracleParameter[]{
  6783. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6784. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6785. };
  6786. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6787. //删除回收站中的条码
  6788. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6789. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6790. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6791. };
  6792. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6793. }
  6794. int goodsID = Constant.INT_IS_ZERO;
  6795. string goodsCode = string.Empty;
  6796. string goodsName = string.Empty;
  6797. // 注浆者工号
  6798. string groutingUserCode = string.Empty;
  6799. #region 校验条码有效性
  6800. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6801. if (!string.IsNullOrEmpty(errMsg))
  6802. {
  6803. if (productionData.ProductionDataID == 0)
  6804. return errMsg;
  6805. }
  6806. #endregion
  6807. // 查询新插入的生产数据ID
  6808. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6809. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6810. int? ClassesSettingID = null;//班次配置ID
  6811. // 新插入的班次配置表ID
  6812. int productionDataID = 0;
  6813. if (!string.IsNullOrEmpty(idStr))
  6814. {
  6815. productionDataID = int.Parse(idStr);
  6816. }
  6817. else
  6818. {
  6819. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6820. }
  6821. #region 添加生产者数据
  6822. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6823. if (!string.IsNullOrEmpty(errMsg))
  6824. {
  6825. return errMsg;
  6826. }
  6827. #endregion
  6828. #region 添加生产数据
  6829. #region 属性赋值
  6830. productionData.ClassesSettingID = ClassesSettingID;
  6831. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6832. productionData.CentralizedBatchNo = centralizedBatchNo;
  6833. productionData.ProductionLineID = procedure.ProductionLineID;
  6834. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6835. productionData.ProductionLineName = procedure.ProductionlineName;
  6836. productionData.CompleteProcedureID = procedure.ProcedureID;
  6837. productionData.ProcedureID = procedure.ProcedureID;
  6838. productionData.ProcedureCode = procedure.ProcedureCode;
  6839. productionData.ProcedureName = procedure.ProcedureName;
  6840. productionData.ProcedureModel = procedure.ProcedureModel;
  6841. productionData.ModelType = procedure.ModelType;
  6842. productionData.NodeType = procedure.NodeType;
  6843. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6844. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6845. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6846. productionData.OrganizationID = procedure.OrganizationID;
  6847. productionData.GoodsID = goodsID;
  6848. productionData.GoodsCode = goodsCode;
  6849. productionData.GoodsName = goodsName;
  6850. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6851. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6852. ////////如果报废给此产品最状态赋值
  6853. //////if (productionData.ProductionDefects != null)
  6854. //////{
  6855. ////// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6856. ////// {
  6857. ////// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6858. ////// {
  6859. ////// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6860. ////// break;
  6861. ////// }
  6862. ////// }
  6863. //////}
  6864. //////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6865. //////{
  6866. ////// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  6867. //////}
  6868. ////// string sqlReFire = @"select
  6869. ////// isrefire
  6870. ////// from tp_pm_inproduction where barcode=:barcode
  6871. ////// ";
  6872. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  6873. ////// new OracleParameter(":barcode",productionData.Barcode),
  6874. ////// };
  6875. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  6876. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6877. ////// {
  6878. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  6879. ////// {
  6880. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6881. ////// }
  6882. ////// }
  6883. #endregion
  6884. string OutSpecialRepairflag = "0";//干补标识
  6885. DataSet outDataSet = null;
  6886. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6887. {
  6888. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  6889. }
  6890. else
  6891. {
  6892. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6893. }
  6894. if (!string.IsNullOrEmpty(errMsg))
  6895. {
  6896. return errMsg;
  6897. }
  6898. if (productionData.ProductionDefects == null || productionData.ProductionDefects.Count == 0)
  6899. {
  6900. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  6901. }
  6902. #endregion
  6903. #region 获得产品分级ID
  6904. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  6905. // 获得产品分级ID
  6906. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  6907. #endregion
  6908. #region 开始节点
  6909. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6910. {
  6911. #region 添加在产产品数据
  6912. InProductionEntity addInProductionEntity = new InProductionEntity();
  6913. addInProductionEntity.ProductionDataID = productionData.ProductionDataID;
  6914. addInProductionEntity.BarCode = productionData.Barcode;
  6915. //流程工序
  6916. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  6917. // 当前工序
  6918. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6919. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  6920. //生产数据ID
  6921. addInProductionEntity.ProductionDataID = productionDataID;
  6922. // 工序模型
  6923. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6924. // 工序类别
  6925. addInProductionEntity.ModelType = procedure.ModelType;
  6926. // 正常坯
  6927. addInProductionEntity.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  6928. #endregion
  6929. // 生产工号
  6930. addInProductionEntity.UserID = productionData.UserID;
  6931. // 执行添加
  6932. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  6933. // 执行失败
  6934. if (!string.IsNullOrEmpty(errMsg))
  6935. {
  6936. return errMsg;
  6937. }
  6938. }
  6939. #endregion
  6940. #region 条码有缺陷
  6941. // 废品标识
  6942. bool scrapFlag = false;
  6943. // 存在缺陷 插入缺陷表
  6944. if (productionData.ProductionDefects != null)
  6945. {
  6946. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6947. {
  6948. #region 保存缺陷
  6949. productionDefect.ProductionDataID = productionDataID;
  6950. productionDefect.BarCode = productionData.Barcode;
  6951. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6952. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6953. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6954. productionDefect.ProcedureID = procedure.ProcedureID;
  6955. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6956. productionDefect.ProcedureName = procedure.ProcedureName;
  6957. productionDefect.UserID = productionData.UserID;
  6958. productionDefect.UserCode = productionData.UserCode;
  6959. productionDefect.UserName = productionData.UserName;
  6960. productionDefect.GoodsID = productionData.GoodsID;
  6961. productionDefect.GoodsCode = productionData.GoodsCode;
  6962. productionDefect.GoodsName = productionData.GoodsName;
  6963. productionDefect.Remarks = productionData.Remarks;
  6964. productionDefect.ScrapResponFlag
  6965. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6966. // 保存缺陷
  6967. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6968. if (!string.IsNullOrEmpty(errMsg))
  6969. {
  6970. return errMsg;
  6971. }
  6972. #endregion
  6973. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  6974. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  6975. {
  6976. scrapFlag = true;
  6977. #region 添加废弃产品 删除在产产品数据
  6978. #region 添加废弃产品
  6979. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6980. #region 属性赋值
  6981. scrapProduct.BarCode = productionData.Barcode;
  6982. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  6983. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6984. {
  6985. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  6986. }
  6987. else
  6988. {
  6989. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6990. }
  6991. scrapProduct.ScrapDate = accountDate;
  6992. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  6993. scrapProduct.Remarks = productionDefect.Remarks;
  6994. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6995. scrapProduct.Auditor = sUserInfo.UserID;
  6996. scrapProduct.AuditlDate = accountDate;
  6997. scrapProduct.AccountDate = accountDate;
  6998. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6999. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7000. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  7001. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7002. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7003. scrapProduct.ScrapType = 1;
  7004. scrapProduct.IsQualityStatistics = 1;
  7005. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  7006. #endregion
  7007. // 保存报废
  7008. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  7009. // 保存失败
  7010. if (!string.IsNullOrEmpty(errMsg))
  7011. {
  7012. return errMsg;
  7013. }
  7014. #endregion
  7015. #region 添加责任工序
  7016. // 不是开始工序时。需要添加责任工序
  7017. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  7018. {
  7019. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  7020. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7021. ResponProcedureEntity responProce = new ResponProcedureEntity();
  7022. #region 属性赋值
  7023. responProce.BarCode = productionData.Barcode;
  7024. responProce.ProductionDataID = productionDataID;
  7025. responProce.ProductionLineID = productionDefect.ProductionLineID;
  7026. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7027. responProce.ProductionLineName = productionDefect.ProductionLineName;
  7028. responProce.ProcedureID = productionDefect.DefectProcedureID;
  7029. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7030. responProce.ProcedureName = productionDefect.DefectProcedureName;
  7031. responProce.UserID = productionDefect.DefectUserID;
  7032. responProce.UserCode = productionDefect.DefectUserCode;
  7033. responProce.UserName = productionDefect.DefectUserName;
  7034. responProce.Remarks = productionDefect.Remarks;
  7035. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7036. #endregion
  7037. // 保存责任工序
  7038. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7039. // 保存失败
  7040. if (!string.IsNullOrEmpty(errMsg))
  7041. {
  7042. return errMsg;
  7043. }
  7044. }
  7045. #endregion
  7046. #region 删除在产产品数据
  7047. InProductionEntity delInProductionEntity = new InProductionEntity();
  7048. delInProductionEntity.BarCode = productionData.Barcode;
  7049. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  7050. // 执行删除 在产数据
  7051. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7052. // 执行失败
  7053. if (!string.IsNullOrEmpty(errMsg))
  7054. {
  7055. return errMsg;
  7056. }
  7057. #endregion
  7058. #endregion
  7059. }
  7060. #endregion
  7061. }
  7062. }
  7063. #endregion
  7064. #region 条码没有报废
  7065. if (!scrapFlag)
  7066. {
  7067. #region 检验出缺陷 并且不是废品 修改在产产品数据
  7068. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7069. // || productionData.DefectFlag == Constant.DefectFlag.Yes.GetHashCode())
  7070. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7071. || procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  7072. || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  7073. {
  7074. #region 修改在产产品数据的当前工序
  7075. InProductionEntity inProductionEntity = new InProductionEntity();
  7076. inProductionEntity.ProductionDataID = Convert.ToInt32(idStr);
  7077. inProductionEntity.BarCode = productionData.Barcode;
  7078. // 当前工序
  7079. inProductionEntity.ProcedureID = procedure.ProcedureID;
  7080. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7081. // 工序模型
  7082. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7083. // 工序类别
  7084. inProductionEntity.ModelType = procedure.ModelType;
  7085. // 生产工号
  7086. inProductionEntity.UserID = productionData.UserID;
  7087. // 缺陷标识
  7088. inProductionEntity.DefectFlag = productionData.DefectFlag;
  7089. // 返工工序ID
  7090. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7091. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7092. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7093. // 执行修改
  7094. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7095. // 执行失败
  7096. if (!string.IsNullOrEmpty(errMsg))
  7097. {
  7098. return errMsg;
  7099. }
  7100. #endregion
  7101. }
  7102. #endregion
  7103. #region 结束工序、没有缺陷 添加成品数据 删除在产产品数据
  7104. //else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7105. // && productionData.DefectFlag == Constant.DefectFlag.No.GetHashCode())
  7106. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7107. && productionData.GoodsLevelTypeID == Constant.GoodsLevelType.NoDefects.GetHashCode())
  7108. {
  7109. #region 添加成品数据 删除在产产品数据
  7110. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7111. finishedProduct.BarCode = productionData.Barcode;
  7112. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  7113. if (!string.IsNullOrEmpty(errMsg))
  7114. {
  7115. return errMsg;
  7116. }
  7117. InProductionEntity delInProductionEntity = new InProductionEntity();
  7118. delInProductionEntity.BarCode = productionData.Barcode;
  7119. // 执行删除 在产数据
  7120. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7121. // 执行失败
  7122. if (!string.IsNullOrEmpty(errMsg))
  7123. {
  7124. return errMsg;
  7125. }
  7126. #endregion
  7127. }
  7128. #endregion
  7129. }
  7130. #endregion
  7131. }
  7132. return errMsg;
  7133. }
  7134. ///// <summary>
  7135. ///// 报废更新产品数据最终状态
  7136. ///// </summary>
  7137. ///// <param name="oracleTrConn">连接对象</param>
  7138. ///// <param name="barcode">产品条码</param>
  7139. ///// <param name="sUserInfo">用记基本信息</param>
  7140. ///// <returns>string</returns>
  7141. ///// <remarks>
  7142. ///// 王鑫 2015.01.07 新建
  7143. ///// </remarks>
  7144. //private static string UpdateProductionDataGoodsEnding(IDBTransaction oracleTrConn, int productionDataID, int? goodsEnding, SUserInfo sUserInfo)
  7145. //{
  7146. // string sql = "update TP_PM_ProductionData set GoodsEnding=:goodsEnding where ProductionDataID = :productionDataID and AccountID=:accountid";
  7147. // OracleParameter[] paras = new OracleParameter[] {
  7148. // new OracleParameter(":goodsEnding",goodsEnding),
  7149. // new OracleParameter(":productionDataID",productionDataID),
  7150. // new OracleParameter(":accountid",sUserInfo.AccountID),
  7151. // };
  7152. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  7153. // // 更新失败
  7154. // if (result <= Constant.INT_IS_ZERO)
  7155. // {
  7156. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7157. // }
  7158. // // 成功返回null
  7159. // return null;
  7160. //}
  7161. /// <summary>
  7162. /// 添加责任工序
  7163. /// </summary>
  7164. /// <param name="oracleTrConn">连接对象</param>
  7165. /// <param name="responProce">责任工序</param>
  7166. /// <param name="productionDefect">缺陷数据</param>
  7167. /// <param name="sUserInfo">用户基本信息</param>
  7168. /// <returns>string</returns>
  7169. private static string AddResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7170. {
  7171. OracleParameter[] oracleParameters = null;
  7172. string sql = null;
  7173. int result = 0;
  7174. // 查询新插入ID
  7175. if (productionDefect.DefectProcedureID != null)
  7176. {
  7177. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  7178. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7179. if (!string.IsNullOrEmpty(idStr))
  7180. {
  7181. responProce.ResponProcedureID = int.Parse(idStr);
  7182. }
  7183. else
  7184. {
  7185. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7186. }
  7187. #region SQL
  7188. sql = "insert into tp_pm_responprocedure"
  7189. + " (ResponProcedureID,"
  7190. + " scrapproductid,"
  7191. + " barcode,"
  7192. + " productiondataid,"
  7193. + " productionlineid,"
  7194. + " productionlinecode,"
  7195. + " productionlinename,"
  7196. + " procedureid,"
  7197. + " procedurecode,"
  7198. + " procedurename,"
  7199. + " userid,"
  7200. + " usercode,"
  7201. + " username,"
  7202. + " remarks,"
  7203. + " accountid,"
  7204. + " createuserid,"
  7205. + " updateuserid)"
  7206. + " values"
  7207. + " ("
  7208. + " :ResponProcedureID,"
  7209. + " :scrapproductid,"
  7210. + " :barcode,"
  7211. + " :productiondataid,"
  7212. + " :productionlineid,"
  7213. + " :productionlinecode,"
  7214. + " :productionlinename,"
  7215. + " :procedureid,"
  7216. + " :procedurecode,"
  7217. + " :procedurename,"
  7218. + " :userid,"
  7219. + " :usercode,"
  7220. + " :username,"
  7221. + " :remarks,"
  7222. + " :accountid,"
  7223. + " :createuserid,"
  7224. + " :updateuserid)";
  7225. #endregion
  7226. #region 参数
  7227. oracleParameters = new OracleParameter[] {
  7228. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  7229. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7230. new OracleParameter(":barcode",responProce.BarCode),
  7231. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  7232. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  7233. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  7234. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  7235. new OracleParameter(":procedureid",responProce.ProcedureID),
  7236. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  7237. new OracleParameter(":procedurename",responProce.ProcedureName),
  7238. new OracleParameter(":userid",responProce.UserID),
  7239. new OracleParameter(":usercode",responProce.UserCode),
  7240. new OracleParameter(":username",responProce.UserName),
  7241. new OracleParameter(":remarks",responProce.Remarks),
  7242. new OracleParameter(":accountid",sUserInfo.AccountID),
  7243. new OracleParameter(":createuserid",sUserInfo.UserID),
  7244. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7245. };
  7246. #endregion
  7247. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7248. // 保存失败
  7249. if (result != Constant.INT_IS_ONE)
  7250. {
  7251. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7252. }
  7253. //// 查询新插入ID
  7254. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  7255. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7256. //if (!string.IsNullOrEmpty(idStr))
  7257. //{
  7258. // responProce.ResponProcedureID = int.Parse(idStr);
  7259. //}
  7260. //else
  7261. //{
  7262. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7263. //}
  7264. }
  7265. #region 插入责任人
  7266. foreach (DefectResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  7267. {
  7268. #region SQL
  7269. sql = "insert into tp_pm_scrapresponsible"
  7270. + " (barcode,"
  7271. + " scrapproductid,"
  7272. + " staffid,"
  7273. + " userid,"
  7274. + " usercode,"
  7275. + " ujobsid,"
  7276. + " sjobsid,"
  7277. + " staffstatus,"
  7278. + " accountid,"
  7279. + " createuserid,"
  7280. + " updateuserid,"
  7281. + " responprocedureid,"
  7282. + " respontype)"
  7283. + " values"
  7284. + " (:barcode,"
  7285. + " :scrapproductid,"
  7286. + " :staffid,"
  7287. + " :userid,"
  7288. + " :usercode,"
  7289. + " :ujobsid,"
  7290. + " :sjobsid,"
  7291. + " :staffstatus,"
  7292. + " :accountid,"
  7293. + " :createuserid,"
  7294. + " :updateuserid,"
  7295. + " :responprocedureid,"
  7296. + " :respontype)";
  7297. #endregion
  7298. #region 参数
  7299. oracleParameters = new OracleParameter[] {
  7300. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7301. new OracleParameter(":barcode",responProce.BarCode),
  7302. new OracleParameter(":staffid",defectResponsible.StaffID),
  7303. new OracleParameter(":userid",defectResponsible.UserID),
  7304. new OracleParameter(":usercode",defectResponsible.UserCode),
  7305. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  7306. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  7307. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  7308. new OracleParameter(":accountid",sUserInfo.AccountID),
  7309. new OracleParameter(":createuserid",sUserInfo.UserID),
  7310. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7311. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  7312. new OracleParameter(":respontype",Constant.ScrapResponType.Procedure.GetHashCode()),
  7313. };
  7314. #endregion
  7315. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7316. // 保存失败
  7317. if (result != Constant.INT_IS_ONE)
  7318. {
  7319. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7320. }
  7321. }
  7322. #endregion
  7323. return null;
  7324. }
  7325. /// <summary>
  7326. /// 保存废弃产品
  7327. /// </summary>
  7328. /// <param name="oracleTrConn">连接对象</param>
  7329. /// <param name="scrapProduct">报废产品</param>
  7330. /// <param name="sUserInfo">用户基本信息</param>
  7331. /// <returns>string</returns>
  7332. private static string AddScrapProductRejectToReject(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7333. {
  7334. #region sql
  7335. string sql = "insert into tp_pm_scrapproduct"
  7336. + " (scrapproductid,barcode,"
  7337. + " productionlineid,"
  7338. + " productionlinecode,"
  7339. + " productionlinename,"
  7340. + " goodsid,"
  7341. + " goodscode,"
  7342. + " goodsname,"
  7343. + " groutingdailyid,"
  7344. + " groutingdailydetailid,"
  7345. + " groutingdate,"
  7346. + " groutinglineid,"
  7347. + " groutinglinecode,"
  7348. + " groutinglinename,"
  7349. + " gmouldtypeid,"
  7350. + " groutinglinedetailid,"
  7351. + " groutingmouldcode,"
  7352. + " mouldcode,"
  7353. + " scrapdate,"
  7354. + " rreason,"
  7355. + " remarks,"
  7356. + " auditstatus,"
  7357. + " auditor,"
  7358. + " auditdate,"
  7359. + " accountdate,"
  7360. + " accountid,"
  7361. + " createuserid,"
  7362. + " updateuserid,"
  7363. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7364. + " auditopinion,"
  7365. + " GroutingUserID,"
  7366. + " GroutingUserCode,"
  7367. + " GroutingNum,"
  7368. + " IsPublicBody,"
  7369. + " IsReFire,"
  7370. + " kilnid,"
  7371. + " kilncode,"
  7372. + " kilnname,"
  7373. + " kilncarid,"
  7374. + " kilncarcode,"
  7375. + " kilncarname,"
  7376. + " kilncarbatchno,"
  7377. + " kilncarposition,"
  7378. + " specialRepairflag,"
  7379. + " logoid,ProductionDataID, "
  7380. + " ProcedureID, "
  7381. + " ProcedureCode, "
  7382. + " ProcedureName, "
  7383. + " ScrapType "
  7384. + ")"
  7385. + " select :scrapproductid,trash.barcode,"
  7386. + " trash.productionlineid,"
  7387. + " trash.productionlinecode,"
  7388. + " trash.productionlinename,"
  7389. + " trash.goodsid,"
  7390. + " trash.goodscode,"
  7391. + " trash.goodsname,"
  7392. + " trash.groutingdailyid,"
  7393. + " trash.groutingdailydetailid,"
  7394. + " trash.groutingdate,"
  7395. + " trash.groutinglineid,"
  7396. + " trash.groutinglinecode,"
  7397. + " trash.groutinglinename,"
  7398. + " trash.gmouldtypeid,"
  7399. + " trash.groutinglinedetailid,"
  7400. + " trash.groutingmouldcode,"
  7401. + " trash.mouldcode,"
  7402. + " :scrapdate,"
  7403. + " :rreason,"
  7404. + " :remarks,"
  7405. + " :auditstatus,"
  7406. + " :auditor,"
  7407. // + " :auditdate,"
  7408. + " sysdate,"
  7409. + " :accountdate,"
  7410. + " trash.accountid,"
  7411. + " :createuserid,"
  7412. + " :updateuserid,"
  7413. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7414. + " :auditopinion,"
  7415. + " trash.GroutingUserID,"
  7416. + " trash.GroutingUserCode,"
  7417. + " trash.GroutingNum,"
  7418. + " trash.IsPublicBody,"
  7419. + " trash.IsReFire,"
  7420. + " trash.kilnid,"
  7421. + " trash.kilncode,"
  7422. + " trash.kilnname,"
  7423. + " trash.kilncarid,"
  7424. + " trash.kilncarcode,"
  7425. + " trash.kilncarname,"
  7426. + " trash.kilncarbatchno,"
  7427. + " trash.kilncarposition,"
  7428. + " trash.specialRepairflag,"
  7429. + " trash.logoid,:ProductionDataID,"
  7430. + " TP_PC_Procedure.ProcedureID, "
  7431. + " TP_PC_Procedure.ProcedureCode, "
  7432. + " TP_PC_Procedure.ProcedureName, "
  7433. + " :ScrapType "
  7434. + " from tp_pm_inproductiontrash trash"
  7435. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7436. + " where trash.barcode = :barcode";
  7437. #endregion
  7438. #region 参数
  7439. OracleParameter[] oracleParameters = null;
  7440. oracleParameters = new OracleParameter[] {
  7441. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7442. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7443. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7444. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7445. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7446. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7447. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7448. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7449. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7450. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7451. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7452. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7453. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7454. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7455. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7456. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7457. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7458. };
  7459. #endregion
  7460. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7461. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  7462. //// 保存失败
  7463. //if (result != Constant.INT_IS_ONE)
  7464. //{
  7465. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7466. //}
  7467. return null;
  7468. }
  7469. /// <summary>
  7470. /// 保存废弃产品
  7471. /// </summary>
  7472. /// <param name="oracleTrConn">连接对象</param>
  7473. /// <param name="scrapProduct">报废产品</param>
  7474. /// <param name="sUserInfo">用户基本信息</param>
  7475. /// <returns>string</returns>
  7476. private static string AddScrapProduct(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7477. {
  7478. #region sql
  7479. string sql = "insert into tp_pm_scrapproduct"
  7480. + " (scrapproductid,barcode,"
  7481. + " productionlineid,"
  7482. + " productionlinecode,"
  7483. + " productionlinename,"
  7484. + " goodsid,"
  7485. + " goodscode,"
  7486. + " goodsname,"
  7487. + " groutingdailyid,"
  7488. + " groutingdailydetailid,"
  7489. + " groutingdate,"
  7490. + " groutinglineid,"
  7491. + " groutinglinecode,"
  7492. + " groutinglinename,"
  7493. + " gmouldtypeid,"
  7494. + " groutinglinedetailid,"
  7495. + " groutingmouldcode,"
  7496. + " mouldcode,"
  7497. + " scrapdate,"
  7498. + " rreason,"
  7499. + " remarks,"
  7500. + " auditstatus,"
  7501. + " auditor,"
  7502. + " auditdate,"
  7503. + " accountdate,"
  7504. + " accountid,"
  7505. + " createuserid,"
  7506. + " updateuserid,"
  7507. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7508. + " auditopinion,"
  7509. + " GroutingUserID,"
  7510. + " GroutingUserCode,"
  7511. + " GroutingNum,"
  7512. + " IsPublicBody,"
  7513. + " IsReFire,"
  7514. + " kilnid,"
  7515. + " kilncode,"
  7516. + " kilnname,"
  7517. + " kilncarid,"
  7518. + " kilncarcode,"
  7519. + " kilncarname,"
  7520. + " kilncarbatchno,"
  7521. + " kilncarposition,"
  7522. + " specialRepairflag,"
  7523. + " logoid,"
  7524. + " ProductionDataID, "
  7525. + " ProcedureID, "
  7526. + " ProcedureCode, "
  7527. + " ProcedureName, "
  7528. + " ScrapType "
  7529. + ")"
  7530. + " select :scrapproductid,barcode,"
  7531. + " InProduction.productionlineid,"
  7532. + " InProduction.productionlinecode,"
  7533. + " InProduction.productionlinename,"
  7534. + " InProduction.goodsid,"
  7535. + " InProduction.goodscode,"
  7536. + " InProduction.goodsname,"
  7537. + " InProduction.groutingdailyid,"
  7538. + " InProduction.groutingdailydetailid,"
  7539. + " InProduction.groutingdate,"
  7540. + " InProduction.groutinglineid,"
  7541. + " InProduction.groutinglinecode,"
  7542. + " InProduction.groutinglinename,"
  7543. + " InProduction.gmouldtypeid,"
  7544. + " InProduction.groutinglinedetailid,"
  7545. + " InProduction.groutingmouldcode,"
  7546. + " InProduction.mouldcode,"
  7547. + " :scrapdate,"
  7548. + " :rreason,"
  7549. + " :remarks,"
  7550. + " :auditstatus,"
  7551. + " :auditor,"
  7552. // + " :auditdate,"
  7553. + " sysdate,"
  7554. + " :accountdate,"
  7555. + " InProduction.accountid,"
  7556. + " :createuserid,"
  7557. + " :updateuserid,"
  7558. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7559. + " :auditopinion,"
  7560. + " InProduction.GroutingUserID,"
  7561. + " InProduction.GroutingUserCode,"
  7562. + " InProduction.GroutingNum,"
  7563. + " InProduction.IsPublicBody,"
  7564. + " InProduction.IsReFire,"
  7565. + " InProduction.kilnid,"
  7566. + " InProduction.kilncode,"
  7567. + " InProduction.kilnname,"
  7568. + " InProduction.kilncarid,"
  7569. + " InProduction.kilncarcode,"
  7570. + " InProduction.kilncarname,"
  7571. + " InProduction.kilncarbatchno,"
  7572. + " InProduction.kilncarposition,"
  7573. + " InProduction.specialRepairflag,"
  7574. + " InProduction.logoid,";
  7575. if (scrapProduct.IsQualityStatistics == null)
  7576. {
  7577. sql += " InProduction.ProductionDataID,";
  7578. }
  7579. else
  7580. {
  7581. sql += " :ProductionDataID,";
  7582. }
  7583. sql += " TP_PC_Procedure.ProcedureID, "
  7584. + " TP_PC_Procedure.ProcedureCode, "
  7585. + " TP_PC_Procedure.ProcedureName, "
  7586. + " :ScrapType"
  7587. + " from TP_PM_InProduction InProduction"
  7588. + " left join TP_PC_Procedure on InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7589. + " where InProduction.barcode = :barcode";
  7590. #endregion
  7591. #region 参数
  7592. OracleParameter[] oracleParameters = null;
  7593. if (scrapProduct.IsQualityStatistics == null)
  7594. {
  7595. oracleParameters = new OracleParameter[] {
  7596. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7597. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7598. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7599. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7600. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7601. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7602. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7603. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7604. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7605. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7606. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7607. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7608. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7609. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7610. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7611. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7612. };
  7613. }
  7614. else
  7615. {
  7616. oracleParameters = new OracleParameter[] {
  7617. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7618. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  7619. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  7620. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  7621. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  7622. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  7623. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  7624. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  7625. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7626. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  7627. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  7628. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  7629. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  7630. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  7631. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  7632. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  7633. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  7634. };
  7635. }
  7636. #endregion
  7637. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7638. if (result == 0)
  7639. {
  7640. sql = "insert into tp_pm_scrapproduct"
  7641. + " (scrapproductid,barcode,"
  7642. + " productionlineid,"
  7643. + " productionlinecode,"
  7644. + " productionlinename,"
  7645. + " goodsid,"
  7646. + " goodscode,"
  7647. + " goodsname,"
  7648. + " groutingdailyid,"
  7649. + " groutingdailydetailid,"
  7650. + " groutingdate,"
  7651. + " groutinglineid,"
  7652. + " groutinglinecode,"
  7653. + " groutinglinename,"
  7654. + " gmouldtypeid,"
  7655. + " groutinglinedetailid,"
  7656. + " groutingmouldcode,"
  7657. + " mouldcode,"
  7658. + " scrapdate,"
  7659. + " rreason,"
  7660. + " remarks,"
  7661. + " auditstatus,"
  7662. + " auditor,"
  7663. + " auditdate,"
  7664. + " accountdate,"
  7665. + " accountid,"
  7666. + " createuserid,"
  7667. + " updateuserid,"
  7668. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7669. + " auditopinion,"
  7670. + " GroutingUserID,"
  7671. + " GroutingUserCode,"
  7672. + " GroutingNum,"
  7673. + " IsPublicBody,"
  7674. + " IsReFire,"
  7675. + " kilnid,"
  7676. + " kilncode,"
  7677. + " kilnname,"
  7678. + " kilncarid,"
  7679. + " kilncarcode,"
  7680. + " kilncarname,"
  7681. + " kilncarbatchno,"
  7682. + " kilncarposition,"
  7683. + " specialRepairflag,"
  7684. + " logoid,"
  7685. + " ProductionDataID,"
  7686. + " ProcedureID, "
  7687. + " ProcedureCode, "
  7688. + " ProcedureName, "
  7689. + " ScrapType "
  7690. + ")"
  7691. + " select :scrapproductid,trash.barcode,"
  7692. + " trash.productionlineid,"
  7693. + " trash.productionlinecode,"
  7694. + " trash.productionlinename,"
  7695. + " trash.goodsid,"
  7696. + " trash.goodscode,"
  7697. + " trash.goodsname,"
  7698. + " trash.groutingdailyid,"
  7699. + " trash.groutingdailydetailid,"
  7700. + " trash.groutingdate,"
  7701. + " trash.groutinglineid,"
  7702. + " trash.groutinglinecode,"
  7703. + " trash.groutinglinename,"
  7704. + " trash.gmouldtypeid,"
  7705. + " trash.groutinglinedetailid,"
  7706. + " trash.groutingmouldcode,"
  7707. + " trash.mouldcode,"
  7708. + " :scrapdate,"
  7709. + " :rreason,"
  7710. + " :remarks,"
  7711. + " :auditstatus,"
  7712. + " :auditor,"
  7713. //+ " :auditdate,"
  7714. + " sysdate,"
  7715. + " :accountdate,"
  7716. + " trash.accountid,"
  7717. + " :createuserid,"
  7718. + " :updateuserid,"
  7719. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7720. + " :auditopinion,"
  7721. + " trash.GroutingUserID,"
  7722. + " trash.GroutingUserCode,"
  7723. + " trash.GroutingNum,"
  7724. + " trash.IsPublicBody,"
  7725. + " trash.IsReFire,"
  7726. + " trash.kilnid,"
  7727. + " trash.kilncode,"
  7728. + " trash.kilnname,"
  7729. + " trash.kilncarid,"
  7730. + " trash.kilncarcode,"
  7731. + " trash.kilncarname,"
  7732. + " trash.kilncarbatchno,"
  7733. + " trash.kilncarposition,"
  7734. + " trash.specialRepairflag,"
  7735. + " trash.logoid,";
  7736. if (scrapProduct.IsQualityStatistics == null)
  7737. {
  7738. sql += " trash.ProductionDataID,";
  7739. }
  7740. else
  7741. {
  7742. sql += " :ProductionDataID,";
  7743. }
  7744. sql += //" trash.ProductionDataID," +
  7745. " TP_PC_Procedure.ProcedureID, "
  7746. + " TP_PC_Procedure.ProcedureCode, "
  7747. + " TP_PC_Procedure.ProcedureName, "
  7748. + " :ScrapType "
  7749. + " from TP_PM_InProductionTrash trash"
  7750. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7751. + " where trash.barcode = :barcode";
  7752. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7753. }
  7754. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  7755. //// 保存失败
  7756. //if (result != Constant.INT_IS_ONE)
  7757. //{
  7758. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7759. //}
  7760. return null;
  7761. }
  7762. /// <summary>
  7763. /// 保存缺陷
  7764. /// </summary>
  7765. /// <param name="oracleTrConn">连接对象</param>
  7766. /// <param name="productionDefect">缺陷数据</param>
  7767. /// <param name="sUserInfo">用户基本信息</param>
  7768. /// <returns>string</returns>
  7769. private static string AddDefect(IDBTransaction oracleTrConn, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7770. {
  7771. // 查询新插入的生产数据ID
  7772. string sql = "select SEQ_PM_Defect_DefectID.nextval from dual";
  7773. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7774. int productionDefectID = 0;
  7775. if (!string.IsNullOrEmpty(idStr))
  7776. {
  7777. productionDefectID = int.Parse(idStr);
  7778. }
  7779. else
  7780. {
  7781. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7782. }
  7783. #region SQL
  7784. sql = "insert into tp_pm_defect"
  7785. + " ( ProductionDefectID,"
  7786. + " productiondataid,"
  7787. + " barcode,"
  7788. + " productionlineid,"
  7789. + " productionlinecode,"
  7790. + " productionlinename,"
  7791. + " procedureid,"
  7792. + " procedurecode,"
  7793. + " procedurename,"
  7794. + " userid,"
  7795. + " usercode,"
  7796. + " username,"
  7797. + " goodsid,"
  7798. + " goodscode,"
  7799. + " goodsname,"
  7800. + " defectid,"
  7801. + " defectcode,"
  7802. + " defectname,"
  7803. + " defectpositionid,"
  7804. + " defectpositioncode,"
  7805. + " defectpositionname,"
  7806. + " scrapResponFlag,"
  7807. + " defectproductiondataid,"
  7808. + " defectprocedureid,"
  7809. + " defectprocedurecode,"
  7810. + " defectprocedurename,"
  7811. + " defectuserid,"
  7812. + " defectusercode,"
  7813. + " defectusername,"
  7814. + " defectjobs,"
  7815. + " remarks,"
  7816. + " accountid,"
  7817. + " createuserid,"
  7818. + " defectfine,"
  7819. + " misseduserid,"
  7820. + " missedusercode,"
  7821. + " missedusername,"
  7822. + " updateuserid,SpecialDefect,DefectDeductionNum,CheckTime)"
  7823. + " values"
  7824. + " ("
  7825. + " :ProductionDefectID,"
  7826. + " :productiondataid,"
  7827. + " :barcode,"
  7828. + " :productionlineid,"
  7829. + " :productionlinecode,"
  7830. + " :productionlinename,"
  7831. + " :procedureid,"
  7832. + " :procedurecode,"
  7833. + " :procedurename,"
  7834. + " :userid,"
  7835. + " :usercode,"
  7836. + " :username,"
  7837. + " :goodsid,"
  7838. + " :goodscode,"
  7839. + " :goodsname,"
  7840. + " :defectid,"
  7841. + " :defectcode,"
  7842. + " :defectname,"
  7843. + " :defectpositionid,"
  7844. + " :defectpositioncode,"
  7845. + " :defectpositionname,"
  7846. + " :scrapResponFlag,"
  7847. + " :defectproductiondataid,"
  7848. + " :defectprocedureid,"
  7849. + " :defectprocedurecode,"
  7850. + " :defectprocedurename,"
  7851. + " :defectuserid,"
  7852. + " :defectusercode,"
  7853. + " :defectusername,"
  7854. + " :defectjobs,"
  7855. + " :remarks,"
  7856. + " :accountid,"
  7857. + " :createuserid,"
  7858. + " :defectfine,"
  7859. + " :misseduserid,"
  7860. + " :missedusercode,"
  7861. + " :missedusername,"
  7862. + " :updateuserid,:SpecialDefect,:DefectDeductionNum,:CheckTime)";
  7863. #endregion
  7864. #region 参数
  7865. OracleParameter[] oracleParameters = null;
  7866. if (productionDefect.IsPDA == null)
  7867. {
  7868. oracleParameters = new OracleParameter[] {
  7869. new OracleParameter(":ProductionDefectID",productionDefectID),
  7870. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  7871. new OracleParameter(":barcode",productionDefect.BarCode),
  7872. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  7873. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  7874. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  7875. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  7876. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  7877. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  7878. new OracleParameter(":userid",productionDefect.UserID),
  7879. new OracleParameter(":usercode",productionDefect.UserCode),
  7880. new OracleParameter(":username",productionDefect.UserName),
  7881. new OracleParameter(":goodsid",productionDefect.GoodsID),
  7882. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  7883. new OracleParameter(":goodsname",productionDefect.GoodsName),
  7884. new OracleParameter(":defectid",productionDefect.DefectID),
  7885. new OracleParameter(":defectcode",productionDefect.DefectCode),
  7886. new OracleParameter(":defectname",productionDefect.DefectName),
  7887. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  7888. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  7889. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  7890. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  7891. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  7892. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  7893. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  7894. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  7895. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  7896. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  7897. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  7898. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  7899. new OracleParameter(":remarks",productionDefect.Remarks),
  7900. new OracleParameter(":accountid",sUserInfo.AccountID),
  7901. new OracleParameter(":createuserid",sUserInfo.UserID),
  7902. new OracleParameter(":defectfine",productionDefect.DefectFine),
  7903. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  7904. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  7905. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  7906. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7907. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  7908. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  7909. new OracleParameter(":CheckTime",productionDefect.CheckTime.ToString()==string.Empty?null:productionDefect.CheckTime),
  7910. };
  7911. }
  7912. else
  7913. {
  7914. DateTime? pdaCheckTime = null;
  7915. if (productionDefect.PDACheckTime != null)
  7916. {
  7917. if (productionDefect.PDACheckTime.ToString() != string.Empty)
  7918. {
  7919. pdaCheckTime = Convert.ToDateTime(productionDefect.PDACheckTime);
  7920. }
  7921. }
  7922. oracleParameters = new OracleParameter[] {
  7923. new OracleParameter(":ProductionDefectID",productionDefectID),
  7924. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  7925. new OracleParameter(":barcode",productionDefect.BarCode),
  7926. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  7927. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  7928. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  7929. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  7930. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  7931. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  7932. new OracleParameter(":userid",productionDefect.UserID),
  7933. new OracleParameter(":usercode",productionDefect.UserCode),
  7934. new OracleParameter(":username",productionDefect.UserName),
  7935. new OracleParameter(":goodsid",productionDefect.GoodsID),
  7936. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  7937. new OracleParameter(":goodsname",productionDefect.GoodsName),
  7938. new OracleParameter(":defectid",productionDefect.DefectID),
  7939. new OracleParameter(":defectcode",productionDefect.DefectCode),
  7940. new OracleParameter(":defectname",productionDefect.DefectName),
  7941. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  7942. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  7943. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  7944. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  7945. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  7946. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  7947. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  7948. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  7949. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  7950. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  7951. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  7952. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  7953. new OracleParameter(":remarks",productionDefect.Remarks),
  7954. new OracleParameter(":accountid",sUserInfo.AccountID),
  7955. new OracleParameter(":createuserid",sUserInfo.UserID),
  7956. new OracleParameter(":defectfine",productionDefect.DefectFine),
  7957. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  7958. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  7959. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  7960. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7961. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  7962. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  7963. new OracleParameter(":CheckTime",pdaCheckTime),
  7964. };
  7965. }
  7966. #endregion
  7967. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7968. // 保存失败
  7969. if (result != Constant.INT_IS_ONE)
  7970. {
  7971. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7972. }
  7973. //// 查询新插入的生产数据ID
  7974. //sql = "select SEQ_PM_Defect_DefectID.Currval from dual";
  7975. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7976. //int productionDefectID = 0;
  7977. //if (!string.IsNullOrEmpty(idStr))
  7978. //{
  7979. // productionDefectID = int.Parse(idStr);
  7980. //}
  7981. //else
  7982. //{
  7983. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7984. //}
  7985. #region 插入生产缺陷责任者
  7986. if (productionDefect.DefectResponsibles != null)
  7987. {
  7988. foreach (DefectResponsibleEntity DefectResponsible in productionDefect.DefectResponsibles)
  7989. {
  7990. #region SQL
  7991. sql = "insert into tp_pm_defectresponsible"
  7992. + " (productiondefectid,"
  7993. + " staffid,"
  7994. + " userid,"
  7995. + " usercode,"
  7996. + " Ujobsid,"
  7997. + " SJobsID,"
  7998. + " staffstatus,"
  7999. + " accountid,"
  8000. + " createuserid,"
  8001. + " updateuserid)"
  8002. + " values"
  8003. + " (:productiondefectid,"
  8004. + " :staffid,"
  8005. + " :userid,"
  8006. + " :usercode,"
  8007. + " :ujobsid,"
  8008. + " :sjobsid,"
  8009. + " :staffstatus,"
  8010. + " :accountid,"
  8011. + " :createuserid,"
  8012. + " :updateuserid)";
  8013. #endregion
  8014. #region 参数
  8015. oracleParameters = new OracleParameter[] {
  8016. new OracleParameter(":productiondefectid",productionDefectID),
  8017. new OracleParameter(":staffid",DefectResponsible.StaffID),
  8018. new OracleParameter(":userid",DefectResponsible.UserID),
  8019. new OracleParameter(":usercode",DefectResponsible.UserCode),
  8020. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  8021. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  8022. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  8023. new OracleParameter(":accountid",sUserInfo.AccountID),
  8024. new OracleParameter(":createuserid",sUserInfo.UserID),
  8025. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8026. };
  8027. #endregion
  8028. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8029. // 保存失败
  8030. if (result != Constant.INT_IS_ONE)
  8031. {
  8032. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8033. }
  8034. }
  8035. }
  8036. #endregion
  8037. #region 插入生产漏检缺陷责任者
  8038. if (productionDefect.DefectMissedResponsibles != null)
  8039. {
  8040. foreach (DefectMissedResponsibleEntity DefectMissedResponsible in productionDefect.DefectMissedResponsibles)
  8041. {
  8042. #region SQL
  8043. sql = "insert into TP_PM_DefectMissedResponsible"
  8044. + " (productiondefectid,"
  8045. + " staffid,"
  8046. + " userid,"
  8047. + " usercode,"
  8048. + " Ujobsid,"
  8049. + " SJobsID,"
  8050. + " staffstatus,"
  8051. + " accountid,"
  8052. + " createuserid,"
  8053. + " updateuserid)"
  8054. + " values"
  8055. + " (:productiondefectid,"
  8056. + " :staffid,"
  8057. + " :userid,"
  8058. + " :usercode,"
  8059. + " :ujobsid,"
  8060. + " :sjobsid,"
  8061. + " :staffstatus,"
  8062. + " :accountid,"
  8063. + " :createuserid,"
  8064. + " :updateuserid)";
  8065. #endregion
  8066. #region 参数
  8067. oracleParameters = new OracleParameter[] {
  8068. new OracleParameter(":productiondefectid",productionDefectID),
  8069. new OracleParameter(":staffid",DefectMissedResponsible.StaffID),
  8070. new OracleParameter(":userid",DefectMissedResponsible.UserID),
  8071. new OracleParameter(":usercode",DefectMissedResponsible.UserCode),
  8072. new OracleParameter(":ujobsid",DefectMissedResponsible.UJobsID),
  8073. new OracleParameter(":sjobsid",DefectMissedResponsible.SJobsID),
  8074. new OracleParameter(":staffstatus",DefectMissedResponsible.StaffStatus),
  8075. new OracleParameter(":accountid",sUserInfo.AccountID),
  8076. new OracleParameter(":createuserid",sUserInfo.UserID),
  8077. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8078. };
  8079. #endregion
  8080. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8081. // 保存失败
  8082. if (result != Constant.INT_IS_ONE)
  8083. {
  8084. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8085. }
  8086. }
  8087. }
  8088. #endregion
  8089. #region 添加图片
  8090. if (productionDefect.DefectImages != null)
  8091. {
  8092. DateTime upTime = DateTime.Now;
  8093. foreach (DefectImageEntity defectImage in productionDefect.DefectImages)
  8094. {
  8095. // 图片路径为空。上传图片返回路径
  8096. if (string.IsNullOrEmpty(defectImage.ImagePath))
  8097. {
  8098. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8099. .UpLoadImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8100. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8101. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8102. }
  8103. else
  8104. {
  8105. // 安卓端上传的图片
  8106. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic
  8107. .MoveImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8108. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8109. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8110. }
  8111. #region 保存图片
  8112. sql = "insert into tp_pm_defectimage"
  8113. + " ("
  8114. + " productiondefectid,"
  8115. + " barcode,"
  8116. + " thumbnailpath,"
  8117. + " imagepath,"
  8118. + " accountid,"
  8119. + " createuserid,"
  8120. + " updateuserid)"
  8121. + " values"
  8122. + " ("
  8123. + " :productiondefectid,"
  8124. + " :barcode,"
  8125. + " :thumbnailpath,"
  8126. + " :imagepath,"
  8127. + " :accountid,"
  8128. + " :createuserid,"
  8129. + " :updateuserid)";
  8130. oracleParameters = new OracleParameter[] {
  8131. new OracleParameter(":productiondefectid",productionDefectID),
  8132. new OracleParameter(":barcode",productionDefect.BarCode),
  8133. new OracleParameter(":thumbnailpath",defectImage.ThumbnailPath),
  8134. new OracleParameter(":imagepath",defectImage.ImagePath),
  8135. new OracleParameter(":accountid",sUserInfo.AccountID),
  8136. new OracleParameter(":createuserid",sUserInfo.UserID),
  8137. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8138. };
  8139. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8140. // 保存失败
  8141. if (result != Constant.INT_IS_ONE)
  8142. {
  8143. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8144. }
  8145. #endregion
  8146. }
  8147. }
  8148. #endregion
  8149. // 保存成功返回null
  8150. return null;
  8151. }
  8152. #endregion
  8153. #region 进度考核奖惩
  8154. /// <summary>
  8155. /// 根据传入的实体保存 进度考核奖惩记录
  8156. /// </summary>
  8157. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8158. /// <param name="sUserInfo">用户基本信息</param>
  8159. /// <param name="pStatus">新增还是编辑枚举</param>
  8160. /// <returns>PMResultEntity操作结果状态信息</returns>
  8161. public static PMResultEntity SaveStaffProgressRAPInfo(PMProgressRAPEntity pProgressRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  8162. {
  8163. PMResultEntity resultEnity = new PMResultEntity();
  8164. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8165. try
  8166. {
  8167. if (pProgressRAPEntity == null)
  8168. {
  8169. resultEnity.OperateStatus = 0;
  8170. return resultEnity;
  8171. }
  8172. oracleTrConn.Connect();
  8173. if (pStatus == WCFConstant.FormMode.Add)
  8174. {
  8175. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.nextval from dual");
  8176. #region 新建时插入数据
  8177. string strSql1 = "Insert Into TP_PM_ProgressRAP (RAPID,"
  8178. + "STAFFID"
  8179. + ",RAPTYPE"
  8180. + ",REASON"
  8181. + ",RAPDATE"
  8182. + ",RAPAMOUNT"
  8183. + ",REMARKS"
  8184. + ",AUDITSTATUS"
  8185. + ",ACCOUNTID"
  8186. + ",CREATEUSERID"
  8187. + ",UPDATEUSERID)"
  8188. + " Values ("
  8189. + ":RAPID"
  8190. + ",:pSTAFFID"
  8191. + ",:pRAPTYPE"
  8192. + ",:pREASON"
  8193. + ",:pRAPDATE"
  8194. + ",:pRAPAMOUNT"
  8195. + ",:pREMARKS"
  8196. + ",:pAUDITSTATUS"
  8197. + ",:pACCOUNTID"
  8198. + ",:pCREATEUSERID"
  8199. + ",:pUPDATEUSERID"
  8200. + ")";
  8201. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8202. {
  8203. new OracleParameter(":RAPID", OracleDbType.Int32, Convert.ToInt32(strSeq) , ParameterDirection.Input),
  8204. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8205. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8206. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8207. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8208. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8209. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8210. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
  8211. new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8212. new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8213. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8214. };
  8215. #endregion
  8216. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
  8217. //string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.Currval from dual");
  8218. resultEnity.OperateKey = Convert.ToInt32(strSeq);
  8219. }
  8220. else
  8221. {
  8222. #region 判断数据是否可以编辑
  8223. string strSlq2 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8224. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8225. {
  8226. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8227. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8228. };
  8229. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
  8230. if (string.IsNullOrEmpty(strAuditStatus))
  8231. {
  8232. oracleTrConn.Rollback();
  8233. oracleTrConn.Disconnect();
  8234. resultEnity.OperateStatus = -2;
  8235. return resultEnity;
  8236. }
  8237. if (!"0".Equals(strAuditStatus))
  8238. {
  8239. //不是待审批状态
  8240. oracleTrConn.Rollback();
  8241. oracleTrConn.Disconnect();
  8242. resultEnity.OperateStatus = -1;
  8243. return resultEnity;
  8244. }
  8245. #endregion
  8246. #region 编辑时更新数据
  8247. string strSql3 = "Update TP_PM_ProgressRAP Set "
  8248. + "RAPTYPE = :pRAPTYPE"
  8249. + ",REASON = :pREASON"
  8250. + ",RAPDATE = :pRAPDATE"
  8251. + ",RAPAMOUNT = :pRAPAMOUNT"
  8252. + ",REMARKS = :pREMARKS"
  8253. + ",UPDATEUSERID = :pUPDATEUSERID"
  8254. + " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
  8255. OracleParameter[] parmetersSql3 = new OracleParameter[]
  8256. {
  8257. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8258. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8259. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8260. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8261. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8262. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8263. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8264. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8265. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8266. };
  8267. #endregion
  8268. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  8269. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8270. }
  8271. oracleTrConn.Commit();
  8272. oracleTrConn.Disconnect();
  8273. return resultEnity;
  8274. }
  8275. catch (Exception ex)
  8276. {
  8277. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8278. {
  8279. oracleTrConn.Rollback();
  8280. oracleTrConn.Disconnect();
  8281. }
  8282. throw ex;
  8283. }
  8284. finally
  8285. {
  8286. if (oracleTrConn.ConnState == ConnectionState.Open)
  8287. {
  8288. oracleTrConn.Disconnect();
  8289. }
  8290. }
  8291. }
  8292. /// <summary>
  8293. /// 进度考核奖惩审批
  8294. /// </summary>
  8295. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8296. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  8297. /// <param name="sUserInfo">用户基本信息</param>
  8298. /// <returns>PMResultEntity操作结果状态信息</returns>
  8299. public static PMResultEntity SaveStaffProgressRAPApprovalInfo(PMProgressRAPEntity pProgressRAPEntity, bool pState, SUserInfo sUserInfo)
  8300. {
  8301. PMResultEntity resultEnity = new PMResultEntity();
  8302. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8303. try
  8304. {
  8305. if (pProgressRAPEntity == null)
  8306. {
  8307. resultEnity.OperateStatus = 0;
  8308. return resultEnity;
  8309. }
  8310. oracleTrConn.Connect();
  8311. #region 判断数据是否可以编辑
  8312. string strSlq1 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8313. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8314. {
  8315. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8316. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8317. };
  8318. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
  8319. if (string.IsNullOrEmpty(strAuditStatus))
  8320. {
  8321. oracleTrConn.Rollback();
  8322. oracleTrConn.Disconnect();
  8323. resultEnity.OperateStatus = -2;
  8324. return resultEnity;
  8325. }
  8326. if (!"0".Equals(strAuditStatus))
  8327. {
  8328. //不是待审批状态
  8329. oracleTrConn.Rollback();
  8330. oracleTrConn.Disconnect();
  8331. resultEnity.OperateStatus = -1;
  8332. return resultEnity;
  8333. }
  8334. #endregion
  8335. #region 更新审批数据
  8336. int intAuditStatus = 2; //2:审核未通过
  8337. if (pState)
  8338. {
  8339. intAuditStatus = 1; //1:审核通过;
  8340. }
  8341. string strSql2 = "Update TP_PM_ProgressRAP Set "
  8342. + "AUDITSTATUS = :pAUDITSTATUS"
  8343. + ",AUDITOR = :pAUDITOR"
  8344. + ",AuditlDate = sysdate"
  8345. + ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
  8346. + ",UPDATEUSERID = :pUPDATEUSERID"
  8347. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8348. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8349. {
  8350. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
  8351. new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8352. new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8353. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8354. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8355. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8356. };
  8357. #endregion
  8358. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  8359. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8360. oracleTrConn.Commit();
  8361. oracleTrConn.Disconnect();
  8362. return resultEnity;
  8363. }
  8364. catch (Exception ex)
  8365. {
  8366. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8367. {
  8368. oracleTrConn.Rollback();
  8369. oracleTrConn.Disconnect();
  8370. }
  8371. throw ex;
  8372. }
  8373. finally
  8374. {
  8375. if (oracleTrConn.ConnState == ConnectionState.Open)
  8376. {
  8377. oracleTrConn.Disconnect();
  8378. }
  8379. }
  8380. }
  8381. /// <summary>
  8382. /// 设置进度考核奖惩停用
  8383. /// </summary>
  8384. /// <param name="pRAPID">进度考核奖惩编号</param>
  8385. /// <param name="sUserInfo">用户基本信息</param>
  8386. /// <returns>PMResultEntity操作结果状态信息</returns>
  8387. public static PMResultEntity SetStaffProgressRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
  8388. {
  8389. PMResultEntity resultEnity = new PMResultEntity();
  8390. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8391. try
  8392. {
  8393. oracleTrConn.Connect();
  8394. string sql = "Select max(SettlementFlag) From TP_PM_ProgressRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
  8395. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
  8396. if (!string.IsNullOrEmpty(strSettlementFlag))
  8397. {
  8398. if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
  8399. {
  8400. oracleTrConn.Rollback();
  8401. oracleTrConn.Disconnect();
  8402. resultEnity.OperateStatus = -3;
  8403. return resultEnity;
  8404. }
  8405. string sqlString = "Update TP_PM_ProgressRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
  8406. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8407. OracleParameter[] parmetersSql = new OracleParameter[]
  8408. {
  8409. new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  8410. new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
  8411. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8412. };
  8413. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
  8414. oracleTrConn.Commit();
  8415. oracleTrConn.Disconnect();
  8416. return resultEnity;
  8417. }
  8418. else
  8419. {
  8420. oracleTrConn.Rollback();
  8421. oracleTrConn.Disconnect();
  8422. resultEnity.OperateStatus = -2;
  8423. return resultEnity;
  8424. }
  8425. }
  8426. catch (Exception ex)
  8427. {
  8428. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8429. {
  8430. oracleTrConn.Rollback();
  8431. oracleTrConn.Disconnect();
  8432. }
  8433. throw ex;
  8434. }
  8435. finally
  8436. {
  8437. if (oracleTrConn.ConnState == ConnectionState.Open)
  8438. {
  8439. oracleTrConn.Disconnect();
  8440. }
  8441. }
  8442. }
  8443. #endregion
  8444. #endregion
  8445. #region 私有方法
  8446. /// <summary>
  8447. /// 将窑车号下的条码转换成Table
  8448. /// </summary>
  8449. /// <param name="oracleTrConn">数据连接</param>
  8450. /// <param name="productionTable">手机传入的Table</param>
  8451. /// <param name="sUserInfo">用户基本信息</param>
  8452. /// <returns>DataTable</returns>
  8453. private static DataTable CarNoInfoConvertToTable(IDBTransaction oracleTrConn, DataTable productionTable, SUserInfo sUserInfo)
  8454. {
  8455. if (productionTable != null
  8456. && productionTable.Rows.Count > Constant.INT_IS_ZERO)
  8457. {
  8458. DataRow row = productionTable.Rows[Constant.INT_IS_ZERO];
  8459. string sql = "select carGoods.Barcode,"
  8460. + " carGoods.KilnCarID,"
  8461. + " car.KilncarCode,"
  8462. + " car.KilncarName,"
  8463. + " kiln.kilnid,"
  8464. + " kiln.kilnCode,"
  8465. + " kiln.kilnName,"
  8466. + " carGoods.Kilncarposition,"
  8467. + " carGoods.KilnCarBatchNo,"
  8468. + " carGoods.GoodsID,"
  8469. + " goods.GoodsCode,"
  8470. + " goods.GoodsName,"
  8471. + " :userID as UserID,"
  8472. + " :userCode as UserCode,"
  8473. + " :userName as UserName,"
  8474. + " :Remarks as Remarks"
  8475. + " from TP_PM_KilnCarGoods carGoods"
  8476. + " inner join TP_MST_KilnCar car on car.KilnCarID = carGoods.KilnCarID"
  8477. + " inner join TP_MST_Kiln kiln on kiln.KilnID = car.KilnID"
  8478. + " inner join TP_MST_Goods goods on goods.goodsid = carGoods.GoodsID"
  8479. + " where car.kilncarcode = :kilncarcode and carGoods.AccountID = :accountID";
  8480. OracleParameter[] oracleParameters = new OracleParameter[] {
  8481. new OracleParameter(":userID",row["UserID"].ToString()),
  8482. new OracleParameter(":userCode",row["UserCode"].ToString()),
  8483. new OracleParameter(":userName",row["UserName"].ToString()),
  8484. new OracleParameter(":kilncarcode",row["KilnCarCode"].ToString()),
  8485. new OracleParameter(":accountID",sUserInfo.AccountID),
  8486. new OracleParameter(":Remarks",row["Remarks"].ToString()),
  8487. };
  8488. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  8489. if (ds != null
  8490. && ds.Tables.Count > Constant.INT_IS_ZERO
  8491. && ds.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  8492. {
  8493. return ds.Tables[0];
  8494. }
  8495. return productionTable;
  8496. }
  8497. return productionTable;
  8498. }
  8499. #endregion
  8500. #region PDA端保存条码
  8501. /// <summary>
  8502. /// 添加成品编辑
  8503. /// </summary>
  8504. /// <param name="oracleTrConn">数据连接</param>
  8505. /// <param name="procedure">工序对象</param>
  8506. /// <param name="productionDataEntitys">生产数据集</param>
  8507. /// <param name="sUserInfo">用户基本信息</param>
  8508. /// <returns>string</returns>
  8509. private static string AddFinishCheckPDA(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  8510. {
  8511. string errMsg = "";
  8512. // 获得账务日期
  8513. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  8514. // 本批采集的批次号
  8515. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  8516. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  8517. foreach (ProductionDataEntity productionData in productionDataEntitys)
  8518. {
  8519. bool RejectToReject = false;
  8520. if (string.IsNullOrEmpty(productionData.Barcode))
  8521. {
  8522. throw new Exception("传入的条码号为空");
  8523. }
  8524. int goodsID = Constant.INT_IS_ZERO;
  8525. string goodsCode = string.Empty;
  8526. string goodsName = string.Empty;
  8527. // 注浆者工号
  8528. string groutingUserCode = string.Empty;
  8529. // 次品标识
  8530. bool substandardFlag = false;
  8531. #region 校验条码有效性
  8532. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  8533. if (!string.IsNullOrEmpty(errMsg))
  8534. {
  8535. // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  8536. //if (productionData.ProductionDataID == 0)
  8537. if (!errMsg.Contains("次品"))
  8538. return errMsg;
  8539. }
  8540. #endregion
  8541. #region 修改条码
  8542. if (productionData.ProductionDataID > 0) //表示编辑条码
  8543. {
  8544. #region 验证改判有效期
  8545. // 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  8546. string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  8547. DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  8548. // 参数验证用服务端当前设置
  8549. sqlString = "SELECT sst.settingvalue\n" +
  8550. " FROM tp_mst_systemsetting sst\n" +
  8551. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  8552. " AND sst.settingcode = 'S_PM_009'";
  8553. string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  8554. int days = 0;
  8555. int pDays = 0;
  8556. if (int.TryParse(strValue, out pDays))
  8557. {
  8558. days = pDays;
  8559. }
  8560. if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  8561. {
  8562. return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  8563. }
  8564. #endregion
  8565. //
  8566. string sqlOPTimeStamp = "";
  8567. OracleParameter[] parmetersSql = null;
  8568. #region 验证在产时间戳
  8569. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  8570. {
  8571. sqlOPTimeStamp = @"select
  8572. 1
  8573. from TP_PM_InProduction
  8574. where
  8575. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  8576. union
  8577. select
  8578. 1
  8579. from Tp_Pm_Inproductiontrash
  8580. where
  8581. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  8582. parmetersSql = new OracleParameter[]
  8583. {
  8584. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, productionData.OPTimeStamp, ParameterDirection.Input),
  8585. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8586. };
  8587. }
  8588. else
  8589. {
  8590. sqlOPTimeStamp = @"select
  8591. 1
  8592. from TP_PM_InProduction
  8593. where
  8594. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  8595. union
  8596. select
  8597. 1
  8598. from Tp_Pm_Inproductiontrash
  8599. where
  8600. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  8601. parmetersSql = new OracleParameter[]
  8602. {
  8603. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  8604. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8605. };
  8606. }
  8607. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  8608. if (returnDataset != null
  8609. && returnDataset.Tables[0].Rows.Count == 0)
  8610. {
  8611. return "数据已经被修改,请重新进行编辑";
  8612. }
  8613. #endregion
  8614. //如果原来是次品
  8615. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode())
  8616. {
  8617. //改为次品
  8618. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode())
  8619. {
  8620. // 删除生产数据及相关表与报损表
  8621. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8622. if (!string.IsNullOrEmpty(errMsg))
  8623. {
  8624. return errMsg;
  8625. }
  8626. RejectToReject = true;
  8627. } //改为不是次品
  8628. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode())
  8629. {
  8630. // 删除生产数据及相关表与报损表
  8631. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8632. if (!string.IsNullOrEmpty(errMsg))
  8633. {
  8634. return errMsg;
  8635. }
  8636. }
  8637. }
  8638. else
  8639. {
  8640. // 原来产品分级不是次品
  8641. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  8642. if (!string.IsNullOrEmpty(errMsg))
  8643. {
  8644. return errMsg;
  8645. }
  8646. }
  8647. }
  8648. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  8649. {
  8650. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  8651. OracleParameter[] parmetersSql = null;
  8652. parmetersSql = new OracleParameter[]
  8653. {
  8654. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  8655. };
  8656. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  8657. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  8658. //if (returnDataset != null
  8659. // && returnDataset.Tables[0].Rows.Count > 0)
  8660. //{
  8661. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  8662. // {
  8663. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  8664. // }
  8665. //}
  8666. if (returnDataset == null ||
  8667. returnDataset.Tables.Count == 0 ||
  8668. returnDataset.Tables[0].Rows.Count == 0 ||
  8669. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  8670. )
  8671. {
  8672. return "【此条码生产数据已被修改,请重新扫描此条码】";
  8673. }
  8674. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  8675. }
  8676. #endregion
  8677. // 查询新插入的生产数据ID
  8678. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  8679. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8680. int productionDataID = 0;
  8681. if (!string.IsNullOrEmpty(idStr))
  8682. {
  8683. productionDataID = int.Parse(idStr);
  8684. }
  8685. else
  8686. {
  8687. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8688. }
  8689. int? ClassesSettingID = null;//班次配置ID
  8690. #region 添加生产者数据
  8691. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  8692. if (!string.IsNullOrEmpty(errMsg))
  8693. {
  8694. return errMsg;
  8695. }
  8696. #endregion
  8697. #region 添加生产数据
  8698. #region 属性赋值
  8699. productionData.ClassesSettingID = ClassesSettingID;
  8700. productionData.ProductionDataID = Convert.ToInt32(idStr);
  8701. productionData.CentralizedBatchNo = centralizedBatchNo;
  8702. productionData.ProductionLineID = procedure.ProductionLineID;
  8703. productionData.ProductionLineCode = procedure.ProductionlineCode;
  8704. productionData.ProductionLineName = procedure.ProductionlineName;
  8705. productionData.CompleteProcedureID = procedure.ProcedureID;
  8706. productionData.ProcedureCode = procedure.ProcedureCode;
  8707. productionData.ProcedureName = procedure.ProcedureName;
  8708. productionData.ProcedureModel = procedure.ProcedureModel;
  8709. productionData.ModelType = procedure.ModelType;
  8710. productionData.NodeType = procedure.NodeType;
  8711. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  8712. // 重烧
  8713. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  8714. {
  8715. //productionData.GoodsLevelID = null;
  8716. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  8717. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  8718. }
  8719. // 次品
  8720. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  8721. {
  8722. //productionData.GoodsLevelID = null;
  8723. substandardFlag = true;
  8724. }
  8725. // 查询新插入的生产数据ID
  8726. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  8727. // {
  8728. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  8729. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  8730. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  8731. // {
  8732. ////// string sqlReFire = @"select
  8733. ////// isrefire
  8734. ////// from tp_pm_inproduction where barcode=:barcode
  8735. ////// union
  8736. ////// select
  8737. ////// isrefire
  8738. ////// from TP_PM_InProductionTrash where barcode=:barcode
  8739. ////// ";
  8740. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  8741. ////// new OracleParameter(":barcode", productionData.Barcode),
  8742. ////// };
  8743. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  8744. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  8745. ////// {
  8746. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  8747. ////// }
  8748. // }
  8749. productionData.OrganizationID = procedure.OrganizationID;
  8750. productionData.GoodsID = goodsID;
  8751. productionData.GoodsCode = goodsCode;
  8752. productionData.GoodsName = goodsName;
  8753. productionData.GoodsLevelID = productionData.GoodsLevelID;
  8754. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  8755. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  8756. //{
  8757. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  8758. //}
  8759. //else
  8760. //{
  8761. // productionData.GoodsEnding = null;
  8762. //}
  8763. #endregion
  8764. string OutSpecialRepairflag = "0";//干补标识
  8765. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  8766. errMsg = AddFinishCheckProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  8767. if (!string.IsNullOrEmpty(errMsg))
  8768. {
  8769. return errMsg;
  8770. }
  8771. #endregion
  8772. //#region 添加生产者数据
  8773. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  8774. //if (!string.IsNullOrEmpty(errMsg))
  8775. //{
  8776. // return errMsg;
  8777. //}
  8778. //#endregion
  8779. #region 条码有缺陷
  8780. #region 是次品 添加废弃产品
  8781. string ResponProcedureidStr = "";
  8782. if (substandardFlag)
  8783. {
  8784. #region 修改在产产品数据的当前工序,防止直接报损在产工序没有改过来,记录的是上一个工序
  8785. string updateInInProductionForScrap = @"Update tp_pm_inproduction
  8786. set FlowProcedureID=:flowProcedureID,ProcedureID=:flowProcedureID where barcode=:barcode";
  8787. List<OracleParameter> paras = new List<OracleParameter>();
  8788. paras.Add(new OracleParameter(":barcode", productionData.Barcode));
  8789. paras.Add(new OracleParameter(":flowProcedureID", procedure.ProcedureID));
  8790. oracleTrConn.ExecuteNonQuery(updateInInProductionForScrap, paras.ToArray());
  8791. #endregion
  8792. #region 添加废弃产品
  8793. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  8794. #region 属性赋值
  8795. scrapProduct.BarCode = productionData.Barcode;
  8796. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  8797. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  8798. scrapProduct.ScrapDate = accountDate;
  8799. scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  8800. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  8801. scrapProduct.Auditor = sUserInfo.UserID;
  8802. scrapProduct.AuditlDate = accountDate;
  8803. scrapProduct.AccountDate = accountDate;
  8804. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  8805. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  8806. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  8807. // 查询新插入的废弃ID
  8808. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  8809. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  8810. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  8811. scrapProduct.ScrapType = 1;
  8812. scrapProduct.IsQualityStatistics = 1;//新加的,因为这个报损方法是共通的,用于区别是哪里传进去的
  8813. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  8814. #endregion
  8815. if (!RejectToReject) //不是次品到次品 wangxin 20150417
  8816. {
  8817. // 保存报废
  8818. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  8819. }
  8820. else
  8821. {
  8822. // 保存报废
  8823. errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
  8824. }
  8825. //不是次品到次品 wangxin 20150417
  8826. // 保存失败
  8827. if (!string.IsNullOrEmpty(errMsg))
  8828. {
  8829. return errMsg;
  8830. }
  8831. #endregion
  8832. }
  8833. #endregion
  8834. // 存在缺陷 插入缺陷表
  8835. if (productionData.ProductionDefects != null)
  8836. {
  8837. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  8838. {
  8839. #region 保存缺陷
  8840. productionDefect.ProductionDataID = productionDataID;
  8841. productionDefect.BarCode = productionData.Barcode;
  8842. productionDefect.ProductionLineID = procedure.ProductionLineID;
  8843. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  8844. productionDefect.ProductionLineName = procedure.ProductionlineName;
  8845. productionDefect.ProcedureID = procedure.ProcedureID;
  8846. productionDefect.ProcedureCode = procedure.ProcedureCode;
  8847. productionDefect.ProcedureName = procedure.ProcedureName;
  8848. productionDefect.UserID = productionData.UserID;
  8849. productionDefect.UserCode = productionData.UserCode;
  8850. productionDefect.UserName = productionData.UserName;
  8851. productionDefect.GoodsID = productionData.GoodsID;
  8852. productionDefect.GoodsCode = productionData.GoodsCode;
  8853. productionDefect.GoodsName = productionData.GoodsName;
  8854. productionData.Remarks = productionData.Remarks;
  8855. productionDefect.ScrapResponFlag
  8856. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  8857. // 保存缺陷
  8858. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  8859. if (!string.IsNullOrEmpty(errMsg))
  8860. {
  8861. return errMsg;
  8862. }
  8863. #endregion
  8864. #region 是次品 添加废弃责任工序
  8865. if (substandardFlag)
  8866. {
  8867. //if (productionDefect.DefectProcedureID != null)
  8868. {
  8869. #region 添加责任工序
  8870. ResponProcedureEntity responProce = new ResponProcedureEntity();
  8871. //// 查询新插入的废弃ID
  8872. //string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  8873. //string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  8874. #region 属性赋值
  8875. responProce.BarCode = productionData.Barcode;
  8876. responProce.ProductionDataID = productionDataID;
  8877. responProce.ProductionLineID = productionDefect.ProductionLineID;
  8878. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  8879. responProce.ProductionLineName = productionDefect.ProductionLineName;
  8880. responProce.ProcedureID = productionDefect.DefectProcedureID;
  8881. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  8882. responProce.ProcedureName = productionDefect.DefectProcedureName;
  8883. responProce.UserID = productionDefect.DefectUserID;
  8884. responProce.UserCode = productionDefect.DefectUserCode;
  8885. responProce.UserName = productionDefect.DefectUserName;
  8886. responProce.Remarks = productionDefect.Remarks;
  8887. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  8888. #endregion
  8889. // 保存责任工序
  8890. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  8891. // 保存失败
  8892. if (!string.IsNullOrEmpty(errMsg))
  8893. {
  8894. return errMsg;
  8895. }
  8896. #endregion
  8897. }
  8898. }
  8899. #endregion
  8900. }
  8901. }
  8902. #endregion
  8903. #region 条码是次品 删除在产产品数据
  8904. if (substandardFlag)
  8905. {
  8906. #region 删除在产产品数据
  8907. InProductionEntity delInProductionEntity = new InProductionEntity();
  8908. delInProductionEntity.BarCode = productionData.Barcode;
  8909. delInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  8910. delInProductionEntity.ProductionDataID = productionDataID;
  8911. delInProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  8912. delInProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  8913. // 执行删除 在产数据
  8914. errMsg = DeletePDAInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  8915. // 执行失败
  8916. if (!string.IsNullOrEmpty(errMsg))
  8917. {
  8918. return errMsg;
  8919. }
  8920. #endregion
  8921. }
  8922. #endregion
  8923. #region 条码不是次品
  8924. if (!substandardFlag)
  8925. {
  8926. #region 中间工序/重烧 修改在产产品数据
  8927. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  8928. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  8929. {
  8930. #region 修改在产产品数据的当前工序
  8931. InProductionEntity inProductionEntity = new InProductionEntity();
  8932. inProductionEntity.BarCode = productionData.Barcode;
  8933. //流程工序
  8934. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  8935. // 当前工序
  8936. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  8937. inProductionEntity.ProcedureID = procedure.ProcedureID;
  8938. //生产数据ID
  8939. inProductionEntity.ProductionDataID = productionDataID;
  8940. // 工序模型
  8941. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  8942. // 工序类别
  8943. inProductionEntity.ModelType = procedure.ModelType;
  8944. // 生产工号
  8945. inProductionEntity.UserID = productionData.UserID;
  8946. // 重烧
  8947. inProductionEntity.IsReFire = productionData.IsReFire;
  8948. // 缺陷
  8949. inProductionEntity.DefectFlag = productionData.DefectFlag;
  8950. // 产品分级
  8951. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  8952. // 返工工序ID
  8953. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  8954. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  8955. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  8956. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  8957. // 执行修改
  8958. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  8959. // 执行失败
  8960. if (!string.IsNullOrEmpty(errMsg))
  8961. {
  8962. return errMsg;
  8963. }
  8964. #endregion
  8965. }
  8966. #endregion
  8967. #region 结束工序 添加成品数据 删除在产产品数据
  8968. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  8969. {
  8970. #region 添加成品数据 删除在产产品数据
  8971. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  8972. finishedProduct.BarCode = productionData.Barcode;
  8973. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  8974. if (!string.IsNullOrEmpty(errMsg))
  8975. {
  8976. return errMsg;
  8977. }
  8978. InProductionEntity delInProductionEntity = new InProductionEntity();
  8979. delInProductionEntity.BarCode = productionData.Barcode;
  8980. // 执行删除 在产数据
  8981. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  8982. // 执行失败
  8983. if (!string.IsNullOrEmpty(errMsg))
  8984. {
  8985. return errMsg;
  8986. }
  8987. #endregion
  8988. }
  8989. #endregion
  8990. }
  8991. #endregion
  8992. }
  8993. return errMsg;
  8994. }
  8995. /// <summary>
  8996. /// 编辑后删除生产数据
  8997. /// </summary>
  8998. /// <param name="productionDataID">生产数据ID</param>
  8999. /// <returns>int</returns>
  9000. public static string DeleteSubstandardToSubstandardByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9001. {
  9002. int deleteRow = 0;
  9003. try
  9004. {
  9005. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9006. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9007. (
  9008. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9009. )";
  9010. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9011. where
  9012. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9013. ";
  9014. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9015. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9016. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9017. where TP_PM_DefectResponsible.Productiondefectid in
  9018. (
  9019. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9020. )";
  9021. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9022. where TP_PM_DefectImage.Productiondefectid in
  9023. (
  9024. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9025. )";
  9026. // string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9027. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9028. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9029. OracleParameter[] paras = new OracleParameter[]{
  9030. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9031. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9032. };
  9033. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9034. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9035. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9036. };
  9037. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9038. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9039. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9040. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9041. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9042. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9043. // 有错误
  9044. if (deleteRow == 0)
  9045. {
  9046. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9047. }
  9048. return null;
  9049. }
  9050. catch (Exception ex)
  9051. {
  9052. throw ex;
  9053. }
  9054. }
  9055. /// <summary>
  9056. /// 编辑后删除生产数据
  9057. /// </summary>
  9058. /// <param name="productionDataID">生产数据ID</param>
  9059. /// <returns>int</returns>
  9060. public static string DeleteSubstandardToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9061. {
  9062. int deleteRow = 0;
  9063. try
  9064. {
  9065. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9066. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9067. (
  9068. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9069. )";
  9070. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9071. where
  9072. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9073. ";
  9074. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9075. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9076. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9077. where TP_PM_DefectResponsible.Productiondefectid in
  9078. (
  9079. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9080. )";
  9081. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9082. where TP_PM_DefectImage.Productiondefectid in
  9083. (
  9084. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9085. )";
  9086. //string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9087. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9088. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9089. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  9090. string sqlInsert = @"insert into TP_PM_InProduction
  9091. (
  9092. BarCode,
  9093. ProductionLineID,
  9094. ProductionLineCode,
  9095. ProductionLineName,
  9096. ProcedureModel,
  9097. ModelType,
  9098. DefectFlag,
  9099. ReworkProcedureID,
  9100. IsPublicBody,
  9101. IsReFire,
  9102. GoodsLevelID,
  9103. GoodsLevelTypeID,
  9104. GoodsID,
  9105. GoodsCode,
  9106. GoodsName,
  9107. UserID,
  9108. GroutingDailyID,
  9109. GroutingDailyDetailID,
  9110. GroutingDate,
  9111. GroutingLineID,
  9112. GroutingLineCode,
  9113. GroutingLineName,
  9114. GMouldTypeID,
  9115. CanManyTimes,
  9116. GroutingLineDetailID,
  9117. GroutingMouldCode,
  9118. MouldCode,
  9119. GroutingUserID,
  9120. GroutingUserCode,
  9121. GroutingNum,
  9122. Remarks,
  9123. KilnID,
  9124. KilnCode,
  9125. KilnName,
  9126. KilnCarID,
  9127. KilnCarCode,
  9128. KilnCarName,
  9129. KilnCarBatchNo,
  9130. KilnCarPosition,
  9131. AccountID,
  9132. ValueFlag,
  9133. CreateTime,
  9134. CreateUserID,
  9135. UpdateTime,
  9136. UpdateUserID,
  9137. OPTimeStamp,
  9138. SpecialRepairflag,
  9139. FlowProcedureID,
  9140. FlowProcedureTime,
  9141. ProcedureID,
  9142. ProcedureTime,
  9143. ProductionDataID,
  9144. logoid, ISREWORKFLAG, SEMICHECKID
  9145. )
  9146. select
  9147. BarCode,
  9148. ProductionLineID,
  9149. ProductionLineCode,
  9150. ProductionLineName,
  9151. ProcedureModel,
  9152. ModelType,
  9153. DefectFlag,
  9154. ReworkProcedureID,
  9155. IsPublicBody,
  9156. IsReFire,
  9157. GoodsLevelID,
  9158. GoodsLevelTypeID,
  9159. GoodsID,
  9160. GoodsCode,
  9161. GoodsName,
  9162. UserID,
  9163. GroutingDailyID,
  9164. GroutingDailyDetailID,
  9165. GroutingDate,
  9166. GroutingLineID,
  9167. GroutingLineCode,
  9168. GroutingLineName,
  9169. GMouldTypeID,
  9170. CanManyTimes,
  9171. GroutingLineDetailID,
  9172. GroutingMouldCode,
  9173. MouldCode,
  9174. GroutingUserID,
  9175. GroutingUserCode,
  9176. GroutingNum,
  9177. Remarks,
  9178. KilnID,
  9179. KilnCode,
  9180. KilnName,
  9181. KilnCarID,
  9182. KilnCarCode,
  9183. KilnCarName,
  9184. KilnCarBatchNo,
  9185. KilnCarPosition,
  9186. AccountID,
  9187. ValueFlag,
  9188. CreateTime,
  9189. CreateUserID,
  9190. UpdateTime,
  9191. UpdateUserID,
  9192. OPTimeStamp,
  9193. SpecialRepairflag,
  9194. FlowProcedureID,
  9195. FlowProcedureTime,
  9196. ProcedureID,
  9197. ProcedureTime,
  9198. ProductionDataID,
  9199. logoid, ISREWORKFLAG, SEMICHECKID
  9200. from TP_PM_InProductionTrash
  9201. where barcode=:barcode
  9202. ";
  9203. string sqlDelete = @"delete from TP_PM_InProductionTrash where barcode=:barcode";
  9204. OracleParameter[] paras = new OracleParameter[]{
  9205. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9206. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9207. };
  9208. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9209. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9210. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9211. };
  9212. OracleParameter[] Existparas = new OracleParameter[]{
  9213. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9214. };
  9215. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9216. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9217. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9218. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9219. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9220. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9221. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, Existparas);
  9222. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  9223. {
  9224. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsert, Existparas);
  9225. }
  9226. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelete, Existparas);
  9227. // 有错误
  9228. if (deleteRow == 0)
  9229. {
  9230. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9231. }
  9232. return null;
  9233. }
  9234. catch (Exception ex)
  9235. {
  9236. throw ex;
  9237. }
  9238. }
  9239. /// <summary>
  9240. /// 编辑后删除生产数据
  9241. /// </summary>
  9242. /// <param name="productionDataID">生产数据ID</param>
  9243. /// <returns>int</returns>
  9244. public static string DeleteNormalToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9245. {
  9246. int deleteRow = 0;
  9247. try
  9248. {
  9249. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9250. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9251. (
  9252. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9253. )";
  9254. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9255. where
  9256. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9257. ";
  9258. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9259. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9260. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9261. where TP_PM_DefectResponsible.Productiondefectid in
  9262. (
  9263. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9264. )";
  9265. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9266. where TP_PM_DefectImage.Productiondefectid in
  9267. (
  9268. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9269. )";
  9270. OracleParameter[] paras = new OracleParameter[]{
  9271. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9272. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9273. };
  9274. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9275. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9276. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9277. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9278. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9279. // 有错误
  9280. if (deleteRow == 0)
  9281. {
  9282. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9283. }
  9284. return null;
  9285. }
  9286. catch (Exception ex)
  9287. {
  9288. throw ex;
  9289. }
  9290. }
  9291. /// <summary>
  9292. /// 保存条码信息
  9293. /// </summary>
  9294. /// <param name="procedureID">工序ID</param>
  9295. /// <param name="productionDataEntitys">生产数据集</param>
  9296. /// <param name="sUserInfo">用户基本信息</param>
  9297. /// <returns>string</returns>
  9298. public static string AddCheckBarcodePDA(int procedureID, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  9299. {
  9300. string errMsg = "";
  9301. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  9302. try
  9303. {
  9304. oracleTrConn.Connect();
  9305. #region 查询工序信息
  9306. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  9307. #endregion
  9308. #region 标准检验(半成品)
  9309. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal)
  9310. {
  9311. errMsg = AddNormalCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9312. }
  9313. #endregion
  9314. #region 成品检验
  9315. else if (procedure.ModelType == (int)Constant.ProcedureModelType.QualityStatistics)
  9316. {
  9317. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9318. }
  9319. #endregion
  9320. #region 入窑前检验
  9321. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKilnCheck)
  9322. {
  9323. errMsg = AddIntoKilnCheck(oracleTrConn, procedure, productionDataEntitys, sUserInfo);
  9324. }
  9325. #endregion
  9326. // 没有错误 提交事务
  9327. if (string.IsNullOrEmpty(errMsg))
  9328. {
  9329. oracleTrConn.Commit();
  9330. }
  9331. }
  9332. catch (Exception ex)
  9333. {
  9334. oracleTrConn.Rollback();
  9335. throw ex;
  9336. }
  9337. finally
  9338. {
  9339. // 释放资源
  9340. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  9341. {
  9342. oracleTrConn.Disconnect();
  9343. }
  9344. }
  9345. return errMsg;
  9346. }
  9347. #endregion
  9348. /// <summary>
  9349. /// 校验干补条码有效
  9350. /// </summary>
  9351. /// <param name="oracleTrConn">连接对象</param>
  9352. /// <param name="procedureID">工序ID</param>
  9353. /// <param name="barcode">条码</param>
  9354. /// <param name="goodsID">返回的产品ID</param>
  9355. /// <param name="goodsCode">返回的产品Code</param>
  9356. /// <param name="goodsName">返回的产品名称</param>
  9357. /// <param name="groutingUserID">返回的注浆者ID</param>
  9358. /// <returns>string</returns>
  9359. /// <remarks>
  9360. /// 袁新成 2015.3.27 新建
  9361. /// </remarks>
  9362. private static string CheckDryRepairBarcode(IDBTransaction oracleTrConn,
  9363. int procedureID,
  9364. string barcode,
  9365. out int goodsID,
  9366. out string goodsCode,
  9367. out string goodsName,
  9368. out string groutingUserCode,
  9369. SUserInfo sUserInfo
  9370. )
  9371. {
  9372. try
  9373. {
  9374. OracleParameter[] paras = new OracleParameter[]{
  9375. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  9376. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  9377. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  9378. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  9379. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  9380. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  9381. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  9382. };
  9383. oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  9384. if (!"null".Equals(paras[3].Value + ""))
  9385. {
  9386. goodsID = Convert.ToInt32(paras[3].Value + "");
  9387. }
  9388. else
  9389. {
  9390. goodsID = 0;
  9391. }
  9392. goodsCode = paras[4].Value + "";
  9393. goodsName = paras[5].Value + "";
  9394. if (!"null".Equals(paras[6].Value + ""))
  9395. {
  9396. groutingUserCode = paras[6].Value + "";
  9397. }
  9398. else
  9399. {
  9400. groutingUserCode = null;
  9401. }
  9402. if ("null".Equals(paras[2].Value + ""))
  9403. {
  9404. return null;
  9405. }
  9406. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  9407. }
  9408. catch (Exception ex)
  9409. {
  9410. throw ex;
  9411. }
  9412. }
  9413. /// <summary>
  9414. /// 干补标准计件
  9415. /// </summary>
  9416. /// <param name="oracleTrConn">数据连接对象</param>
  9417. /// <param name="procedure">工序对象</param>
  9418. /// <param name="barcodeTable">条码信息</param>
  9419. /// <param name="sUserInfo">用户基本信息</param>
  9420. /// <param name="goodsID">返回的产品ID</param>
  9421. /// <param name="goodsCode">返回的产品Code</param>
  9422. /// <param name="goodsName">返回的产品名称</param>
  9423. /// <param name="groutingUserID">返回的注浆者ID</param>
  9424. /// <returns>string</returns>
  9425. /// <remarks>
  9426. /// 袁新成 2015.3.26 新建
  9427. /// </remarks>
  9428. private static string AddDryRepairWorkPiece(IDBTransaction oracleTrConn,
  9429. ProcedureEntity procedure,
  9430. DataTable barcodeTable,
  9431. SUserInfo sUserInfo,
  9432. out int goodsID,
  9433. out string goodsCode,
  9434. out string goodsName,
  9435. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  9436. {
  9437. try
  9438. {
  9439. int deleteRow = 0;
  9440. goodsID = Constant.INT_IS_ZERO;
  9441. goodsCode = null;
  9442. goodsName = null;
  9443. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  9444. // 获得账务日期
  9445. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  9446. string errMsg = string.Empty;
  9447. // 本批采集的批次号
  9448. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  9449. // 条码信息
  9450. string logoName_Temp = "";
  9451. string logoCode_Temp = "";
  9452. string groutingdate_Temp = "";
  9453. foreach (DataRow barcodeRow in barcodeTable.Rows)
  9454. {
  9455. // 条码
  9456. string barcode = barcodeRow["Barcode"].ToString();
  9457. if (string.IsNullOrEmpty(barcode))
  9458. {
  9459. throw new Exception("传入的条码号为空");
  9460. }
  9461. // 生产工号
  9462. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  9463. // 生产工号
  9464. string workUserCode = barcodeRow["UserCode"].ToString();
  9465. //#region 校验条码有效性
  9466. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9467. //if (!string.IsNullOrEmpty(errMsg))
  9468. //{
  9469. // return errMsg;
  9470. //}
  9471. //#endregion
  9472. if (procedure.CollectType == 1)
  9473. {
  9474. #region 校验条码有效性
  9475. errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9476. if (!string.IsNullOrEmpty(errMsg))
  9477. {
  9478. logoName = "";
  9479. logoCode = "";
  9480. groutingdate = "";
  9481. return errMsg;
  9482. }
  9483. #endregion
  9484. }
  9485. else
  9486. {
  9487. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  9488. tp_pm_groutingdailydetail.goodscode,
  9489. tp_pm_groutingdailydetail.goodsname,
  9490. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  9491. tp_pm_groutingdailydetail.groutingdate,
  9492. tp_mst_logo.logoid,
  9493. tp_mst_logo.logocode,
  9494. tp_mst_logo.logoname
  9495. from tp_pm_groutingdailydetail
  9496. left join tp_mst_logo
  9497. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  9498. where tp_pm_groutingdailydetail.barcode=:barcode
  9499. ";
  9500. OracleParameter[] paras = new OracleParameter[] {
  9501. new OracleParameter(":barcode",barcode),
  9502. };
  9503. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  9504. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  9505. {
  9506. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  9507. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  9508. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  9509. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  9510. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  9511. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  9512. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  9513. logoName_Temp = logoName;
  9514. logoCode_Temp = logoCode;
  9515. groutingdate_Temp = groutingdate;
  9516. }
  9517. }
  9518. #region 数据处理
  9519. #region 处理废弃数据并转回收数据为在产数据
  9520. string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  9521. OracleParameter[] queryparas = new OracleParameter[]{
  9522. new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  9523. };
  9524. DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  9525. if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  9526. {
  9527. errMsg = "未设定干补等级";
  9528. logoName = "";
  9529. logoCode = "";
  9530. groutingdate = "";
  9531. return errMsg;
  9532. }
  9533. string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  9534. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  9535. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  9536. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  9537. UpdateUserID=:UpdateUserID
  9538. where BarCode=:barcode
  9539. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  9540. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  9541. */
  9542. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  9543. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  9544. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  9545. UpdateUserID=:UpdateUserID
  9546. where BarCode=:barcode
  9547. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  9548. and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  9549. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9550. new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  9551. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9552. new OracleParameter(":barcode1",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9553. new OracleParameter(":SpecialRepairUserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  9554. new OracleParameter(":SpecialRepairUserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  9555. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  9556. };
  9557. //modify wangx 20150623
  9558. OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  9559. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9560. };
  9561. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  9562. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  9563. string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  9564. oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  9565. //modify wangx 20150623 end
  9566. #region
  9567. //第五步,插入干补工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  9568. // 查询新插入的生产数据ID
  9569. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  9570. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  9571. int productionDataID = 0;
  9572. if (!string.IsNullOrEmpty(idStr))
  9573. {
  9574. productionDataID = int.Parse(idStr);
  9575. }
  9576. else
  9577. {
  9578. logoName = "";
  9579. logoCode = "";
  9580. groutingdate = "";
  9581. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9582. }
  9583. int? ClassesSettingID = null;//班次配置ID
  9584. #region 第五步 添加生产者数据
  9585. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  9586. if (!string.IsNullOrEmpty(errMsg))
  9587. {
  9588. logoName = "";
  9589. logoCode = "";
  9590. groutingdate = "";
  9591. return errMsg;
  9592. }
  9593. #endregion
  9594. ProductionDataEntity productionData = new ProductionDataEntity();
  9595. #region 属性赋值
  9596. productionData.ClassesSettingID = ClassesSettingID;
  9597. productionData.ProductionDataID = Convert.ToInt32(idStr);
  9598. productionData.Barcode = barcode;
  9599. productionData.CentralizedBatchNo = centralizedBatchNo;
  9600. productionData.ProductionLineID = procedure.ProductionLineID;
  9601. productionData.ProductionLineCode = procedure.ProductionlineCode;
  9602. productionData.ProductionLineName = procedure.ProductionlineName;
  9603. productionData.CompleteProcedureID = procedure.ProcedureID;
  9604. productionData.ProcedureCode = procedure.ProcedureCode;
  9605. productionData.ProcedureName = procedure.ProcedureName;
  9606. productionData.ProcedureModel = procedure.ProcedureModel;
  9607. productionData.ModelType = procedure.ModelType;
  9608. productionData.NodeType = procedure.NodeType;
  9609. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  9610. productionData.ReworkProcedureID = null;
  9611. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  9612. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  9613. //设置干补标识,产品分级类别=9干补
  9614. productionData.GoodsLevelTypeID = 9;
  9615. productionData.GoodsLevelID = int.Parse(goodsLevelID);
  9616. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  9617. productionData.OrganizationID = procedure.OrganizationID;
  9618. productionData.GoodsID = goodsID;
  9619. productionData.GoodsCode = goodsCode;
  9620. productionData.GoodsName = goodsName;
  9621. productionData.UserID = workUserID;
  9622. productionData.UserCode = barcodeRow["UserCode"].ToString();
  9623. productionData.UserName = barcodeRow["UserName"].ToString();
  9624. productionData.PieceType = procedure.PieceType;
  9625. if (barcodeRow["LogoID"].ToString() != "")
  9626. {
  9627. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  9628. }
  9629. string sqlReFire = @"select
  9630. isrefire,
  9631. logoid
  9632. from tp_pm_inproduction where barcode=:barcode
  9633. union
  9634. select
  9635. isrefire,
  9636. logoid
  9637. from TP_PM_InProductionTrash where barcode=:barcode
  9638. union
  9639. select
  9640. isrefire,
  9641. logoid
  9642. from TP_PM_FinishedProduct where barcode=:barcode ";
  9643. OracleParameter[] ReFireparas = new OracleParameter[] {
  9644. new OracleParameter(":barcode",barcode),
  9645. };
  9646. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9647. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9648. {
  9649. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  9650. {
  9651. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9652. }
  9653. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  9654. {
  9655. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  9656. }
  9657. }
  9658. #endregion 属性赋值
  9659. string OutSpecialRepairflag = "0";//干补标识
  9660. productionData.SpecialRepairflag = 1;
  9661. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9662. if (!string.IsNullOrEmpty(errMsg))
  9663. {
  9664. logoName = "";
  9665. logoCode = "";
  9666. groutingdate = "";
  9667. return errMsg;
  9668. }
  9669. #endregion
  9670. //第二步,回收站中数据回到在产中,设置干补标识。
  9671. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  9672. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  9673. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  9674. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  9675. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  9676. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  9677. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  9678. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  9679. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  9680. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  9681. KILNID, KILNCODE, KILNNAME, KILNCARID,
  9682. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  9683. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  9684. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  9685. :PROCEDUREMODEL, :MODELTYPE, REWORKPROCEDUREID,
  9686. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  9687. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  9688. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  9689. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  9690. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  9691. CREATEUSERID, UPDATETIME, :UpdateUserID,
  9692. ISREFIRE, null, null, DEFECTFLAG,
  9693. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  9694. KILNID, KILNCODE, KILNNAME, KILNCARID,
  9695. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,1,FlowProcedureID ,
  9696. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  9697. from TP_PM_InProductionTrash where barcode=:barcode ";
  9698. OracleParameter[] InProductparas = new OracleParameter[]{
  9699. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  9700. // new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  9701. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9702. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  9703. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  9704. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  9705. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  9706. };
  9707. //第三步,删除回收站中的条码
  9708. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  9709. OracleParameter[] TrashProductparas = new OracleParameter[]{
  9710. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  9711. };
  9712. //第四步,更新注浆表干补标识
  9713. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  9714. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  9715. // where barcode=:barcode)";
  9716. string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  9717. where barcode=:barcode";
  9718. OracleParameter[] GroutingProductparas = new OracleParameter[]{
  9719. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  9720. };
  9721. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  9722. // where barcode=:barcode ";
  9723. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  9724. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  9725. // };
  9726. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  9727. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  9728. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  9729. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  9730. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  9731. // 失败
  9732. if (deleteRow == Constant.INT_IS_ZERO)
  9733. {
  9734. logoName = "";
  9735. logoCode = "";
  9736. groutingdate = "";
  9737. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9738. }
  9739. #endregion
  9740. //#region 第五步 添加生产者数据
  9741. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  9742. //if (!string.IsNullOrEmpty(errMsg))
  9743. //{
  9744. // return errMsg;
  9745. //}
  9746. //#endregion
  9747. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  9748. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  9749. OracleParameter[] Paras = new OracleParameter[] {
  9750. new OracleParameter(":barcode",OracleDbType.Varchar2,
  9751. barcode,ParameterDirection.Input)
  9752. };
  9753. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  9754. if (ds.Tables[0].Rows.Count == 0)
  9755. {
  9756. // 2 生产数据恢复到在产生产数据
  9757. sql = @"insert into tp_pm_productiondatain
  9758. (
  9759. ProductionDataID,
  9760. BarCode,
  9761. CentralizedBatchNo,
  9762. ProductionLineID,
  9763. ProductionLineCode,
  9764. ProductionLineName,
  9765. ProcedureID,
  9766. ProcedureCode,
  9767. ProcedureName,
  9768. ProcedureModel,
  9769. ModelType,
  9770. PieceType,
  9771. IsReworked,
  9772. NodeType,
  9773. IsPublicBody,
  9774. IsReFire,
  9775. GoodsLevelID,
  9776. GoodsLevelTypeID,
  9777. SpecialRepairFlag,
  9778. OrganizationID,
  9779. GoodsID,
  9780. GoodsCode,
  9781. GoodsName,
  9782. UserID,
  9783. UserCode,
  9784. UserName,
  9785. ClassesSettingID,
  9786. KilnID,
  9787. KilnCode,
  9788. KilnName,
  9789. KilnCarID,
  9790. KilnCarCode,
  9791. KilnCarName,
  9792. KilnCarBatchNo,
  9793. KilnCarPosition,
  9794. ReworkProcedureID,
  9795. ReworkProcedureCode,
  9796. ReworkProcedureName,
  9797. GroutingDailyID,
  9798. GroutingDailyDetailID,
  9799. GroutingLineID,
  9800. GroutingLineCode,
  9801. GroutingLineName,
  9802. GMouldTypeID,
  9803. CanManyTimes,
  9804. GroutingLineDetailID,
  9805. GroutingDate,
  9806. GroutingMouldCode,
  9807. MouldCode,
  9808. GroutingUserID,
  9809. GroutingUserCode,
  9810. GroutingNum,
  9811. Remarks,
  9812. AccountDate,
  9813. SettlementFlag,
  9814. AccountID,
  9815. ValueFlag,
  9816. CreateTime,
  9817. CreateUserID,
  9818. UpdateTime,
  9819. UpdateUserID,
  9820. OPTimeStamp,
  9821. TriggerFlag,
  9822. logoid,
  9823. BackOutTime,BackOutUserID,BackOutUserCode
  9824. )
  9825. select
  9826. ProductionDataID,
  9827. BarCode,
  9828. CentralizedBatchNo,
  9829. ProductionLineID,
  9830. ProductionLineCode,
  9831. ProductionLineName,
  9832. ProcedureID,
  9833. ProcedureCode,
  9834. ProcedureName,
  9835. ProcedureModel,
  9836. ModelType,
  9837. PieceType,
  9838. IsReworked,
  9839. NodeType,
  9840. IsPublicBody,
  9841. IsReFire,
  9842. GoodsLevelID,
  9843. GoodsLevelTypeID,
  9844. SpecialRepairFlag,
  9845. OrganizationID,
  9846. GoodsID,
  9847. GoodsCode,
  9848. GoodsName,
  9849. UserID,
  9850. UserCode,
  9851. UserName,
  9852. ClassesSettingID,
  9853. KilnID,
  9854. KilnCode,
  9855. KilnName,
  9856. KilnCarID,
  9857. KilnCarCode,
  9858. KilnCarName,
  9859. KilnCarBatchNo,
  9860. KilnCarPosition,
  9861. ReworkProcedureID,
  9862. ReworkProcedureCode,
  9863. ReworkProcedureName,
  9864. GroutingDailyID,
  9865. GroutingDailyDetailID,
  9866. GroutingLineID,
  9867. GroutingLineCode,
  9868. GroutingLineName,
  9869. GMouldTypeID,
  9870. CanManyTimes,
  9871. GroutingLineDetailID,
  9872. GroutingDate,
  9873. GroutingMouldCode,
  9874. MouldCode,
  9875. GroutingUserID,
  9876. GroutingUserCode,
  9877. GroutingNum,
  9878. Remarks,
  9879. AccountDate,
  9880. SettlementFlag,
  9881. AccountID,
  9882. ValueFlag,
  9883. CreateTime,
  9884. CreateUserID,
  9885. UpdateTime,
  9886. UpdateUserID,
  9887. OPTimeStamp,
  9888. 1,
  9889. logoid,
  9890. BackOutTime,BackOutUserID,BackOutUserCode
  9891. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  9892. ";
  9893. oracleTrConn.ExecuteNonQuery(sql, Paras);
  9894. }
  9895. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  9896. #endregion 数据处理
  9897. }
  9898. logoName = logoName_Temp;
  9899. logoCode = logoCode_Temp;
  9900. groutingdate = groutingdate_Temp;
  9901. return errMsg;
  9902. }
  9903. catch (Exception ex)
  9904. {
  9905. throw ex;
  9906. }
  9907. }
  9908. /// <summary>
  9909. /// 添加干补生产数据
  9910. /// </summary>
  9911. /// <param name="oracleTrConn">连接对象</param>
  9912. /// <param name="accountDate">账务日期</param>
  9913. /// <param name="productionData">生产数据</param>
  9914. /// <param name="sUserInfo">用户基本信息</param>
  9915. /// <returns>string</returns>
  9916. /// <remarks>
  9917. /// 袁新成 2015.04.1 新建
  9918. /// </remarks>
  9919. private static string AddDryRepairProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  9920. {
  9921. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  9922. string selectSql = "";
  9923. string returnVal = "";
  9924. //这地方连了两张表,为了成检的时候,次品在次新增
  9925. selectSql = @"select
  9926. GroutingDate,
  9927. GroutingUserID,
  9928. GroutingUserCode,
  9929. GroutingNum,
  9930. GroutingMouldCode,
  9931. MouldCode,
  9932. GroutingDailyID,
  9933. GroutingDailyDetailID,
  9934. GroutingLineID,
  9935. GroutingLineCode,
  9936. GroutingLineName,
  9937. GMouldTypeID,
  9938. CanManyTimes,
  9939. GroutingLineDetailID,
  9940. SpecialRepairflag
  9941. from tp_pm_inproduction where barcode=:barcode
  9942. union
  9943. select
  9944. GroutingDate,
  9945. GroutingUserID,
  9946. GroutingUserCode,
  9947. GroutingNum,
  9948. GroutingMouldCode,
  9949. MouldCode,
  9950. GroutingDailyID,
  9951. GroutingDailyDetailID,
  9952. GroutingLineID,
  9953. GroutingLineCode,
  9954. GroutingLineName,
  9955. GMouldTypeID,
  9956. CanManyTimes,
  9957. GroutingLineDetailID,
  9958. SpecialRepairflag
  9959. from TP_PM_InProductionTrash where barcode=:barcode
  9960. ";
  9961. OracleParameter[] selectparas = new OracleParameter[] {
  9962. new OracleParameter(":barcode",productionData.Barcode),
  9963. };
  9964. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  9965. if (dsGroutingProduct == null || dsGroutingProduct.Tables[0].Rows.Count == 0)
  9966. {
  9967. selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  9968. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  9969. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  9970. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  9971. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  9972. TP_PM_GroutingDailyDetail.MouldCode,
  9973. TP_PM_GroutingDailyDetail.GroutingDailyID,
  9974. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  9975. TP_PM_GroutingDailyDetail.GroutingLineID,
  9976. TP_PM_GroutingDailyDetail.GroutingLineCode,
  9977. TP_PM_GroutingDailyDetail.GroutingLineName,
  9978. TP_PM_GroutingDaily.GMouldTypeID,
  9979. TP_PM_GroutingDaily.CanManyTimes,
  9980. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  9981. TP_PM_GroutingDailyDetail.SpecialRepairflag
  9982. from TP_PM_GroutingDaily
  9983. left join TP_PM_GroutingDailyDetail
  9984. on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  9985. where TP_PM_GroutingDailyDetail.barcode=:barcode
  9986. ";
  9987. dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  9988. }
  9989. DateTime GroutingDate = new DateTime();
  9990. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  9991. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  9992. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  9993. {
  9994. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  9995. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  9996. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  9997. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  9998. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  9999. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  10000. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  10001. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  10002. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  10003. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  10004. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  10005. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  10006. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  10007. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  10008. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  10009. returnVal = SpecialRepairflag.ToString();
  10010. }
  10011. #endregion
  10012. #region 更新窑炉窑车属性
  10013. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  10014. {
  10015. DataSet ds = GetDryRepairKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  10016. if (ds != null)
  10017. {
  10018. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  10019. {
  10020. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  10021. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  10022. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  10023. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  10024. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  10025. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  10026. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  10027. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  10028. }
  10029. }
  10030. }
  10031. #endregion
  10032. #region SQL
  10033. string sql = "insert into tp_pm_productiondataIn"
  10034. + " (productiondataid,"
  10035. + " barcode,"
  10036. + " centralizedbatchno,"
  10037. + " productionlineid,"
  10038. + " productionlinecode,"
  10039. + " productionlinename,"
  10040. + " procedureid,"
  10041. + " procedurecode,"
  10042. + " procedurename,"
  10043. + " proceduremodel,"
  10044. + " modeltype,"
  10045. + " piecetype,"
  10046. + " isreworked,"
  10047. + " nodetype,"
  10048. + " ispublicbody,"
  10049. + " isrefire,"
  10050. + " organizationid,"
  10051. + " goodsid,"
  10052. + " goodscode,"
  10053. + " goodsname,"
  10054. + " userid,"
  10055. + " usercode,"
  10056. + " username,"
  10057. + " kilnid,"
  10058. + " kilncode,"
  10059. + " kilnname,"
  10060. + " kilncarid,"
  10061. + " kilncarcode,"
  10062. + " kilncarname,"
  10063. + " kilncarbatchno,"
  10064. + " kilncarposition,"
  10065. + " reworkprocedureid,"
  10066. + " reworkprocedurecode,"
  10067. + " reworkprocedurename,"
  10068. + " remarks,"
  10069. + " accountdate,"
  10070. + " accountid,"
  10071. + " GoodsLevelID,"
  10072. + " GoodsLevelTypeID,"
  10073. + " createuserid,"
  10074. + " updateuserid,"
  10075. + " GroutingDate,"
  10076. + " GroutingUserID,"
  10077. + " GroutingUserCode,"
  10078. + " GroutingNum,"
  10079. + " GroutingMouldCode,"
  10080. + " MouldCode,"
  10081. + "GroutingDailyID,"
  10082. + "GroutingDailyDetailID,"
  10083. + "GroutingLineID,"
  10084. + " GroutingLineCode,"
  10085. + "GroutingLineName,"
  10086. + "GMouldTypeID,"
  10087. + "CanManyTimes,"
  10088. + "GroutingLineDetailID,"
  10089. + "SpecialRepairflag,"
  10090. + "ClassesSettingID,"
  10091. + "LogoID"
  10092. + ")"
  10093. + " values"
  10094. + " (:productiondataid,"
  10095. + " :barcode,"
  10096. + " :centralizedbatchno,"
  10097. + " :productionlineid,"
  10098. + " :productionlinecode,"
  10099. + " :productionlinename,"
  10100. + " :procedureid,"
  10101. + " :procedurecode,"
  10102. + " :procedurename,"
  10103. + " :proceduremodel,"
  10104. + " :modeltype,"
  10105. + " :piecetype,"
  10106. + " :isreworked,"
  10107. + " :nodetype,"
  10108. + " :ispublicbody,"
  10109. + " :isrefire,"
  10110. + " :organizationid,"
  10111. + " :goodsid,"
  10112. + " :goodscode,"
  10113. + " :goodsname,"
  10114. + " :userid,"
  10115. + " :usercode,"
  10116. + " :username,"
  10117. + " :kilnid,"
  10118. + " :kilncode,"
  10119. + " :kilnname,"
  10120. + " :kilncarid,"
  10121. + " :kilncarcode,"
  10122. + " :kilncarname,"
  10123. + " :kilncarbatchno,"
  10124. + " :kilncarposition,"
  10125. + " :reworkprocedureid,"
  10126. + " :reworkprocedurecode,"
  10127. + " :reworkprocedurename,"
  10128. + " :remarks,"
  10129. + " :accountdata,"
  10130. + " :accountid,"
  10131. + " :GoodsLevelID,"
  10132. + " :GoodsLevelTypeID,"
  10133. + " :createuserid,"
  10134. + " :updateuserid,"
  10135. + " :groutingdate,"
  10136. + " :groutinguserid,"
  10137. + " :groutingusercode,"
  10138. + " :groutingnum,"
  10139. + " :groutingmouldcode,"
  10140. + " :mouldcode,"
  10141. + ":groutingdailyid,"
  10142. + ":groutingdailydetailid,"
  10143. + ":groutinglineid,"
  10144. + " :groutinglinecode,"
  10145. + ":groutinglinename,"
  10146. + ":gmouldtypeid,"
  10147. + ":canmanytimes,"
  10148. + ":groutinglinedetailid,"
  10149. + ":specialRepairflag,"
  10150. + ":classesSettingID,"
  10151. + ":logoID"
  10152. + ")";
  10153. #endregion
  10154. #region OracleParameter
  10155. OracleParameter[] paras = new OracleParameter[] {
  10156. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  10157. new OracleParameter(":barcode",productionData.Barcode),
  10158. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  10159. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  10160. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  10161. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  10162. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  10163. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  10164. new OracleParameter(":procedurename",productionData.ProcedureName),
  10165. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  10166. new OracleParameter(":modeltype",productionData.ModelType),
  10167. new OracleParameter(":piecetype",productionData.PieceType),
  10168. new OracleParameter(":isreworked",productionData.IsReworked),
  10169. new OracleParameter(":nodetype",productionData.NodeType),
  10170. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  10171. new OracleParameter(":isrefire",productionData.IsReFire),
  10172. new OracleParameter(":organizationid",productionData.OrganizationID),
  10173. new OracleParameter(":goodsid",productionData.GoodsID),
  10174. new OracleParameter(":goodscode",productionData.GoodsCode),
  10175. new OracleParameter(":goodsname",productionData.GoodsName),
  10176. new OracleParameter(":userid",productionData.UserID),
  10177. new OracleParameter(":usercode",productionData.UserCode),
  10178. new OracleParameter(":username",productionData.UserName),
  10179. new OracleParameter(":kilnid",productionData.KilnID),
  10180. new OracleParameter(":kilncode",productionData.KilnCode),
  10181. new OracleParameter(":kilnname",productionData.KilnName),
  10182. new OracleParameter(":kilncarid",productionData.KilnCarID),
  10183. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  10184. new OracleParameter(":kilncarname",productionData.KilnCarName),
  10185. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  10186. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  10187. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  10188. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  10189. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  10190. new OracleParameter(":remarks",productionData.Remarks),
  10191. new OracleParameter(":accountdata",accountDate),
  10192. new OracleParameter(":accountid",sUserInfo.AccountID),
  10193. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  10194. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  10195. new OracleParameter(":createuserid",sUserInfo.UserID),
  10196. new OracleParameter(":updateuserid",sUserInfo.UserID),
  10197. new OracleParameter(":groutingdate",GroutingDate),
  10198. new OracleParameter(":groutinguserid",GroutingUserID),
  10199. new OracleParameter(":groutingusercode",GroutingUserCode),
  10200. new OracleParameter(":groutingnum",GroutingNum),
  10201. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  10202. new OracleParameter(":mouldcode",MouldCode),
  10203. new OracleParameter(":groutingdailyid",GroutingDailyID),
  10204. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  10205. new OracleParameter(":groutinglineid",GroutingLineID),
  10206. new OracleParameter(":groutinglinecode",GroutingLineCode),
  10207. new OracleParameter(":groutinglinename",GroutingLineName),
  10208. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  10209. new OracleParameter(":canmanytimes",CanManyTimes),
  10210. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  10211. new OracleParameter(":specialRepairflag",productionData.SpecialRepairflag),
  10212. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  10213. new OracleParameter(":logoID",productionData.LogoID),
  10214. };
  10215. #endregion
  10216. foreach (OracleParameter para in paras)
  10217. {
  10218. if (string.IsNullOrEmpty(para.Value + ""))
  10219. {
  10220. para.Value = DBNull.Value;
  10221. }
  10222. }
  10223. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  10224. OutSpecialRepairflag = returnVal;
  10225. // 失败
  10226. if (result != Constant.INT_IS_ONE)
  10227. {
  10228. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10229. }
  10230. // 成功返回null
  10231. return null;
  10232. }
  10233. /// <summary>
  10234. /// 根据最大生产数据ID,获取窑车窑炉等信息
  10235. /// </summary>
  10236. /// <param name="oracleTrConn"></param>
  10237. /// <param name="barcode"></param>
  10238. /// <param name="sUserInfo"></param>
  10239. /// <returns></returns>
  10240. private static DataSet GetDryRepairKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  10241. {
  10242. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  10243. // (
  10244. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  10245. // )";
  10246. string sql = @"select
  10247. KilnID,
  10248. KilnCode,
  10249. KilnName,
  10250. KilnCarID,
  10251. KilnCarCode,
  10252. KilnCarName,
  10253. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10254. KilnCarPosition
  10255. from tp_pm_inproduction where barcode=:barcode
  10256. union
  10257. select
  10258. KilnID,
  10259. KilnCode,
  10260. KilnName,
  10261. KilnCarID,
  10262. KilnCarCode,
  10263. KilnCarName,
  10264. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10265. KilnCarPosition
  10266. from TP_PM_InProductionTrash where barcode=:barcode
  10267. ";
  10268. try
  10269. {
  10270. IDataParameter[] paras = new OracleParameter[]
  10271. {
  10272. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  10273. };
  10274. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  10275. if (returnDs != null
  10276. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  10277. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  10278. {
  10279. return returnDs;
  10280. }
  10281. else
  10282. {
  10283. sql = @"select
  10284. KilnID,
  10285. KilnCode,
  10286. KilnName,
  10287. KilnCarID,
  10288. KilnCarCode,
  10289. KilnCarName,
  10290. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  10291. KilnCarPosition
  10292. from TP_PM_FINISHEDPRODUCT where barcode=:barcode";
  10293. returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  10294. if (returnDs != null
  10295. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  10296. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  10297. {
  10298. return returnDs;
  10299. }
  10300. else
  10301. {
  10302. return null;
  10303. }
  10304. }
  10305. }
  10306. catch (Exception ex)
  10307. {
  10308. throw ex;
  10309. }
  10310. }
  10311. /// <summary>
  10312. /// 更新漏扫的成型工号
  10313. /// </summary>
  10314. /// <param name="groutingUserCode">成型工号</param>
  10315. /// <param name="missingID">漏扫ID</param>
  10316. /// <param name="sUserInfo">用户基本信息</param>
  10317. /// <returns>int</returns>
  10318. public static int UpdateGroutingUserCodeByMissingID(string groutingUserCode, int missingID, SUserInfo sUserInfo)
  10319. {
  10320. int UpdateRow = 0;
  10321. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10322. try
  10323. {
  10324. oracleTrConn.Connect();
  10325. //string sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  10326. //OracleParameter[] paras = new OracleParameter[]{
  10327. // new OracleParameter(":usercode",OracleDbType.Varchar2, groutingUserCode,ParameterDirection.Input),
  10328. // new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10329. //};
  10330. //DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  10331. //if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  10332. //{
  10333. // oracleTrConn.Commit();
  10334. // UpdateRow = -1;
  10335. // return UpdateRow;//成型工号无效
  10336. //}
  10337. // 20150605 wangxin begin
  10338. string[] subGroutingUserCode = groutingUserCode.Trim(',').Split(',');
  10339. bool isError = false;
  10340. int FirstUserID = 0;
  10341. string sql = "";
  10342. OracleParameter[] paras = null;
  10343. DataSet returnDataset = null;
  10344. for (int i = 0; i < subGroutingUserCode.Length; i++)
  10345. {
  10346. sql = "select userid from tp_mst_user where usercode=:usercode and valueflag=1 and isworker=1 and accountid=:accountid";
  10347. paras = new OracleParameter[]{
  10348. new OracleParameter(":usercode",OracleDbType.Varchar2, subGroutingUserCode[i],ParameterDirection.Input),
  10349. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10350. };
  10351. returnDataset = oracleTrConn.GetSqlResultToDs(sql, paras);
  10352. if (returnDataset != null && returnDataset.Tables[0].Rows.Count == 0)
  10353. {
  10354. isError = true;
  10355. break;
  10356. }
  10357. if (i == 0)
  10358. {
  10359. FirstUserID = Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]);
  10360. }
  10361. }
  10362. if (isError)
  10363. {
  10364. oracleTrConn.Commit();
  10365. UpdateRow = -1;
  10366. return UpdateRow;//成型工号无效
  10367. }
  10368. // 20150605 wangxin end
  10369. sql = "update TP_PM_BarCodeMissing set Missuserid=:Missuserid, Missusercode=:Missusercode where missid=:missid";
  10370. paras = new OracleParameter[]{
  10371. //new OracleParameter(":Missuserid",OracleDbType.Int32,Convert.ToInt32(returnDataset.Tables[0].Rows[0]["userid"]),ParameterDirection.Input),
  10372. new OracleParameter(":Missuserid",OracleDbType.Int32,FirstUserID,ParameterDirection.Input),
  10373. new OracleParameter(":Missusercode", OracleDbType.Varchar2, groutingUserCode.Trim(','), ParameterDirection.Input),
  10374. new OracleParameter(":missid", OracleDbType.Int32, missingID, ParameterDirection.Input),
  10375. };
  10376. UpdateRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  10377. if (UpdateRow > 0)
  10378. {
  10379. oracleTrConn.Commit();
  10380. }
  10381. else
  10382. {
  10383. oracleTrConn.Rollback();
  10384. }
  10385. }
  10386. catch (Exception ex)
  10387. {
  10388. oracleTrConn.Rollback();
  10389. throw ex;
  10390. }
  10391. finally
  10392. {
  10393. // 释放资源
  10394. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10395. {
  10396. oracleTrConn.Disconnect();
  10397. }
  10398. }
  10399. return UpdateRow;
  10400. }
  10401. /// <summary>
  10402. /// 在入窑工序检验窑车号是否存在
  10403. /// </summary>
  10404. /// <param name="kilncarcode">窑车编码</param>
  10405. /// <param name="procedureid">工序ID</param>
  10406. /// <param name="sUserInfo">用户基本信息</param>
  10407. /// <returns></returns>
  10408. public static int CheckKilnCarByIntoCar(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  10409. {
  10410. int UpdateRow = 0;
  10411. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10412. try
  10413. {
  10414. oracleTrConn.Connect();
  10415. // 判断窑车编码是否有效
  10416. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  10417. OracleParameter[] paras = new OracleParameter[]{
  10418. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  10419. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10420. };
  10421. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10422. int kilncarid = 0;
  10423. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10424. {
  10425. oracleTrConn.Commit();
  10426. UpdateRow = -99;
  10427. return UpdateRow;//窑车编码无效
  10428. }
  10429. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  10430. //判断此窑车号有无产品
  10431. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  10432. paras = new OracleParameter[]{
  10433. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10434. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10435. };
  10436. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  10437. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  10438. {
  10439. oracleTrConn.Commit();
  10440. UpdateRow = -98;
  10441. return UpdateRow;//窑车己无产品
  10442. }
  10443. // 判断窑车编码是否在入窑工序
  10444. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  10445. paras = new OracleParameter[]{
  10446. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10447. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10448. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  10449. };
  10450. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10451. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10452. {
  10453. oracleTrConn.Commit();
  10454. UpdateRow = -97;
  10455. return UpdateRow;//窑车号没有入窑,不可以撤销
  10456. }
  10457. int KilnCarDataID = 0;//窑车生产数据ID
  10458. string KilnCarBatchNo = "";
  10459. // 遍历窑车产品
  10460. bool isError = false;//默认没有错误
  10461. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  10462. {
  10463. #region 先查询生产数据最后3条
  10464. string sqlString = @"select ProductionDataID,
  10465. ProcedureID,
  10466. ProcedureModel,
  10467. ModelType,
  10468. ReworkProcedureID,
  10469. UserID
  10470. from (select ProductionDataID,
  10471. ProcedureID,
  10472. ProcedureModel,
  10473. ModelType,
  10474. ReworkProcedureID,
  10475. UserID
  10476. from Tp_Pm_ProductiondataIn
  10477. where barcode = :barcode
  10478. and valueflag = 1 and ModelType<>1 and ModelType<>2
  10479. order by ProductionDataID desc)
  10480. where rownum <=1";//where rownum <=3";
  10481. paras = new OracleParameter[]{
  10482. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10483. };
  10484. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  10485. if (productionData == null
  10486. || productionData.Tables.Count == Constant.INT_IS_ZERO
  10487. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  10488. {
  10489. //errMsg = Messages.MSG_PM_W016;
  10490. isError = true;
  10491. break;
  10492. }
  10493. #endregion
  10494. #region 回滚在产数据
  10495. sqlString = @"update TP_PM_InProduction
  10496. set FlowProcedureID = :flowProcedureID,
  10497. ProcedureModel = :procedureModel,
  10498. ProcedureID = :flowProcedureID,
  10499. ModelType = :modelType,
  10500. ReworkProcedureID = :reworkProcedureID,
  10501. UserID = :userID,
  10502. updateuserid = :updateuserid
  10503. where barcode = :barcode";
  10504. paras = new OracleParameter[]{
  10505. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  10506. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  10507. new OracleParameter(":procedureModel",OracleDbType.Int32,
  10508. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  10509. new OracleParameter(":modelType",OracleDbType.Int32,
  10510. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  10511. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  10512. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  10513. new OracleParameter(":userID",OracleDbType.Int32,
  10514. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  10515. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10516. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10517. };
  10518. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10519. if (UpdateRow == Constant.INT_IS_ZERO)
  10520. {
  10521. // 保存失败
  10522. isError = true;
  10523. break;
  10524. }
  10525. #endregion
  10526. #region 删除生产者和最后一条生产数据
  10527. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  10528. paras = new OracleParameter[]{
  10529. new OracleParameter(":productionDataID",OracleDbType.Int32,
  10530. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10531. //new OracleParameter(":productionDataID2",OracleDbType.Int32,
  10532. // productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10533. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10534. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10535. };
  10536. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  10537. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  10538. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  10539. int? GoodsLevelID = null;
  10540. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  10541. {
  10542. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  10543. }
  10544. //modify end
  10545. sqlString = "update TP_PM_ProductionDataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID;
  10546. if (GoodsLevelID != null)
  10547. {
  10548. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  10549. sqlString += ",GoodsLevelTypeID=12";
  10550. }
  10551. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  10552. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  10553. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10554. if (UpdateRow == Constant.INT_IS_ZERO)
  10555. {
  10556. // 保存失败
  10557. isError = true;
  10558. break;
  10559. }
  10560. #endregion
  10561. #region 删除窑车产品
  10562. sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  10563. paras = new OracleParameter[]{
  10564. new OracleParameter(":barCode",OracleDbType.Varchar2,
  10565. dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  10566. };
  10567. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10568. if (UpdateRow == Constant.INT_IS_ZERO)
  10569. {
  10570. // 保存失败
  10571. isError = true;
  10572. break;
  10573. }
  10574. #endregion
  10575. #region 读取窑车生产数据,进行撤销
  10576. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  10577. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  10578. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  10579. paras = new OracleParameter[]{
  10580. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10581. kilncarid,ParameterDirection.Input),
  10582. new OracleParameter(":accountid",OracleDbType.Int32,
  10583. sUserInfo.AccountID,ParameterDirection.Input),
  10584. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  10585. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  10586. };
  10587. KilnCarBatchNo = dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString();
  10588. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10589. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  10590. {
  10591. //最后窑车生产数据ID赋值 撤二步骤
  10592. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[0]["KilnCarDataID"]);
  10593. sqlString = @"update TP_PM_KilnCarStatus set
  10594. ProductionLineID=:ProductionLineID
  10595. ,ProcedureID=:ProcedureID
  10596. ,ProcedureCode=:ProcedureCode
  10597. ,ProcedureName=:ProcedureName
  10598. ,ProcedureModel=:ProcedureModel
  10599. ,ModelType=:ModelType
  10600. ,PieceType=:PieceType
  10601. ,KilnCarStatus=0,LoadingTime=null,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  10602. where KilnCarID=:KilnCarID";
  10603. paras = new OracleParameter[]{
  10604. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  10605. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  10606. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  10607. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  10608. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  10609. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  10610. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  10611. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  10612. new OracleParameter(":ModelType",OracleDbType.Int32,
  10613. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  10614. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  10615. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  10616. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10617. kilncarid,ParameterDirection.Input),
  10618. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  10619. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  10620. };
  10621. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10622. if (UpdateRow == Constant.INT_IS_ZERO)
  10623. {
  10624. // 保存失败
  10625. isError = true;
  10626. break;
  10627. }
  10628. }
  10629. #endregion
  10630. }
  10631. //modify wangx 20150606 begin
  10632. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID>=" + KilnCarDataID + " and KilnCarBatchNo=" + KilnCarBatchNo;
  10633. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  10634. //modify wangx 20150606 end
  10635. if (isError) //有错误消息
  10636. {
  10637. UpdateRow = -1;//失败
  10638. oracleTrConn.Rollback();
  10639. }
  10640. else
  10641. {
  10642. UpdateRow = 1;//成功
  10643. oracleTrConn.Commit();
  10644. }
  10645. }
  10646. catch (Exception ex)
  10647. {
  10648. oracleTrConn.Rollback();
  10649. throw ex;
  10650. }
  10651. finally
  10652. {
  10653. // 释放资源
  10654. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10655. {
  10656. oracleTrConn.Disconnect();
  10657. }
  10658. }
  10659. return UpdateRow;
  10660. }
  10661. /// <summary>
  10662. /// 在入窑工序检验窑车号是否存在
  10663. /// </summary>
  10664. /// <param name="kilncarcode">窑车编码</param>
  10665. /// <param name="procedureid">工序ID</param>
  10666. /// <param name="sUserInfo">用户基本信息</param>
  10667. /// <returns></returns>
  10668. public static int CheckKilnCarByIntoCar2(string kilncarcode, int procedureid, SUserInfo sUserInfo)
  10669. {
  10670. int UpdateRow = 0;
  10671. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10672. try
  10673. {
  10674. oracleTrConn.Connect();
  10675. // 判断窑车编码是否有效
  10676. string sql = "select kilncarid from tp_mst_kilncar where kilncarcode=:kilncarcode and valueflag=1 and accountid=:accountid";
  10677. OracleParameter[] paras = new OracleParameter[]{
  10678. new OracleParameter(":kilncarcode",OracleDbType.Varchar2, kilncarcode,ParameterDirection.Input),
  10679. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10680. };
  10681. DataSet dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10682. int kilncarid = 0;
  10683. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10684. {
  10685. oracleTrConn.Commit();
  10686. UpdateRow = -99;
  10687. return UpdateRow;//窑车编码无效
  10688. }
  10689. kilncarid = Convert.ToInt32(dsExists.Tables[0].Rows[0]["kilncarid"]);//窑车ID
  10690. //判断此窑车号有无产品
  10691. sql = "select barcode,KilnCarBatchNo from TP_PM_KilnCarGoods where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1";
  10692. paras = new OracleParameter[]{
  10693. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10694. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10695. };
  10696. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sql, paras);
  10697. if (dsGoods != null && dsGoods.Tables[0].Rows.Count == 0)
  10698. {
  10699. oracleTrConn.Commit();
  10700. UpdateRow = -98;
  10701. return UpdateRow;//窑车己无产品
  10702. }
  10703. // 判断窑车编码是否在入窑工序
  10704. sql = "select 1 from TP_PM_InProduction where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and FlowProcedureID=:FlowProcedureID";
  10705. paras = new OracleParameter[]{
  10706. new OracleParameter(":KilnCarID",OracleDbType.Int32, kilncarid,ParameterDirection.Input),
  10707. new OracleParameter(":accountid", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  10708. new OracleParameter(":FlowProcedureID", OracleDbType.Int32, procedureid, ParameterDirection.Input),
  10709. };
  10710. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10711. if (dsExists != null && dsExists.Tables[0].Rows.Count == 0)
  10712. {
  10713. oracleTrConn.Commit();
  10714. UpdateRow = -97;
  10715. return UpdateRow;//窑车号没有入窑,不可以撤销
  10716. }
  10717. int KilnCarDataID = 0;//窑车生产数据ID
  10718. // 遍历窑车产品
  10719. bool isError = false;//默认没有错误
  10720. for (int i = 0; i < dsGoods.Tables[0].Rows.Count; i++)
  10721. {
  10722. #region 先查询生产数据最后3条
  10723. string sqlString = @"select ProductionDataID,
  10724. ProcedureID,
  10725. ProcedureModel,
  10726. ModelType,
  10727. ReworkProcedureID,
  10728. UserID,
  10729. logoid
  10730. from (select ProductionDataID,
  10731. ProcedureID,
  10732. ProcedureModel,
  10733. ModelType,
  10734. ReworkProcedureID,
  10735. UserID,
  10736. logoid
  10737. from Tp_Pm_ProductiondataIn
  10738. where barcode = :barcode
  10739. and valueflag = 1 and ModelType<>2
  10740. order by ProductionDataID desc)
  10741. where rownum <=1";
  10742. paras = new OracleParameter[]{
  10743. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10744. };
  10745. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  10746. if (productionData == null
  10747. || productionData.Tables.Count == Constant.INT_IS_ZERO
  10748. || productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  10749. {
  10750. //errMsg = Messages.MSG_PM_W016;
  10751. isError = true;
  10752. break;
  10753. }
  10754. #endregion
  10755. #region 回滚在产数据
  10756. sqlString = @"update TP_PM_InProduction
  10757. set FlowProcedureID = :flowProcedureID,
  10758. ProcedureModel = :procedureModel,
  10759. ProcedureID = :flowProcedureID,
  10760. ModelType = :modelType,
  10761. ReworkProcedureID = :reworkProcedureID,
  10762. UserID = :userID,
  10763. updateuserid = :updateuserid,
  10764. logoid = :logoid
  10765. where barcode = :barcode";
  10766. paras = new OracleParameter[]{
  10767. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  10768. productionData.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),//2-->1
  10769. new OracleParameter(":procedureModel",OracleDbType.Int32,
  10770. productionData.Tables[0].Rows[0]["procedureModel"],ParameterDirection.Input),
  10771. new OracleParameter(":modelType",OracleDbType.Int32,
  10772. productionData.Tables[0].Rows[0]["modelType"],ParameterDirection.Input),
  10773. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  10774. productionData.Tables[0].Rows[0]["reworkProcedureID"],ParameterDirection.Input),
  10775. new OracleParameter(":userID",OracleDbType.Int32,
  10776. productionData.Tables[0].Rows[0]["userID"],ParameterDirection.Input),
  10777. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10778. new OracleParameter(":barcode",OracleDbType.Varchar2, dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10779. new OracleParameter(":logoid",OracleDbType.Int32, productionData.Tables[0].Rows[0]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[0]["logoid"],ParameterDirection.Input),
  10780. };
  10781. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10782. if (UpdateRow == Constant.INT_IS_ZERO)
  10783. {
  10784. // 保存失败
  10785. isError = true;
  10786. break;
  10787. }
  10788. #endregion
  10789. #region 删除生产者和最后一条生产数据
  10790. //sqlString = "delete TP_PM_Producer where ProductionDataID=:productionDataID";
  10791. paras = new OracleParameter[]{
  10792. new OracleParameter(":productionDataID",OracleDbType.Int32,
  10793. productionData.Tables[0].Rows[0]["productionDataID"],ParameterDirection.Input),
  10794. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10795. dsGoods.Tables[0].Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  10796. };
  10797. //modify 2015/05/13 wangx GoodsLevelTypeID=12 撤销入窑
  10798. sqlString = "select GoodsLevelID,GoodsLevelName,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=12 and AccountID=" + sUserInfo.AccountID + " and ValueFlag=1";
  10799. DataSet dsGoodsLevel = oracleTrConn.GetSqlResultToDs(sqlString, null);
  10800. int? GoodsLevelID = null;
  10801. if (dsGoodsLevel != null && dsGoodsLevel.Tables[0].Rows.Count > 0)
  10802. {
  10803. GoodsLevelID = Convert.ToInt32(dsGoodsLevel.Tables[0].Rows[0]["GoodsLevelID"]);
  10804. }
  10805. //modify end
  10806. sqlString = "update TP_PM_ProductionDataIn set valueflag=0,updateuserid= " + sUserInfo.UserID;
  10807. if (GoodsLevelID != null)
  10808. {
  10809. sqlString += ",GoodsLevelID=" + GoodsLevelID;
  10810. sqlString += ",GoodsLevelTypeID=12";
  10811. }
  10812. //sqlString += " where ProductionDataID=:productionDataID or ProductionDataID=:productionDataID2";
  10813. sqlString += " where barcode=:barcode and ProductionDataID>:productionDataID "; //or ProductionDataID=:productionDataID2
  10814. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10815. if (UpdateRow == Constant.INT_IS_ZERO)
  10816. {
  10817. // 保存失败
  10818. isError = true;
  10819. break;
  10820. }
  10821. #endregion
  10822. //#region 删除窑车产品
  10823. //sqlString = "delete TP_PM_KilnCarGoods where BarCode=:barCode";
  10824. //paras = new OracleParameter[]{
  10825. // new OracleParameter(":barCode",OracleDbType.Varchar2,
  10826. // dsGoods.Tables[0].Rows[i]["barcode"],ParameterDirection.Input),
  10827. //};
  10828. //UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10829. //if (UpdateRow == Constant.INT_IS_ZERO)
  10830. //{
  10831. // // 保存失败
  10832. // isError = true;
  10833. // break;
  10834. //}
  10835. //#endregion
  10836. #region 读取窑车生产数据,进行撤销
  10837. sql = @"select KilnCarDataID, ProductionLineID,ProcedureID,
  10838. ProcedureCode,ProcedureName,ProcedureModel,ModelType,PieceType
  10839. from TP_PM_KilnCarData where KilnCarID=:KilnCarID and accountid=:accountid and valueflag=1 and KilnCarBatchNo=:KilnCarBatchNo order by KilnCarDataID ";
  10840. paras = new OracleParameter[]{
  10841. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10842. kilncarid,ParameterDirection.Input),
  10843. new OracleParameter(":accountid",OracleDbType.Int32,
  10844. sUserInfo.AccountID,ParameterDirection.Input),
  10845. new OracleParameter(":KilnCarBatchNo",OracleDbType.Varchar2,
  10846. dsGoods.Tables[0].Rows[i]["KilnCarBatchNo"].ToString(),ParameterDirection.Input),
  10847. };
  10848. dsExists = oracleTrConn.GetSqlResultToDs(sql, paras);
  10849. if (dsExists != null && dsExists.Tables[0].Rows.Count > 0)
  10850. {
  10851. //最后窑车生产数据ID赋值
  10852. KilnCarDataID = Convert.ToInt32(dsExists.Tables[0].Rows[dsExists.Tables[0].Rows.Count - 1]["KilnCarDataID"]);
  10853. sqlString = @"update TP_PM_KilnCarStatus set
  10854. ProductionLineID=:ProductionLineID
  10855. ,ProcedureID=:ProcedureID
  10856. ,ProcedureCode=:ProcedureCode
  10857. ,ProcedureName=:ProcedureName
  10858. ,ProcedureModel=:ProcedureModel
  10859. ,ModelType=:ModelType
  10860. ,PieceType=:PieceType
  10861. ,KilnCarStatus=0,IntoKilnTime=null,OutKilnTime=null,UnloadingTime=null
  10862. where KilnCarID=:KilnCarID";
  10863. paras = new OracleParameter[]{
  10864. new OracleParameter(":ProductionLineID",OracleDbType.Int32,
  10865. dsExists.Tables[0].Rows[0]["ProductionLineID"],ParameterDirection.Input),
  10866. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  10867. dsExists.Tables[0].Rows[0]["ProcedureID"],ParameterDirection.Input),
  10868. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2,
  10869. dsExists.Tables[0].Rows[0]["ProcedureCode"].ToString(),ParameterDirection.Input),
  10870. new OracleParameter(":ProcedureModel",OracleDbType.Varchar2,
  10871. dsExists.Tables[0].Rows[0]["ProcedureModel"].ToString(),ParameterDirection.Input),
  10872. new OracleParameter(":ModelType",OracleDbType.Int32,
  10873. Convert.ToInt32(dsExists.Tables[0].Rows[0]["ModelType"]),ParameterDirection.Input),
  10874. new OracleParameter(":PieceType",OracleDbType.Varchar2,
  10875. dsExists.Tables[0].Rows[0]["PieceType"].ToString(),ParameterDirection.Input),
  10876. new OracleParameter(":KilnCarID",OracleDbType.Int32,
  10877. kilncarid,ParameterDirection.Input),
  10878. new OracleParameter(":ProcedureName",OracleDbType.Varchar2,
  10879. dsExists.Tables[0].Rows[0]["ProcedureName"].ToString(),ParameterDirection.Input),
  10880. };
  10881. UpdateRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10882. if (UpdateRow == Constant.INT_IS_ZERO)
  10883. {
  10884. // 保存失败
  10885. isError = true;
  10886. break;
  10887. }
  10888. }
  10889. #endregion
  10890. }
  10891. //modify wangx 20150606 begin
  10892. string updateSql = "update TP_PM_KilnCarData set valueflag=0,UpdateUserID=" + sUserInfo.UserID + " where KilnCarDataID=" + KilnCarDataID;
  10893. int row = oracleTrConn.ExecuteNonQuery(updateSql);
  10894. //modify wangx 20150606 end
  10895. if (isError) //有错误消息
  10896. {
  10897. UpdateRow = -1;//失败
  10898. oracleTrConn.Rollback();
  10899. }
  10900. else
  10901. {
  10902. UpdateRow = 1;//成功
  10903. oracleTrConn.Commit();
  10904. }
  10905. }
  10906. catch (Exception ex)
  10907. {
  10908. oracleTrConn.Rollback();
  10909. throw ex;
  10910. }
  10911. finally
  10912. {
  10913. // 释放资源
  10914. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  10915. {
  10916. oracleTrConn.Disconnect();
  10917. }
  10918. }
  10919. return UpdateRow;
  10920. }
  10921. /// <summary>
  10922. /// 保存盘点单
  10923. /// </summary>
  10924. /// <param name="inProductionEntity"></param>
  10925. /// <param name="remarks"></param>
  10926. /// <param name="sUserInfo"></param>
  10927. /// <returns></returns>
  10928. public static int SaveInChecked(InProductionEntity[] inProductionEntity, string remarks, SUserInfo sUserInfo)
  10929. {
  10930. int returnRows = 0;
  10931. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  10932. try
  10933. {
  10934. if (inProductionEntity[0].ReworkProcedureID == 0)
  10935. {
  10936. //盘点单号
  10937. string InCheckedNo = string.Format("IPC{0}", DateTime.Now.ToString("yyyyMMddHHmmss"));
  10938. //获得账务日期
  10939. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  10940. //备注
  10941. string Remarks = remarks;
  10942. oracleTrConn.Connect();
  10943. //盘点单ID
  10944. string sql = "select SEQ_PM_InChecked_ID.nextval from dual";
  10945. int InCheckedID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  10946. #region 插入盘点单主表信息
  10947. sql = @"insert into TP_PM_InChecked
  10948. (
  10949. InCheckedID,
  10950. InCheckedNo,
  10951. AccountDate,
  10952. Remarks,
  10953. AccountID,
  10954. CreateUserID,
  10955. UpdateUserID,
  10956. INCHECKNAME
  10957. ) values
  10958. ( :InCheckedID,
  10959. :InCheckedNo,
  10960. :AccountDate,
  10961. :Remarks,
  10962. :AccountID,
  10963. :CreateUserID,
  10964. :UpdateUserID,
  10965. :INCHECKNAME
  10966. )";
  10967. OracleParameter[] Paras = new OracleParameter[] {
  10968. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  10969. InCheckedID,ParameterDirection.Input),
  10970. new OracleParameter(":InCheckedNo",OracleDbType.NVarchar2,
  10971. InCheckedNo,ParameterDirection.Input),
  10972. new OracleParameter(":AccountDate",OracleDbType.Date,
  10973. accountDate,ParameterDirection.Input),
  10974. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  10975. Remarks,ParameterDirection.Input),
  10976. new OracleParameter(":AccountID",OracleDbType.Int32,
  10977. sUserInfo.AccountID,ParameterDirection.Input),
  10978. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  10979. sUserInfo.UserID,ParameterDirection.Input),
  10980. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  10981. sUserInfo.UserID,ParameterDirection.Input),
  10982. new OracleParameter(":INCHECKNAME",OracleDbType.NVarchar2,
  10983. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  10984. };
  10985. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  10986. #endregion
  10987. //string barcodes = "";
  10988. List<OracleParameter> parameters = null;
  10989. //int row = 0;
  10990. //foreach (InProductionEntity entity in inProductionEntity)
  10991. //{
  10992. // barcodes += entity.BarCode + ",";
  10993. // row++;
  10994. // if (row > 15) //为了15查数据库一次
  10995. // {
  10996. // barcodes = barcodes.TrimEnd(',') + '|';
  10997. // row = 0;//重置
  10998. // }
  10999. //}
  11000. //barcodes = barcodes.TrimEnd(',');
  11001. //string[] subsplit = barcodes.Split('|');
  11002. // foreach (InProductionEntity entity in inProductionEntity)foreach (InProductionEntity entity in inProductionEntity)
  11003. //foreach (string entity in subsplit)
  11004. //{
  11005. //barcodes += entity.BarCode + ",";
  11006. //barcodes = barcodes.TrimEnd(','); //在产产品是唯一的,直接根据条码查询,并插入到盘点明细
  11007. sql = @"
  11008. insert into TP_PM_InCheckedDetail
  11009. (
  11010. InCheckedID,
  11011. BarCode,
  11012. InCheckedNo,
  11013. ProductionLineID,
  11014. ProductionLineCode,
  11015. ProductionLineName,
  11016. ProcedureID,
  11017. ProcedureTime,
  11018. ProcedureModel,
  11019. ModelType,
  11020. DefectFlag,
  11021. ReworkProcedureID,
  11022. IsPublicBody,
  11023. IsReFire,
  11024. SpecialRepairFlag,
  11025. GoodsLevelID,
  11026. GoodsLevelTypeID,
  11027. GoodsID,
  11028. GoodsCode,
  11029. GoodsName,
  11030. UserID,
  11031. GroutingDailyID,
  11032. GroutingDailyDetailID,
  11033. GroutingDate,
  11034. GroutingLineID,
  11035. GroutingLineCode,
  11036. GroutingLineName,
  11037. GMouldTypeID,
  11038. CanManyTimes,
  11039. GroutingLineDetailID,
  11040. GroutingMouldCode,
  11041. MouldCode,
  11042. GroutingUserID,
  11043. GroutingUserCode,
  11044. GroutingNum,
  11045. Remarks,
  11046. KilnID,
  11047. KilnCode,
  11048. KilnName,
  11049. KilnCarID,
  11050. KilnCarCode,
  11051. KilnCarName,
  11052. KilnCarBatchNo,
  11053. KilnCarPosition,
  11054. AccountID,
  11055. CreateUserID,
  11056. UpdateUserID,
  11057. valueflag,
  11058. logoid,
  11059. ISREWORKFLAG,INSCRAPFLAG
  11060. )
  11061. select
  11062. :InCheckedID,
  11063. inp.BarCode,
  11064. :InCheckedNo,
  11065. inp.ProductionLineID,
  11066. inp.ProductionLineCode,
  11067. inp.ProductionLineName,
  11068. inp.ProcedureID,
  11069. inp.ProcedureTime,
  11070. inp.ProcedureModel,
  11071. inp.ModelType,
  11072. inp.DefectFlag,
  11073. inp.ReworkProcedureID,
  11074. inp.IsPublicBody,
  11075. inp.IsReFire,
  11076. inp.SpecialRepairFlag,
  11077. inp.GoodsLevelID,
  11078. inp.GoodsLevelTypeID,
  11079. inp.GoodsID,
  11080. inp.GoodsCode,
  11081. inp.GoodsName,
  11082. inp.UserID,
  11083. inp.GroutingDailyID,
  11084. inp.GroutingDailyDetailID,
  11085. inp.GroutingDate,
  11086. inp.GroutingLineID,
  11087. inp.GroutingLineCode,
  11088. inp.GroutingLineName,
  11089. inp.GMouldTypeID,
  11090. inp.CanManyTimes,
  11091. inp.GroutingLineDetailID,
  11092. inp.GroutingMouldCode,
  11093. inp.MouldCode,
  11094. inp.GroutingUserID,
  11095. inp.GroutingUserCode,
  11096. inp.GroutingNum,
  11097. inp.Remarks,
  11098. inp.KilnID,
  11099. inp.KilnCode,
  11100. inp.KilnName,
  11101. inp.KilnCarID,
  11102. inp.KilnCarCode,
  11103. inp.KilnCarName,
  11104. inp.KilnCarBatchNo,
  11105. inp.KilnCarPosition,
  11106. :AccountID,
  11107. :CreateUserID,
  11108. :UpdateUserID,
  11109. 1,
  11110. inp.logoid,
  11111. inp.ISREWORKFLAG,inp.INSCRAPFLAG
  11112. from TP_PM_InProduction inp
  11113. LEFT JOIN tp_mst_goods g
  11114. ON g.goodsid = inp.goodsid
  11115. LEFT JOIN tp_mst_goodsType gt
  11116. ON gt.goodstypeid = g.goodstypeid
  11117. where 1=1
  11118. ";
  11119. //sql += "AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ";
  11120. parameters = new List<OracleParameter>();
  11121. // 工序IDS
  11122. if (!string.IsNullOrEmpty(inProductionEntity[0].ProcedureIDS))
  11123. {
  11124. sql += "AND instr(','||:ProcedureIDS||',',','||inp.FlowProcedureID||',')>0 ";
  11125. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, inProductionEntity[0].ProcedureIDS, ParameterDirection.Input));
  11126. }
  11127. // 完成日期
  11128. if (inProductionEntity[0].StartCompleteDate != null)
  11129. {
  11130. sql = sql + " AND inp.ProcedureTime >= :Createdate AND inp.ProcedureTime <= :EndDate ";
  11131. parameters.Add(new OracleParameter(":Createdate", OracleDbType.Date, inProductionEntity[0].StartCompleteDate, ParameterDirection.Input));
  11132. parameters.Add(new OracleParameter(":EndDate", OracleDbType.Date, inProductionEntity[0].EndCompleteDate, ParameterDirection.Input));
  11133. }
  11134. // 编码IDS
  11135. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsCodeList))
  11136. {
  11137. sql += "AND instr(','||:GoodsIDS||',',','||inp.GoodsID||',')>0 ";
  11138. parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, inProductionEntity[0].GoodsCodeList, ParameterDirection.Input));
  11139. }
  11140. // 产品类型
  11141. if (!string.IsNullOrEmpty(inProductionEntity[0].GoodsTypeCode))
  11142. {
  11143. sql += "AND instr(gt.goodstypecode, :GoodsTypeCode)=1 ";
  11144. parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, inProductionEntity[0].GoodsTypeCode, ParameterDirection.Input));
  11145. }
  11146. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  11147. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  11148. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  11149. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11150. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11151. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  11152. #region 插入盘点工号列表
  11153. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  11154. {
  11155. if (r["userid"] != DBNull.Value)
  11156. {
  11157. sql = @" Insert into tp_pm_incheckeduser
  11158. (
  11159. incheckedid,
  11160. userCode,
  11161. userid
  11162. )
  11163. values
  11164. (
  11165. :inchecked,
  11166. :userCode,
  11167. :userid
  11168. )
  11169. ";
  11170. Paras = new OracleParameter[] {
  11171. new OracleParameter(":inchecked",OracleDbType.Int32,
  11172. InCheckedID,ParameterDirection.Input),
  11173. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  11174. r["userCode"],ParameterDirection.Input),
  11175. new OracleParameter(":userid",OracleDbType.Int32,
  11176. r["userid"],ParameterDirection.Input),
  11177. };
  11178. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11179. }
  11180. }
  11181. #endregion
  11182. }
  11183. else
  11184. {
  11185. string sql = @"Update TP_PM_InChecked set Incheckname=:Incheckname,Remarks=:Remarks,updateuserid=:updateuserid where InCheckedID=:InCheckedID";
  11186. OracleParameter[] Paras = new OracleParameter[] {
  11187. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11188. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11189. new OracleParameter(":Incheckname",OracleDbType.NVarchar2,
  11190. inProductionEntity[0].CompleteProcedureName,ParameterDirection.Input),
  11191. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  11192. remarks,ParameterDirection.Input),
  11193. new OracleParameter(":updateuserid",OracleDbType.Int32,
  11194. sUserInfo.UserID,ParameterDirection.Input),
  11195. };
  11196. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11197. sql = @"delete from tp_pm_incheckeduser where InCheckedID=:InCheckedID";
  11198. Paras = new OracleParameter[] {
  11199. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11200. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11201. };
  11202. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11203. #region 插入盘点工号列表
  11204. foreach (DataRow r in inProductionEntity[0].UserTable.Rows)
  11205. {
  11206. if (string.IsNullOrEmpty(r["userCode"].ToString()) ||
  11207. string.IsNullOrEmpty(r["userid"].ToString()))
  11208. {
  11209. continue;
  11210. }
  11211. sql = @" Insert into tp_pm_incheckeduser
  11212. (
  11213. incheckedid,
  11214. userCode,
  11215. userid
  11216. )
  11217. values
  11218. (
  11219. :inchecked,
  11220. :userCode,
  11221. :userid
  11222. )
  11223. ";
  11224. Paras = new OracleParameter[] {
  11225. new OracleParameter(":inchecked",OracleDbType.Int32,
  11226. inProductionEntity[0].ReworkProcedureID,ParameterDirection.Input),
  11227. new OracleParameter(":userCode",OracleDbType.NVarchar2,
  11228. r["userCode"],ParameterDirection.Input),
  11229. new OracleParameter(":userid",OracleDbType.Int32,
  11230. r["userid"],ParameterDirection.Input),
  11231. };
  11232. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11233. }
  11234. #endregion
  11235. }
  11236. if (returnRows == 0)
  11237. {
  11238. oracleTrConn.Rollback();
  11239. oracleTrConn.Disconnect();
  11240. }
  11241. else
  11242. {
  11243. oracleTrConn.Commit();
  11244. oracleTrConn.Disconnect();
  11245. }
  11246. }
  11247. catch (Exception ex)
  11248. {
  11249. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11250. {
  11251. oracleTrConn.Rollback();
  11252. oracleTrConn.Disconnect();
  11253. }
  11254. throw ex;
  11255. }
  11256. finally
  11257. {
  11258. if (oracleTrConn.ConnState == ConnectionState.Open)
  11259. {
  11260. oracleTrConn.Disconnect();
  11261. }
  11262. }
  11263. return returnRows;
  11264. }
  11265. /// <summary>
  11266. /// 更新盘点单
  11267. /// </summary>
  11268. /// <param name="InCheckedID">盘点单号</param>
  11269. /// <param name="BarCode">产品条码</param>
  11270. /// <param name="sUserInfo">用户基本信息</param>
  11271. /// <returns></returns>
  11272. public static int UpdateInChecked(int InCheckedID, string BarCode, SUserInfo sUserInfo)
  11273. {
  11274. int returnRows = 0;
  11275. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11276. try
  11277. {
  11278. // 转换条码
  11279. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  11280. OracleParameter[] paras1 = new OracleParameter[]{
  11281. new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input),
  11282. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  11283. };
  11284. BarCode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  11285. string sql = @"select 1 from TP_PM_InProduction where barcode=:barcode";
  11286. OracleParameter[] Paras = new OracleParameter[] {
  11287. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  11288. BarCode,ParameterDirection.Input)
  11289. };
  11290. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11291. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11292. {
  11293. returnRows = -2;//该产品不在生产线
  11294. return returnRows;
  11295. }
  11296. sql = @"select InCheckedFlag,CHECKEDUSERID as Userid from TP_PM_InCheckedDetail where InCheckedID=:InCheckedID and BarCode=:BarCode and Valueflag=1";
  11297. Paras = new OracleParameter[] {
  11298. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11299. InCheckedID,ParameterDirection.Input),
  11300. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  11301. BarCode,ParameterDirection.Input)
  11302. };
  11303. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11304. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11305. {
  11306. sql = @"select InCheckedNo from TP_PM_InChecked where InCheckedID=:InCheckedID";
  11307. Paras = new OracleParameter[] {
  11308. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11309. InCheckedID,ParameterDirection.Input),
  11310. };
  11311. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11312. string InCheckedNo = ds.Tables[0].Rows[0]["InCheckedNo"].ToString();//肯定会有盘点单号,所以就没有加判断
  11313. //在产不在生产线上,属于盘赢
  11314. sql = @"
  11315. insert into TP_PM_InCheckedDetail
  11316. (
  11317. InCheckedID,
  11318. BarCode,
  11319. InCheckedNo,
  11320. ProductionLineID,
  11321. ProductionLineCode,
  11322. ProductionLineName,
  11323. ProcedureID,
  11324. ProcedureTime,
  11325. ProcedureModel,
  11326. ModelType,
  11327. DefectFlag,
  11328. ReworkProcedureID,
  11329. IsPublicBody,
  11330. IsReFire,
  11331. SpecialRepairFlag,
  11332. GoodsLevelID,
  11333. GoodsLevelTypeID,
  11334. GoodsID,
  11335. GoodsCode,
  11336. GoodsName,
  11337. UserID,
  11338. GroutingDailyID,
  11339. GroutingDailyDetailID,
  11340. GroutingDate,
  11341. GroutingLineID,
  11342. GroutingLineCode,
  11343. GroutingLineName,
  11344. GMouldTypeID,
  11345. CanManyTimes,
  11346. GroutingLineDetailID,
  11347. GroutingMouldCode,
  11348. MouldCode,
  11349. GroutingUserID,
  11350. GroutingUserCode,
  11351. GroutingNum,
  11352. Remarks,
  11353. KilnID,
  11354. KilnCode,
  11355. KilnName,
  11356. KilnCarID,
  11357. KilnCarCode,
  11358. KilnCarName,
  11359. KilnCarBatchNo,
  11360. KilnCarPosition,
  11361. AccountID,
  11362. CreateUserID,
  11363. UpdateUserID,
  11364. InCheckedFlag,
  11365. CheckedDate,
  11366. CheckedUserID,
  11367. logoid
  11368. )
  11369. select
  11370. :InCheckedID,
  11371. BarCode,
  11372. :InCheckedNo,
  11373. ProductionLineID,
  11374. ProductionLineCode,
  11375. ProductionLineName,
  11376. ProcedureID,
  11377. ProcedureTime,
  11378. ProcedureModel,
  11379. ModelType,
  11380. DefectFlag,
  11381. ReworkProcedureID,
  11382. IsPublicBody,
  11383. IsReFire,
  11384. SpecialRepairFlag,
  11385. GoodsLevelID,
  11386. GoodsLevelTypeID,
  11387. GoodsID,
  11388. GoodsCode,
  11389. GoodsName,
  11390. UserID,
  11391. GroutingDailyID,
  11392. GroutingDailyDetailID,
  11393. GroutingDate,
  11394. GroutingLineID,
  11395. GroutingLineCode,
  11396. GroutingLineName,
  11397. GMouldTypeID,
  11398. CanManyTimes,
  11399. GroutingLineDetailID,
  11400. GroutingMouldCode,
  11401. MouldCode,
  11402. GroutingUserID,
  11403. GroutingUserCode,
  11404. GroutingNum,
  11405. Remarks,
  11406. KilnID,
  11407. KilnCode,
  11408. KilnName,
  11409. KilnCarID,
  11410. KilnCarCode,
  11411. KilnCarName,
  11412. KilnCarBatchNo,
  11413. KilnCarPosition,
  11414. :AccountID,
  11415. :CreateUserID,
  11416. :UpdateUserID,
  11417. :InCheckedFlag,
  11418. sysdate,
  11419. :CheckedUserID,
  11420. logoid
  11421. from TP_PM_InProduction where 1=1
  11422. ";
  11423. ;
  11424. List<OracleParameter> parameters = new List<OracleParameter>();
  11425. sql += "AND instr(','||:barcode||',',','||TP_PM_InProduction.barcode||',')>0 ";
  11426. parameters.Add(new OracleParameter(":InCheckedID", OracleDbType.Int32, InCheckedID, ParameterDirection.Input));
  11427. parameters.Add(new OracleParameter(":InCheckedNo", OracleDbType.Varchar2, InCheckedNo, ParameterDirection.Input));
  11428. parameters.Add(new OracleParameter(":barcode", OracleDbType.NVarchar2, BarCode, ParameterDirection.Input));
  11429. parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input));
  11430. parameters.Add(new OracleParameter(":CreateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11431. parameters.Add(new OracleParameter(":UpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11432. parameters.Add(new OracleParameter(":InCheckedFlag", OracleDbType.Int32, Constant.InCheckedFlag.InCheckedWin.GetHashCode(), ParameterDirection.Input));
  11433. parameters.Add(new OracleParameter(":CheckedUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input));
  11434. returnRows += oracleTrConn.ExecuteNonQuery(sql, parameters.ToArray());
  11435. returnRows = 10;
  11436. }
  11437. else
  11438. {
  11439. int InCheckedFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["InCheckedFlag"]);
  11440. if (InCheckedFlag == 1)
  11441. {
  11442. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  11443. {
  11444. returnRows = -22;//己被其他工号盘点
  11445. }
  11446. else
  11447. {
  11448. returnRows = -24;//己被自己工号盘点
  11449. }
  11450. return returnRows;
  11451. }
  11452. else if (InCheckedFlag == 2)
  11453. {
  11454. if (Convert.ToInt32(ds.Tables[0].Rows[0]["Userid"]) != sUserInfo.UserID)
  11455. {
  11456. returnRows = -23;//己被其他工号盘盈
  11457. }
  11458. else
  11459. {
  11460. returnRows = -25;//己被自己工号盘盈
  11461. }
  11462. return returnRows;
  11463. }
  11464. sql = "update TP_PM_InCheckedDetail set InCheckedFlag=:InCheckedFlag,CheckedDate=sysdate,CheckedUserID=:CheckedUserID,UpdateUserID=:UpdateUserID where InCheckedID=:InCheckedID and BarCode=:BarCode and InCheckedFlag=:whereInCheckedFlag";
  11465. Paras = new OracleParameter[] {
  11466. new OracleParameter(":CheckedUserID",OracleDbType.Int32,
  11467. sUserInfo.UserID,ParameterDirection.Input),
  11468. new OracleParameter(":InCheckedFlag",OracleDbType.Int32,
  11469. Constant.InCheckedFlag.InCheckeded,ParameterDirection.Input),
  11470. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11471. InCheckedID,ParameterDirection.Input),
  11472. new OracleParameter(":BarCode",OracleDbType.NVarchar2,
  11473. BarCode,ParameterDirection.Input),
  11474. new OracleParameter(":whereInCheckedFlag",OracleDbType.Int32,
  11475. Constant.InCheckedFlag.InCheckedNo,ParameterDirection.Input),
  11476. new OracleParameter(":UpdateUserID",OracleDbType.Int32,
  11477. sUserInfo.UserID,ParameterDirection.Input),
  11478. };
  11479. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11480. returnRows = 1;//防止多次盘点此条码,下面在回滚回来,代码是有作用
  11481. }
  11482. if (returnRows == 0)
  11483. {
  11484. oracleTrConn.Rollback();
  11485. oracleTrConn.Disconnect();
  11486. }
  11487. else
  11488. {
  11489. oracleTrConn.Commit();
  11490. oracleTrConn.Disconnect();
  11491. }
  11492. }
  11493. catch (Exception ex)
  11494. {
  11495. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11496. {
  11497. oracleTrConn.Rollback();
  11498. oracleTrConn.Disconnect();
  11499. }
  11500. throw ex;
  11501. }
  11502. finally
  11503. {
  11504. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11505. {
  11506. oracleTrConn.Disconnect();
  11507. }
  11508. }
  11509. return returnRows;
  11510. }
  11511. /// <summary>
  11512. /// 停用盘点单
  11513. /// </summary>
  11514. /// <param name="InCheckedID">盘点单号</param>
  11515. /// <returns></returns>
  11516. public static int DisableInChecked(int InCheckedID, SUserInfo sUserInfo)
  11517. {
  11518. int returnRows = 0;
  11519. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11520. try
  11521. {
  11522. string sql = "update TP_PM_InChecked set valueflag='0', updateuserid=:updateuserid where InCheckedID=:InCheckedID and valueflag='1'";
  11523. OracleParameter[] Paras = new OracleParameter[] {
  11524. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  11525. InCheckedID,ParameterDirection.Input),
  11526. new OracleParameter(":updateuserid",OracleDbType.Int32,
  11527. sUserInfo.UserID,ParameterDirection.Input)
  11528. };
  11529. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  11530. if (returnRows == 0)
  11531. {
  11532. oracleTrConn.Rollback();
  11533. oracleTrConn.Disconnect();
  11534. }
  11535. else
  11536. {
  11537. oracleTrConn.Commit();
  11538. oracleTrConn.Disconnect();
  11539. }
  11540. }
  11541. catch (Exception ex)
  11542. {
  11543. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11544. {
  11545. oracleTrConn.Rollback();
  11546. oracleTrConn.Disconnect();
  11547. }
  11548. throw ex;
  11549. }
  11550. finally
  11551. {
  11552. if (oracleTrConn.ConnState == ConnectionState.Open)
  11553. {
  11554. oracleTrConn.Disconnect();
  11555. }
  11556. }
  11557. return returnRows;
  11558. }
  11559. /// <summary>
  11560. /// 撤销包装
  11561. /// </summary>
  11562. /// <param name="barcode">产品条码</param>
  11563. /// <returns></returns>
  11564. public static ServiceResultEntity AddChancelFinishedproduct(string barcode, SUserInfo sUserInfo)
  11565. {
  11566. ServiceResultEntity entity = new ServiceResultEntity();
  11567. int returnRows = 0;
  11568. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11569. try
  11570. {
  11571. // 转换注浆条码
  11572. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  11573. DateTime? createTime = null;
  11574. // 1 条码是否在产成品表中
  11575. string sql = "select createTime,FHUserCode,GoodsCode from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  11576. OracleParameter[] Paras = new OracleParameter[] {
  11577. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11578. barcode,ParameterDirection.Input)
  11579. };
  11580. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11581. if (ds.Tables[0].Rows.Count == 0)
  11582. {
  11583. //不存在产成品
  11584. returnRows = -1;
  11585. oracleTrConn.Rollback();
  11586. oracleTrConn.Disconnect();
  11587. entity.Result = returnRows;
  11588. return entity;
  11589. }
  11590. else
  11591. {
  11592. //wangx 2017-02-10 已经交接不允许撤销
  11593. if (!string.IsNullOrEmpty(ds.Tables[0].Rows[0]["FHUserCode"].ToString()))
  11594. {
  11595. entity.Result = -200; //已交接,不能再次进行交接
  11596. entity.Message = "此产品【" + ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "】已交接,不能进行该操作";
  11597. oracleTrConn.Rollback();
  11598. oracleTrConn.Disconnect();
  11599. return entity;
  11600. }
  11601. //wangx 2017-02-10 end
  11602. createTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["createTime"]); // 成品时间
  11603. }
  11604. #region 是否启用成品撤销限制天数
  11605. if (createTime != null)
  11606. {
  11607. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  11608. Paras = new OracleParameter[] {
  11609. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  11610. Constant.SettingType.S_PM_005.ToString(),ParameterDirection.Input),
  11611. new OracleParameter(":accountid",OracleDbType.Int32,
  11612. sUserInfo.AccountID,ParameterDirection.Input)
  11613. };
  11614. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11615. if (ds != null && ds.Tables[0].Rows.Count > 0)
  11616. {
  11617. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  11618. {
  11619. // 开启了限制
  11620. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(createTime),
  11621. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_005.ToString(), sUserInfo);
  11622. if (Convert.ToInt32(resultEntity.Result) < 0)
  11623. {
  11624. //超过成品撤销限制天数
  11625. returnRows = -200;
  11626. oracleTrConn.Rollback();
  11627. oracleTrConn.Disconnect();
  11628. entity.Result = returnRows;
  11629. entity.Message = resultEntity.Message;
  11630. return entity;
  11631. }
  11632. }
  11633. }
  11634. }
  11635. #endregion
  11636. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  11637. Paras = new OracleParameter[] {
  11638. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11639. barcode,ParameterDirection.Input)
  11640. };
  11641. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11642. if (ds.Tables[0].Rows.Count == 0)
  11643. {
  11644. // 2 生产数据恢复到在产生产数据
  11645. sql = @"insert into tp_pm_productiondatain
  11646. (
  11647. ProductionDataID,
  11648. BarCode,
  11649. CentralizedBatchNo,
  11650. ProductionLineID,
  11651. ProductionLineCode,
  11652. ProductionLineName,
  11653. ProcedureID,
  11654. ProcedureCode,
  11655. ProcedureName,
  11656. ProcedureModel,
  11657. ModelType,
  11658. PieceType,
  11659. IsReworked,
  11660. NodeType,
  11661. IsPublicBody,
  11662. IsReFire,
  11663. GoodsLevelID,
  11664. GoodsLevelTypeID,
  11665. SpecialRepairFlag,
  11666. OrganizationID,
  11667. GoodsID,
  11668. GoodsCode,
  11669. GoodsName,
  11670. UserID,
  11671. UserCode,
  11672. UserName,
  11673. ClassesSettingID,
  11674. KilnID,
  11675. KilnCode,
  11676. KilnName,
  11677. KilnCarID,
  11678. KilnCarCode,
  11679. KilnCarName,
  11680. KilnCarBatchNo,
  11681. KilnCarPosition,
  11682. ReworkProcedureID,
  11683. ReworkProcedureCode,
  11684. ReworkProcedureName,
  11685. GroutingDailyID,
  11686. GroutingDailyDetailID,
  11687. GroutingLineID,
  11688. GroutingLineCode,
  11689. GroutingLineName,
  11690. GMouldTypeID,
  11691. CanManyTimes,
  11692. GroutingLineDetailID,
  11693. GroutingDate,
  11694. GroutingMouldCode,
  11695. MouldCode,
  11696. GroutingUserID,
  11697. GroutingUserCode,
  11698. GroutingNum,
  11699. Remarks,
  11700. AccountDate,
  11701. SettlementFlag,
  11702. AccountID,
  11703. ValueFlag,
  11704. CreateTime,
  11705. CreateUserID,
  11706. UpdateTime,
  11707. UpdateUserID,
  11708. OPTimeStamp,
  11709. TriggerFlag,
  11710. LogoID,
  11711. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  11712. )
  11713. select
  11714. ProductionDataID,
  11715. BarCode,
  11716. CentralizedBatchNo,
  11717. ProductionLineID,
  11718. ProductionLineCode,
  11719. ProductionLineName,
  11720. ProcedureID,
  11721. ProcedureCode,
  11722. ProcedureName,
  11723. ProcedureModel,
  11724. ModelType,
  11725. PieceType,
  11726. IsReworked,
  11727. NodeType,
  11728. IsPublicBody,
  11729. IsReFire,
  11730. GoodsLevelID,
  11731. GoodsLevelTypeID,
  11732. SpecialRepairFlag,
  11733. OrganizationID,
  11734. GoodsID,
  11735. GoodsCode,
  11736. GoodsName,
  11737. UserID,
  11738. UserCode,
  11739. UserName,
  11740. ClassesSettingID,
  11741. KilnID,
  11742. KilnCode,
  11743. KilnName,
  11744. KilnCarID,
  11745. KilnCarCode,
  11746. KilnCarName,
  11747. KilnCarBatchNo,
  11748. KilnCarPosition,
  11749. ReworkProcedureID,
  11750. ReworkProcedureCode,
  11751. ReworkProcedureName,
  11752. GroutingDailyID,
  11753. GroutingDailyDetailID,
  11754. GroutingLineID,
  11755. GroutingLineCode,
  11756. GroutingLineName,
  11757. GMouldTypeID,
  11758. CanManyTimes,
  11759. GroutingLineDetailID,
  11760. GroutingDate,
  11761. GroutingMouldCode,
  11762. MouldCode,
  11763. GroutingUserID,
  11764. GroutingUserCode,
  11765. GroutingNum,
  11766. Remarks,
  11767. AccountDate,
  11768. SettlementFlag,
  11769. AccountID,
  11770. ValueFlag,
  11771. CreateTime,
  11772. CreateUserID,
  11773. UpdateTime,
  11774. UpdateUserID,
  11775. OPTimeStamp,
  11776. 1,
  11777. LogoID,
  11778. BackOutTime,BackOutUserID,BackOutUserCode,CheckTime
  11779. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  11780. ";
  11781. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11782. }
  11783. // 3 停用在产生产数据包装数据
  11784. sql = "update TP_PM_ProductionDataIn set valueflag=0,updateuserID=" + sUserInfo.UserID
  11785. + " where ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionDataIn where barcode=:barcode and valueflag=1)";
  11786. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11787. // 4 插入在产数据
  11788. sql = @"insert into TP_PM_InProduction
  11789. (
  11790. BarCode,
  11791. ProductionLineID,
  11792. ProductionLineCode,
  11793. ProductionLineName,
  11794. FlowProcedureID,
  11795. FlowProcedureTime,
  11796. ProcedureID,
  11797. ProcedureTime,
  11798. ProductionDataID,
  11799. ProcedureModel,
  11800. ModelType,
  11801. DefectFlag,
  11802. ReworkProcedureID,
  11803. IsPublicBody,
  11804. IsReFire,
  11805. SpecialRepairFlag,
  11806. GoodsLevelID,
  11807. GoodsLevelTypeID,
  11808. GoodsID,
  11809. GoodsCode,
  11810. GoodsName,
  11811. UserID,
  11812. GroutingDailyID,
  11813. GroutingDailyDetailID,
  11814. GroutingDate,
  11815. GroutingLineID,
  11816. GroutingLineCode,
  11817. GroutingLineName,
  11818. GMouldTypeID,
  11819. CanManyTimes,
  11820. GroutingLineDetailID,
  11821. GroutingMouldCode,
  11822. MouldCode,
  11823. GroutingUserID,
  11824. GroutingUserCode,
  11825. GroutingNum,
  11826. Remarks,
  11827. KilnID,
  11828. KilnCode,
  11829. KilnName,
  11830. KilnCarID,
  11831. KilnCarCode,
  11832. KilnCarName,
  11833. KilnCarBatchNo,
  11834. KilnCarPosition,
  11835. AccountID,
  11836. ValueFlag,
  11837. CreateTime,
  11838. CreateUserID,
  11839. UpdateTime,
  11840. UpdateUserID,
  11841. OPTimeStamp,
  11842. LogoID
  11843. )
  11844. select
  11845. BarCode,
  11846. ProductionLineID,
  11847. ProductionLineCode,
  11848. ProductionLineName,
  11849. ProcedureID,
  11850. CreateTime,
  11851. ProcedureID,
  11852. CreateTime,
  11853. ProductionDataID,
  11854. ProcedureModel,
  11855. ModelType,
  11856. 0,
  11857. ReworkProcedureID,
  11858. IsPublicBody,
  11859. IsReFire,
  11860. SpecialRepairFlag,
  11861. GoodsLevelID,
  11862. GoodsLevelTypeID,
  11863. GoodsID,
  11864. GoodsCode,
  11865. GoodsName,
  11866. UserID,
  11867. GroutingDailyID,
  11868. GroutingDailyDetailID,
  11869. GroutingDate,
  11870. GroutingLineID,
  11871. GroutingLineCode,
  11872. GroutingLineName,
  11873. GMouldTypeID,
  11874. CanManyTimes,
  11875. GroutingLineDetailID,
  11876. GroutingMouldCode,
  11877. MouldCode,
  11878. GroutingUserID,
  11879. GroutingUserCode,
  11880. GroutingNum,
  11881. Remarks,
  11882. KilnID,
  11883. KilnCode,
  11884. KilnName,
  11885. KilnCarID,
  11886. KilnCarCode,
  11887. KilnCarName,
  11888. KilnCarBatchNo,
  11889. KilnCarPosition,
  11890. AccountID,
  11891. ValueFlag,
  11892. CreateTime,
  11893. CreateUserID,
  11894. UpdateTime,
  11895. UpdateUserID,
  11896. OPTimeStamp,
  11897. LogoID
  11898. from TP_PM_ProductionData where TP_PM_ProductionData.ProductionDataID=(select max(ProductionDataID) from TP_PM_ProductionData where barcode=:barcode and valueflag=1)";
  11899. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11900. // 5 删除产成品表
  11901. sql = "delete from tp_pm_finishedproduct where barcode=:barcode and valueflag=1";
  11902. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11903. if (returnRows <= 0)
  11904. {
  11905. oracleTrConn.Rollback();
  11906. oracleTrConn.Disconnect();
  11907. }
  11908. else
  11909. {
  11910. oracleTrConn.Commit();
  11911. oracleTrConn.Disconnect();
  11912. }
  11913. }
  11914. catch (Exception ex)
  11915. {
  11916. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11917. {
  11918. oracleTrConn.Rollback();
  11919. oracleTrConn.Disconnect();
  11920. }
  11921. throw ex;
  11922. }
  11923. finally
  11924. {
  11925. if (oracleTrConn.ConnState == ConnectionState.Open)
  11926. {
  11927. oracleTrConn.Disconnect();
  11928. }
  11929. }
  11930. entity.Result = returnRows;
  11931. return entity;
  11932. }
  11933. /// <summary>
  11934. /// 公坯设定
  11935. /// </summary>
  11936. /// <param name="barcode">产品条码</param>
  11937. /// <returns></returns>
  11938. public static int AddPublicBodyProduct(string barcode, SUserInfo sUserInfo)
  11939. {
  11940. int returnRows = 0;
  11941. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11942. try
  11943. {
  11944. // 1 条码是否在在产表中
  11945. string sql = "select ispublicbody from tp_pm_inproduction where barcode=:barcode and valueflag=1";
  11946. OracleParameter[] Paras = new OracleParameter[] {
  11947. new OracleParameter(":barcode",OracleDbType.Varchar2,
  11948. barcode,ParameterDirection.Input)
  11949. };
  11950. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  11951. if (ds.Tables[0].Rows.Count == 0)
  11952. {
  11953. //不存在生产线上,
  11954. returnRows = -1;
  11955. oracleTrConn.Rollback();
  11956. oracleTrConn.Disconnect();
  11957. return returnRows;
  11958. }
  11959. else
  11960. {
  11961. if (ds.Tables[0].Rows[0]["ispublicbody"].ToString() == "1")
  11962. {
  11963. returnRows = -2;
  11964. oracleTrConn.Rollback();
  11965. oracleTrConn.Disconnect();
  11966. return returnRows;
  11967. }
  11968. }
  11969. // 2 TP_PM_GroutingDailyDetail 在产盘点明细
  11970. sql = "update TP_PM_GroutingDailyDetail set ispublicbody=1 where barcode=:barcode";
  11971. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11972. // 3 TP_PM_InCheckedDetail
  11973. sql = "update TP_PM_InCheckedDetail set ispublicbody=1 where barcode=:barcode";
  11974. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11975. // 4 TP_PM_InProduction
  11976. sql = "update TP_PM_InProduction set ispublicbody=1 where barcode=:barcode";
  11977. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11978. // 5 TP_PM_InProductionTrash
  11979. sql = "update TP_PM_InProductionTrash set ispublicbody=1 where barcode=:barcode";
  11980. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11981. // 6 TP_PM_ProductionDataIn
  11982. sql = "update TP_PM_ProductionDataIn set ispublicbody=1 where barcode=:barcode";
  11983. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11984. // 7 TP_PM_ScrapProduct
  11985. sql = "update TP_PM_ScrapProduct set ispublicbody=1 where barcode=:barcode";
  11986. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11987. if (returnRows <= 0)
  11988. {
  11989. oracleTrConn.Rollback();
  11990. oracleTrConn.Disconnect();
  11991. }
  11992. else
  11993. {
  11994. oracleTrConn.Commit();
  11995. oracleTrConn.Disconnect();
  11996. }
  11997. }
  11998. catch (Exception ex)
  11999. {
  12000. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12001. {
  12002. oracleTrConn.Rollback();
  12003. oracleTrConn.Disconnect();
  12004. }
  12005. throw ex;
  12006. }
  12007. finally
  12008. {
  12009. if (oracleTrConn.ConnState == ConnectionState.Open)
  12010. {
  12011. oracleTrConn.Disconnect();
  12012. }
  12013. }
  12014. return returnRows;
  12015. }
  12016. /// <summary>
  12017. /// 交坯保存校验
  12018. /// </summary>
  12019. /// <param name="oracleTrConn">连接对象</param>
  12020. /// <param name="procedureID">工序ID</param>
  12021. /// <param name="barcode">条码</param>
  12022. /// <param name="goodsID">返回的产品ID</param>
  12023. /// <param name="goodsCode">返回的产品Code</param>
  12024. /// <param name="goodsName">返回的产品名称</param>
  12025. /// <param name="groutingUserID">返回的注浆者ID</param>
  12026. /// <returns>string</returns>
  12027. /// <remarks>
  12028. /// 陈冰 2014.09.18 新建
  12029. /// </remarks>
  12030. private static string CheckBarcodeDeliverMud(IDBTransaction oracleTrConn,
  12031. int procedureID,
  12032. string barcode,
  12033. out int goodsID,
  12034. out string goodsCode,
  12035. out string goodsName,
  12036. out string groutingUserCode,
  12037. SUserInfo sUserInfo, ref int? GroutingDailyDetailID
  12038. )
  12039. {
  12040. try
  12041. {
  12042. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  12043. OracleParameter[] paras = new OracleParameter[]{
  12044. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  12045. };
  12046. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  12047. string ErrorMessage = "";
  12048. if (ds != null && ds.Tables[0].Rows.Count == 0)
  12049. {
  12050. ErrorMessage = "无效条码";
  12051. }
  12052. else
  12053. {
  12054. //不等于空的时候
  12055. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  12056. {
  12057. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  12058. string newbarcode = oracleTrConn.GetSqlResultToStr(sql);
  12059. ErrorMessage = "条码已被替换,新条码为" + newbarcode;
  12060. }
  12061. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  12062. {
  12063. ErrorMessage = "产品开模时已损坏";
  12064. }
  12065. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3")
  12066. {
  12067. ErrorMessage = "产品已交坯";
  12068. }
  12069. }
  12070. string sqlString = @"select
  12071. GroutingDailyDetailid,
  12072. GoodsID,
  12073. GoodsCode,
  12074. GoodsName,
  12075. UserCode as GroutingUserCode,
  12076. groutingcount as GroutingNum,
  12077. GroutingMouldCode as MouldCode,
  12078. ispublicbody,
  12079. Groutingdate,
  12080. SpecialRepairFlag
  12081. from
  12082. tp_pm_GroutingDailyDetail
  12083. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  12084. paras = new OracleParameter[]{
  12085. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  12086. };
  12087. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  12088. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  12089. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  12090. goodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  12091. groutingUserCode = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  12092. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  12093. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  12094. paras = new OracleParameter[]{
  12095. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  12096. new OracleParameter(":ProcedureID",procedureID),
  12097. };
  12098. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sqlExistGoods, paras);
  12099. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  12100. {
  12101. ErrorMessage = @"条码[" + barcode +
  12102. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  12103. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  12104. }
  12105. return ErrorMessage;
  12106. }
  12107. catch (Exception ex)
  12108. {
  12109. throw ex;
  12110. }
  12111. }
  12112. /// <summary>
  12113. /// 标准计件(单点采集)
  12114. /// </summary>
  12115. /// <param name="oracleTrConn">数据连接对象</param>
  12116. /// <param name="procedure">工序对象</param>
  12117. /// <param name="barcodeTable">条码信息</param>
  12118. /// <param name="sUserInfo">用户基本信息</param>
  12119. /// <param name="goodsID">返回的产品ID</param>
  12120. /// <param name="goodsCode">返回的产品Code</param>
  12121. /// <param name="goodsName">返回的产品名称</param>
  12122. /// <param name="groutingUserID">返回的注浆者ID</param>
  12123. /// <returns>string</returns>
  12124. /// <remarks>
  12125. /// 陈冰 2014.09.18 新建
  12126. /// </remarks>
  12127. private static string AddNormalWorkPiece2(IDBTransaction oracleTrConn,
  12128. ProcedureEntity procedure,
  12129. DataTable barcodeTable,
  12130. SUserInfo sUserInfo,
  12131. out int goodsID,
  12132. out string goodsCode,
  12133. out string goodsName,
  12134. out string groutingUserCode)
  12135. {
  12136. try
  12137. {
  12138. goodsID = Constant.INT_IS_ZERO;
  12139. goodsCode = null;
  12140. goodsName = null;
  12141. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  12142. // 获得账务日期
  12143. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12144. string errMsg = string.Empty;
  12145. // 本批采集的批次号
  12146. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  12147. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  12148. // 条码信息
  12149. foreach (DataRow barcodeRow in barcodeTable.Rows)
  12150. {
  12151. // 条码
  12152. string barcode = barcodeRow["Barcode"].ToString();
  12153. if (string.IsNullOrEmpty(barcode))
  12154. {
  12155. throw new Exception("传入的条码号为空");
  12156. }
  12157. // 生产工号
  12158. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  12159. // 生产工号
  12160. string workUserCode = barcodeRow["UserCode"].ToString();
  12161. //生产数据ID
  12162. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  12163. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12164. int? GroutingDailyDetailID = null;//注浆明细ID
  12165. if (procedure.CollectType == 1)
  12166. {
  12167. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12168. {
  12169. #region 校验条码有效性
  12170. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  12171. if (!string.IsNullOrEmpty(errMsg))
  12172. {
  12173. return errMsg;
  12174. }
  12175. #endregion
  12176. }
  12177. else
  12178. {
  12179. #region 校验条码有效性
  12180. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  12181. if (!string.IsNullOrEmpty(errMsg))
  12182. {
  12183. return errMsg;
  12184. }
  12185. #endregion
  12186. }
  12187. }
  12188. else
  12189. {
  12190. // string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12191. // tp_pm_groutingdailydetail.goodscode,
  12192. // tp_pm_groutingdailydetail.goodsname,
  12193. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  12194. // from tp_pm_groutingdailydetail where barcode=:barcode
  12195. // ";
  12196. string sqlGroutingInfo = "";
  12197. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12198. // tp_pm_groutingdailydetail.goodscode,
  12199. // tp_pm_groutingdailydetail.goodsname,
  12200. // tp_pm_groutingdailydetail.usercode as groutingUserCode
  12201. // from tp_pm_groutingdailydetail where barcode=:barcode
  12202. // ";
  12203. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  12204. //{
  12205. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12206. tp_pm_groutingdailydetail.goodscode,
  12207. tp_pm_groutingdailydetail.goodsname,
  12208. tp_pm_groutingdailydetail.usercode as groutingUserCode
  12209. from tp_pm_groutingdailydetail where groutingdailydetailid in
  12210. (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  12211. ";
  12212. //}
  12213. OracleParameter[] ReFireparas = new OracleParameter[] {
  12214. new OracleParameter(":barcode",barcode),
  12215. };
  12216. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  12217. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  12218. {
  12219. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  12220. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  12221. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  12222. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  12223. }
  12224. }
  12225. int? ClassesSettingID = null;//班次配置ID
  12226. #region 添加生产者数据
  12227. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12228. {
  12229. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  12230. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  12231. {
  12232. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  12233. }
  12234. else
  12235. {
  12236. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12237. }
  12238. }
  12239. else
  12240. {
  12241. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12242. }
  12243. if (!string.IsNullOrEmpty(errMsg))
  12244. {
  12245. return errMsg;
  12246. }
  12247. #endregion
  12248. #region 添加生产数据
  12249. ProductionDataEntity productionData = new ProductionDataEntity();
  12250. #region 属性赋值
  12251. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  12252. productionData.ClassesSettingID = ClassesSettingID;
  12253. productionData.ProductionDataID = productionDataID;
  12254. productionData.Barcode = barcode;
  12255. productionData.CentralizedBatchNo = centralizedBatchNo;
  12256. productionData.ProductionLineID = procedure.ProductionLineID;
  12257. productionData.ProductionLineCode = procedure.ProductionlineCode;
  12258. productionData.ProductionLineName = procedure.ProductionlineName;
  12259. productionData.CompleteProcedureID = procedure.ProcedureID;
  12260. productionData.ProcedureCode = procedure.ProcedureCode;
  12261. productionData.ProcedureName = procedure.ProcedureName;
  12262. productionData.ProcedureModel = procedure.ProcedureModel;
  12263. productionData.ModelType = procedure.ModelType;
  12264. productionData.NodeType = procedure.NodeType;
  12265. productionData.PieceType = procedure.PieceType;
  12266. if (procedure.IsSpecialRework == 0)
  12267. {
  12268. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12269. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  12270. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  12271. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  12272. {
  12273. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  12274. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12275. }
  12276. ////// else
  12277. ////// {
  12278. ////// string sqlReFire = @"select
  12279. ////// isrefire
  12280. ////// from tp_pm_inproduction where barcode=:barcode
  12281. ////// ";
  12282. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  12283. ////// new OracleParameter(":barcode",barcode),
  12284. ////// };
  12285. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  12286. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  12287. ////// {
  12288. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  12289. ////// {
  12290. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  12291. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  12292. ////// //{
  12293. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12294. ////// //}
  12295. ////// }
  12296. ////// }
  12297. ////// }
  12298. }
  12299. else
  12300. {
  12301. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12302. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12303. }
  12304. productionData.ReworkProcedureID = null;
  12305. #region 交坯判断
  12306. // 交坯节点
  12307. if (barcodeTable.Columns.Contains("IsPublicBody"))
  12308. {
  12309. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  12310. }
  12311. // 非交坯节点
  12312. else
  12313. {
  12314. // 正常坯
  12315. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  12316. }
  12317. #endregion
  12318. productionData.OrganizationID = procedure.OrganizationID;
  12319. productionData.GoodsID = goodsID;
  12320. productionData.GoodsCode = goodsCode;
  12321. productionData.GoodsName = goodsName;
  12322. productionData.UserID = workUserID;
  12323. productionData.UserCode = barcodeRow["UserCode"].ToString();
  12324. productionData.UserName = barcodeRow["UserName"].ToString();
  12325. #endregion
  12326. string OutSpecialRepairflag = "0";//干补标识
  12327. DataSet outDataSet = null;
  12328. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12329. {
  12330. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  12331. }
  12332. else
  12333. {
  12334. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  12335. }
  12336. if (!string.IsNullOrEmpty(errMsg))
  12337. {
  12338. return errMsg;
  12339. }
  12340. #endregion
  12341. #region 开始节点
  12342. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12343. {
  12344. #region 添加在产产品数据
  12345. InProductionEntity addInProductionEntity = new InProductionEntity();
  12346. addInProductionEntity.BarCode = barcode;
  12347. //流程工序ID
  12348. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12349. // 当前工序
  12350. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12351. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  12352. // 工序模型
  12353. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12354. // 工序类别
  12355. addInProductionEntity.ModelType = procedure.ModelType;
  12356. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  12357. addInProductionEntity.ProductionDataID = productionDataID;
  12358. #region 交坯判断
  12359. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12360. #endregion
  12361. // 生产工号
  12362. addInProductionEntity.UserID = workUserID;
  12363. // 执行添加
  12364. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  12365. // 执行失败
  12366. if (!string.IsNullOrEmpty(errMsg))
  12367. {
  12368. return errMsg;
  12369. }
  12370. #endregion
  12371. }
  12372. #endregion
  12373. #region 中间节点
  12374. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  12375. {
  12376. #region 修改在产产品数据的当前工序,清空返工工序字段
  12377. InProductionEntity addInProductionEntity = new InProductionEntity();
  12378. addInProductionEntity.BarCode = barcode;
  12379. //流程工序ID
  12380. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12381. // 当前工序
  12382. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12383. //当前生产数据ID
  12384. addInProductionEntity.ProductionDataID = productionDataID;
  12385. // 工序模型
  12386. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12387. // 工序类别
  12388. addInProductionEntity.ModelType = procedure.ModelType;
  12389. // 生产工号
  12390. addInProductionEntity.UserID = workUserID;
  12391. // 缺陷标识
  12392. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  12393. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  12394. if (procedure.IsSpecialRework == 0)
  12395. {
  12396. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12397. }
  12398. else
  12399. {
  12400. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12401. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12402. }
  12403. #region 交坯判断
  12404. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12405. #endregion
  12406. // 执行修改
  12407. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  12408. // 执行失败
  12409. if (!string.IsNullOrEmpty(errMsg))
  12410. {
  12411. return errMsg;
  12412. }
  12413. #endregion
  12414. }
  12415. #endregion
  12416. #region 结束节点
  12417. else
  12418. {
  12419. #region 添加成品数据 删除在产产品数据
  12420. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  12421. finishedProduct.BarCode = barcode;
  12422. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  12423. if (!string.IsNullOrEmpty(errMsg))
  12424. {
  12425. return errMsg;
  12426. }
  12427. InProductionEntity delInProductionEntity = new InProductionEntity();
  12428. delInProductionEntity.BarCode = barcode;
  12429. // 执行删除 在产数据
  12430. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  12431. // 执行失败
  12432. if (!string.IsNullOrEmpty(errMsg))
  12433. {
  12434. return errMsg;
  12435. }
  12436. #endregion
  12437. }
  12438. #endregion
  12439. }
  12440. return errMsg;
  12441. }
  12442. catch (Exception ex)
  12443. {
  12444. throw ex;
  12445. }
  12446. }
  12447. /// <summary>
  12448. /// 标准计件
  12449. /// </summary>
  12450. /// <param name="oracleTrConn">数据连接对象</param>
  12451. /// <param name="procedure">工序对象</param>
  12452. /// <param name="barcodeTable">条码信息</param>
  12453. /// <param name="sUserInfo">用户基本信息</param>
  12454. /// <param name="goodsID">返回的产品ID</param>
  12455. /// <param name="goodsCode">返回的产品Code</param>
  12456. /// <param name="goodsName">返回的产品名称</param>
  12457. /// <param name="groutingUserID">返回的注浆者ID</param>
  12458. /// <returns>string</returns>
  12459. /// <remarks>
  12460. /// 陈冰 2014.09.18 新建
  12461. /// </remarks>
  12462. private static string AddNormalWorkPieceSinglePoint(IDBTransaction oracleTrConn,
  12463. ProcedureEntity procedure,
  12464. DataTable barcodeTable,
  12465. SUserInfo sUserInfo,
  12466. int goodsID,
  12467. string goodsCode,
  12468. string goodsName,
  12469. string groutingUserCode, int? arvGroutingDailyDetailID)
  12470. {
  12471. try
  12472. {
  12473. //goodsID = Constant.INT_IS_ZERO;
  12474. //goodsCode = null;
  12475. //goodsName = null;
  12476. //groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  12477. // 获得账务日期
  12478. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  12479. string errMsg = string.Empty;
  12480. // 本批采集的批次号
  12481. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  12482. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  12483. // 条码信息
  12484. foreach (DataRow barcodeRow in barcodeTable.Rows)
  12485. {
  12486. // 条码
  12487. string barcode = barcodeRow["Barcode"].ToString();
  12488. if (string.IsNullOrEmpty(barcode))
  12489. {
  12490. throw new Exception("传入的条码号为空");
  12491. }
  12492. // 生产工号
  12493. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  12494. // 生产工号
  12495. string workUserCode = barcodeRow["UserCode"].ToString();
  12496. //生产数据ID
  12497. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  12498. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  12499. int? GroutingDailyDetailID = arvGroutingDailyDetailID;//注浆明细ID
  12500. if (procedure.CollectType == 1)
  12501. {
  12502. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12503. {
  12504. #region 校验条码有效性
  12505. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  12506. if (!string.IsNullOrEmpty(errMsg))
  12507. {
  12508. return errMsg;
  12509. }
  12510. #endregion
  12511. }
  12512. else
  12513. {
  12514. #region 校验条码有效性
  12515. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  12516. if (!string.IsNullOrEmpty(errMsg))
  12517. {
  12518. return errMsg;
  12519. }
  12520. #endregion
  12521. }
  12522. }
  12523. else
  12524. {
  12525. // string sqlGroutingInfo = "";
  12526. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  12527. // tp_pm_groutingdailydetail.goodscode,
  12528. // tp_pm_groutingdailydetail.goodsname,
  12529. // tp_pm_groutingdailydetail.usercode as groutingUserCode,
  12530. // tp_pm_groutingdailydetail.GroutingDailyDetailID
  12531. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  12532. // (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  12533. // ";
  12534. // OracleParameter[] ReFireparas = new OracleParameter[] {
  12535. // new OracleParameter(":barcode",barcode),
  12536. // };
  12537. // DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  12538. // if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  12539. // {
  12540. // GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  12541. // goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  12542. // goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  12543. // goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  12544. // groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  12545. // }
  12546. }
  12547. int? ClassesSettingID = null;//班次配置ID
  12548. #region 添加生产者数据
  12549. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  12550. {
  12551. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  12552. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  12553. {
  12554. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  12555. }
  12556. else
  12557. {
  12558. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12559. }
  12560. }
  12561. else
  12562. {
  12563. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  12564. }
  12565. if (!string.IsNullOrEmpty(errMsg))
  12566. {
  12567. return errMsg;
  12568. }
  12569. #endregion
  12570. #region 添加生产数据
  12571. ProductionDataEntity productionData = new ProductionDataEntity();
  12572. if (barcodeTable.Columns.Contains("Remarks"))
  12573. {
  12574. productionData.Remarks = barcodeRow["Remarks"] + "";
  12575. }
  12576. #region 属性赋值
  12577. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  12578. productionData.ClassesSettingID = ClassesSettingID;
  12579. productionData.ProductionDataID = productionDataID;
  12580. productionData.Barcode = barcode;
  12581. productionData.CentralizedBatchNo = centralizedBatchNo;
  12582. productionData.ProductionLineID = procedure.ProductionLineID;
  12583. productionData.ProductionLineCode = procedure.ProductionlineCode;
  12584. productionData.ProductionLineName = procedure.ProductionlineName;
  12585. productionData.CompleteProcedureID = procedure.ProcedureID;
  12586. productionData.ProcedureCode = procedure.ProcedureCode;
  12587. productionData.ProcedureName = procedure.ProcedureName;
  12588. productionData.ProcedureModel = procedure.ProcedureModel;
  12589. productionData.ModelType = procedure.ModelType;
  12590. productionData.NodeType = procedure.NodeType;
  12591. productionData.PieceType = procedure.PieceType;
  12592. if (barcodeRow["LogoID"].ToString() != "")
  12593. {
  12594. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  12595. }
  12596. if (procedure.IsSpecialRework == 0)
  12597. {
  12598. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12599. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  12600. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  12601. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  12602. {
  12603. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  12604. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12605. }
  12606. ////// else
  12607. ////// {
  12608. ////// string sqlReFire = @"select
  12609. ////// isrefire
  12610. ////// from tp_pm_inproduction where barcode=:barcode
  12611. ////// ";
  12612. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  12613. ////// new OracleParameter(":barcode",barcode),
  12614. ////// };
  12615. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  12616. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  12617. ////// {
  12618. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  12619. ////// {
  12620. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  12621. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  12622. ////// //{
  12623. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12624. ////// //}
  12625. ////// }
  12626. ////// }
  12627. ////// }
  12628. }
  12629. else
  12630. {
  12631. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12632. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  12633. }
  12634. productionData.ReworkProcedureID = null;
  12635. #region 交坯判断
  12636. // 交坯节点
  12637. if (barcodeTable.Columns.Contains("IsPublicBody"))
  12638. {
  12639. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  12640. }
  12641. // 非交坯节点
  12642. else
  12643. {
  12644. // 正常坯
  12645. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  12646. }
  12647. #endregion
  12648. productionData.OrganizationID = procedure.OrganizationID;
  12649. productionData.GoodsID = goodsID;
  12650. productionData.GoodsCode = goodsCode;
  12651. productionData.GoodsName = goodsName;
  12652. productionData.UserID = workUserID;
  12653. productionData.UserCode = barcodeRow["UserCode"].ToString();
  12654. productionData.UserName = barcodeRow["UserName"].ToString();
  12655. #endregion
  12656. string OutSpecialRepairflag = "0";//干补标识
  12657. DataSet outDataSet = null;
  12658. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12659. {
  12660. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  12661. }
  12662. else
  12663. {
  12664. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  12665. }
  12666. if (!string.IsNullOrEmpty(errMsg))
  12667. {
  12668. return errMsg;
  12669. }
  12670. #endregion
  12671. #region 开始节点
  12672. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  12673. {
  12674. #region 添加在产产品数据
  12675. InProductionEntity addInProductionEntity = new InProductionEntity();
  12676. addInProductionEntity.BarCode = barcode;
  12677. //流程工序ID
  12678. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12679. // 当前工序
  12680. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12681. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  12682. // 工序模型
  12683. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12684. // 工序类别
  12685. addInProductionEntity.ModelType = procedure.ModelType;
  12686. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  12687. addInProductionEntity.ProductionDataID = productionDataID;
  12688. #region 交坯判断
  12689. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12690. #endregion
  12691. // 生产工号
  12692. addInProductionEntity.UserID = workUserID;
  12693. // 执行添加
  12694. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  12695. // 执行失败
  12696. if (!string.IsNullOrEmpty(errMsg))
  12697. {
  12698. return errMsg;
  12699. }
  12700. #endregion
  12701. }
  12702. #endregion
  12703. #region 中间节点
  12704. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  12705. {
  12706. #region 修改在产产品数据的当前工序,清空返工工序字段
  12707. InProductionEntity addInProductionEntity = new InProductionEntity();
  12708. addInProductionEntity.BarCode = barcode;
  12709. //流程工序ID
  12710. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  12711. // 当前工序
  12712. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  12713. //当前生产数据ID
  12714. addInProductionEntity.ProductionDataID = productionDataID;
  12715. // 工序模型
  12716. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  12717. // 工序类别
  12718. addInProductionEntity.ModelType = procedure.ModelType;
  12719. // 生产工号
  12720. addInProductionEntity.UserID = workUserID;
  12721. // 缺陷标识
  12722. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  12723. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  12724. if (procedure.IsSpecialRework == 0)
  12725. {
  12726. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12727. }
  12728. else
  12729. {
  12730. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  12731. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  12732. }
  12733. addInProductionEntity.LogoID = productionData.LogoID == 0 ? null : productionData.LogoID;
  12734. #region 交坯判断
  12735. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  12736. #endregion
  12737. // 执行修改
  12738. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  12739. // 执行失败
  12740. if (!string.IsNullOrEmpty(errMsg))
  12741. {
  12742. return errMsg;
  12743. }
  12744. #endregion
  12745. }
  12746. #endregion
  12747. #region 结束节点
  12748. else
  12749. {
  12750. #region 添加成品数据 删除在产产品数据
  12751. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  12752. finishedProduct.BarCode = barcode;
  12753. finishedProduct.LogoID = productionData.LogoID;
  12754. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  12755. if (!string.IsNullOrEmpty(errMsg))
  12756. {
  12757. return errMsg;
  12758. }
  12759. InProductionEntity delInProductionEntity = new InProductionEntity();
  12760. delInProductionEntity.BarCode = barcode;
  12761. // 执行删除 在产数据
  12762. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  12763. // 执行失败
  12764. if (!string.IsNullOrEmpty(errMsg))
  12765. {
  12766. return errMsg;
  12767. }
  12768. #endregion
  12769. }
  12770. #endregion
  12771. }
  12772. return errMsg;
  12773. }
  12774. catch (Exception ex)
  12775. {
  12776. throw ex;
  12777. }
  12778. }
  12779. /// <summary>
  12780. /// 清除在产残留数据(清除选择)
  12781. /// </summary>
  12782. /// <param name="barcodes">产品条码集</param>
  12783. /// <returns></returns>
  12784. public static int SaveClearInproduction(string barcodes, SUserInfo sUserInfo)
  12785. {
  12786. int returnRows = 0;
  12787. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12788. try
  12789. {
  12790. string sql = "";
  12791. string[] subbarcode = barcodes.Split(',');
  12792. OracleParameter[] Paras = null;
  12793. for (int i = 0; i < subbarcode.Length; i++)
  12794. {
  12795. // 0.登窑、入窑、出窑工序的产品不能清除
  12796. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  12797. Paras = new OracleParameter[] {
  12798. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12799. subbarcode[i],ParameterDirection.Input)
  12800. };
  12801. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  12802. if (!string.IsNullOrWhiteSpace(modeltype))
  12803. {
  12804. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  12805. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  12806. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  12807. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  12808. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln)
  12809. {
  12810. continue;
  12811. }
  12812. }
  12813. // 返工标识或者是报损标识不允许清除 2016-07-12
  12814. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  12815. Paras = new OracleParameter[] {
  12816. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12817. subbarcode[i],ParameterDirection.Input)
  12818. };
  12819. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  12820. if (ds != null && ds.Tables[0].Rows.Count > 0)
  12821. {
  12822. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  12823. {
  12824. returnRows = -1;
  12825. break;
  12826. }
  12827. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  12828. {
  12829. returnRows = -2;
  12830. break;
  12831. }
  12832. }
  12833. // 返工标识或者是报损标识不允许清除 end
  12834. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  12835. sql = @"insert into tp_pm_inproduction_tmp
  12836. (
  12837. BARCODE,
  12838. PRODUCTIONLINEID,
  12839. PRODUCTIONLINECODE,
  12840. PRODUCTIONLINENAME,
  12841. PROCEDUREMODEL,
  12842. MODELTYPE,
  12843. REWORKPROCEDUREID,
  12844. ISPUBLICBODY,
  12845. GOODSID,
  12846. GOODSCODE,
  12847. GOODSNAME,
  12848. USERID,
  12849. GROUTINGDAILYID,
  12850. GROUTINGDAILYDETAILID,
  12851. GROUTINGDATE,
  12852. GROUTINGLINEID,
  12853. GROUTINGLINECODE,
  12854. GROUTINGLINENAME,
  12855. GMOULDTYPEID,
  12856. CANMANYTIMES,
  12857. GROUTINGLINEDETAILID,
  12858. GROUTINGMOULDCODE,
  12859. MOULDCODE,
  12860. REMARKS,
  12861. ACCOUNTID,
  12862. VALUEFLAG,
  12863. CREATETIME,
  12864. CREATEUSERID,
  12865. UPDATETIME,
  12866. UPDATEUSERID,
  12867. OPTIMESTAMP,
  12868. ISREFIRE,
  12869. GOODSLEVELID,
  12870. GOODSLEVELTYPEID,
  12871. DEFECTFLAG,
  12872. GROUTINGUSERID,
  12873. GROUTINGUSERCODE,
  12874. GROUTINGNUM,
  12875. KILNID,
  12876. KILNCODE,
  12877. KILNNAME,
  12878. KILNCARID,
  12879. KILNCARCODE,
  12880. KILNCARNAME,
  12881. KILNCARBATCHNO,
  12882. KILNCARPOSITION,
  12883. SPECIALREPAIRFLAG,
  12884. FLOWPROCEDUREID,
  12885. FLOWPROCEDURETIME,
  12886. PROCEDUREID,
  12887. PROCEDURETIME,
  12888. PRODUCTIONDATAID,
  12889. trashflag,
  12890. Deletedtime,
  12891. logoid,
  12892. IsReworkFlag,
  12893. SemiCheckID,
  12894. DELETEDUSERID,
  12895. DELETEDUSERCODE
  12896. )
  12897. select
  12898. BARCODE,
  12899. PRODUCTIONLINEID,
  12900. PRODUCTIONLINECODE,
  12901. PRODUCTIONLINENAME,
  12902. PROCEDUREMODEL,
  12903. MODELTYPE,
  12904. REWORKPROCEDUREID,
  12905. ISPUBLICBODY,
  12906. GOODSID,
  12907. GOODSCODE,
  12908. GOODSNAME,
  12909. USERID,
  12910. GROUTINGDAILYID,
  12911. GROUTINGDAILYDETAILID,
  12912. GROUTINGDATE,
  12913. GROUTINGLINEID,
  12914. GROUTINGLINECODE,
  12915. GROUTINGLINENAME,
  12916. GMOULDTYPEID,
  12917. CANMANYTIMES,
  12918. GROUTINGLINEDETAILID,
  12919. GROUTINGMOULDCODE,
  12920. MOULDCODE,
  12921. REMARKS,
  12922. ACCOUNTID,
  12923. VALUEFLAG,
  12924. CREATETIME,
  12925. CREATEUSERID,
  12926. UPDATETIME,
  12927. UPDATEUSERID,
  12928. OPTIMESTAMP,
  12929. ISREFIRE,
  12930. GOODSLEVELID,
  12931. GOODSLEVELTYPEID,
  12932. DEFECTFLAG,
  12933. GROUTINGUSERID,
  12934. GROUTINGUSERCODE,
  12935. GROUTINGNUM,
  12936. KILNID,
  12937. KILNCODE,
  12938. KILNNAME,
  12939. KILNCARID,
  12940. KILNCARCODE,
  12941. KILNCARNAME,
  12942. KILNCARBATCHNO,
  12943. KILNCARPOSITION,
  12944. SPECIALREPAIRFLAG,
  12945. FLOWPROCEDUREID,
  12946. FLOWPROCEDURETIME,
  12947. PROCEDUREID,
  12948. PROCEDURETIME,
  12949. PRODUCTIONDATAID,
  12950. INSCRAPFLAG,
  12951. sysdate,
  12952. logoid,
  12953. IsReworkFlag,
  12954. SemiCheckID,
  12955. " + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  12956. "' from tp_pm_inproduction p where p.barcode = :barcode";
  12957. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12958. //删除在产数据
  12959. sql = "delete from tp_pm_inproduction p where p.barcode =:barcode";
  12960. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12961. //删除在产生产数据
  12962. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  12963. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12964. }
  12965. if (returnRows <= 0)
  12966. {
  12967. oracleTrConn.Rollback();
  12968. oracleTrConn.Disconnect();
  12969. }
  12970. else
  12971. {
  12972. oracleTrConn.Commit();
  12973. oracleTrConn.Disconnect();
  12974. }
  12975. }
  12976. catch (Exception ex)
  12977. {
  12978. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12979. {
  12980. oracleTrConn.Rollback();
  12981. oracleTrConn.Disconnect();
  12982. }
  12983. throw ex;
  12984. }
  12985. finally
  12986. {
  12987. if (oracleTrConn.ConnState == ConnectionState.Open)
  12988. {
  12989. oracleTrConn.Disconnect();
  12990. }
  12991. }
  12992. return returnRows;
  12993. }
  12994. #region 清除在产残留数据(批量)
  12995. /// <summary>
  12996. /// 清除在产残留数据(批量清除)
  12997. /// </summary>
  12998. /// <param name="barcodes">产品条码集</param>
  12999. /// <returns></returns>
  13000. public static int SaveClearAllInproduction(SUserInfo user, RPT010401_SE se)
  13001. {
  13002. int returnRows = 0;
  13003. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13004. try
  13005. {
  13006. List<OracleParameter> parameters = new List<OracleParameter>();
  13007. StringBuilder sql = new StringBuilder(GetClearInproductionData(user.AccountID));
  13008. if (se != null)
  13009. {
  13010. //生产线IDS
  13011. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13012. {
  13013. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  13014. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13015. }
  13016. //完成工序IDS
  13017. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13018. {
  13019. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  13020. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13021. }
  13022. // 生产时间--开始
  13023. if (se.UpdateTimeStart.HasValue)
  13024. {
  13025. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  13026. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13027. }
  13028. // 生产时间--结束
  13029. if (se.UpdateTimeEnd.HasValue)
  13030. {
  13031. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  13032. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13033. }
  13034. // 是否清除报损待审产品
  13035. if (se.inscrapflag == 0)
  13036. {
  13037. sql.Append(" AND TP_PM_InProduction.inscrapflag=0 ");
  13038. }
  13039. else
  13040. {
  13041. sql.Append(" AND TP_PM_InProduction.inscrapflag in (0,1) ");
  13042. }
  13043. // 是否清除返工产品
  13044. if (se.IsReworkFlag == 0)
  13045. {
  13046. sql.Append(" AND TP_PM_InProduction.IsReworkFlag=0 ");
  13047. }
  13048. else
  13049. {
  13050. sql.Append(" AND TP_PM_InProduction.IsReworkFlag in (0,1) ");
  13051. }
  13052. }
  13053. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13054. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  13055. (
  13056. BARCODE,
  13057. PRODUCTIONLINEID,
  13058. PRODUCTIONLINECODE,
  13059. PRODUCTIONLINENAME,
  13060. PROCEDUREMODEL,
  13061. MODELTYPE,
  13062. REWORKPROCEDUREID,
  13063. ISPUBLICBODY,
  13064. GOODSID,
  13065. GOODSCODE,
  13066. GOODSNAME,
  13067. USERID,
  13068. GROUTINGDAILYID,
  13069. GROUTINGDAILYDETAILID,
  13070. GROUTINGDATE,
  13071. GROUTINGLINEID,
  13072. GROUTINGLINECODE,
  13073. GROUTINGLINENAME,
  13074. GMOULDTYPEID,
  13075. CANMANYTIMES,
  13076. GROUTINGLINEDETAILID,
  13077. GROUTINGMOULDCODE,
  13078. MOULDCODE,
  13079. REMARKS,
  13080. ACCOUNTID,
  13081. VALUEFLAG,
  13082. CREATETIME,
  13083. CREATEUSERID,
  13084. UPDATETIME,
  13085. UPDATEUSERID,
  13086. OPTIMESTAMP,
  13087. ISREFIRE,
  13088. GOODSLEVELID,
  13089. GOODSLEVELTYPEID,
  13090. DEFECTFLAG,
  13091. GROUTINGUSERID,
  13092. GROUTINGUSERCODE,
  13093. GROUTINGNUM,
  13094. KILNID,
  13095. KILNCODE,
  13096. KILNNAME,
  13097. KILNCARID,
  13098. KILNCARCODE,
  13099. KILNCARNAME,
  13100. KILNCARBATCHNO,
  13101. KILNCARPOSITION,
  13102. SPECIALREPAIRFLAG,
  13103. FLOWPROCEDUREID,
  13104. FLOWPROCEDURETIME,
  13105. PROCEDUREID,
  13106. PROCEDURETIME,
  13107. PRODUCTIONDATAID,
  13108. trashflag,
  13109. Deletedtime,
  13110. logoid,
  13111. IsReworkFlag,
  13112. SemiCheckID,
  13113. DELETEDUSERID,
  13114. DELETEDUSERCODE
  13115. )
  13116. select
  13117. BARCODE,
  13118. PRODUCTIONLINEID,
  13119. PRODUCTIONLINECODE,
  13120. PRODUCTIONLINENAME,
  13121. PROCEDUREMODEL,
  13122. MODELTYPE,
  13123. REWORKPROCEDUREID,
  13124. ISPUBLICBODY,
  13125. GOODSID,
  13126. GOODSCODE,
  13127. GOODSNAME,
  13128. USERID,
  13129. GROUTINGDAILYID,
  13130. GROUTINGDAILYDETAILID,
  13131. GROUTINGDATE,
  13132. GROUTINGLINEID,
  13133. GROUTINGLINECODE,
  13134. GROUTINGLINENAME,
  13135. GMOULDTYPEID,
  13136. CANMANYTIMES,
  13137. GROUTINGLINEDETAILID,
  13138. GROUTINGMOULDCODE,
  13139. MOULDCODE,
  13140. REMARKS,
  13141. ACCOUNTID,
  13142. VALUEFLAG,
  13143. CREATETIME,
  13144. CREATEUSERID,
  13145. UPDATETIME,
  13146. UPDATEUSERID,
  13147. OPTIMESTAMP,
  13148. ISREFIRE,
  13149. GOODSLEVELID,
  13150. GOODSLEVELTYPEID,
  13151. DEFECTFLAG,
  13152. GROUTINGUSERID,
  13153. GROUTINGUSERCODE,
  13154. GROUTINGNUM,
  13155. KILNID,
  13156. KILNCODE,
  13157. KILNNAME,
  13158. KILNCARID,
  13159. KILNCARCODE,
  13160. KILNCARNAME,
  13161. KILNCARBATCHNO,
  13162. KILNCARPOSITION,
  13163. SPECIALREPAIRFLAG,
  13164. FLOWPROCEDUREID,
  13165. FLOWPROCEDURETIME,
  13166. PROCEDUREID,
  13167. PROCEDURETIME,
  13168. PRODUCTIONDATAID,
  13169. INSCRAPFLAG,
  13170. sysdate,
  13171. logoid,
  13172. IsReworkFlag,
  13173. SemiCheckID,"
  13174. + user.UserID + ",'" + user.UserCode +
  13175. "' from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  13176. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13177. //删除在产数据
  13178. updatsql1 = "delete from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  13179. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13180. //删除在产生产数据
  13181. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  13182. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13183. if (returnRows == 0)
  13184. {
  13185. oracleTrConn.Rollback();
  13186. oracleTrConn.Disconnect();
  13187. }
  13188. else
  13189. {
  13190. oracleTrConn.Commit();
  13191. oracleTrConn.Disconnect();
  13192. }
  13193. }
  13194. catch (Exception ex)
  13195. {
  13196. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13197. {
  13198. oracleTrConn.Rollback();
  13199. oracleTrConn.Disconnect();
  13200. }
  13201. throw ex;
  13202. }
  13203. return returnRows;
  13204. }
  13205. /// <summary>
  13206. /// 获取批量数据
  13207. /// </summary>
  13208. /// <returns></returns>
  13209. private static string GetClearInproductionData(int accountid)
  13210. {
  13211. string selSql =
  13212. "SELECT " +
  13213. " TP_PM_InProduction.BarCode " +
  13214. " FROM TP_PM_InProduction " +
  13215. " Where TP_PM_InProduction.ValueFlag = '1' " +
  13216. " and TP_PM_InProduction.modeltype not in (1,2,3)" +
  13217. " and TP_PM_InProduction.AccountID= " + accountid;
  13218. return selSql;
  13219. }
  13220. #endregion
  13221. #region
  13222. /// <summary>
  13223. /// 清除在产加收站残留数据(清除选择)
  13224. /// </summary>
  13225. /// <param name="barcodes">产品条码集</param>
  13226. /// <returns></returns>
  13227. public static int SaveClearInproductionTrash(string barcodes, SUserInfo user)
  13228. {
  13229. int returnRows = 0;
  13230. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13231. try
  13232. {
  13233. string sql = "";
  13234. string[] subbarcode = barcodes.Split(',');
  13235. OracleParameter[] Paras = null;
  13236. for (int i = 0; i < subbarcode.Length; i++)
  13237. {
  13238. Paras = new OracleParameter[] {
  13239. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13240. subbarcode[i],ParameterDirection.Input)
  13241. };
  13242. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13243. sql = @"insert into tp_pm_inproduction_tmp
  13244. (
  13245. BARCODE,
  13246. PRODUCTIONLINEID,
  13247. PRODUCTIONLINECODE,
  13248. PRODUCTIONLINENAME,
  13249. PROCEDUREMODEL,
  13250. MODELTYPE,
  13251. REWORKPROCEDUREID,
  13252. ISPUBLICBODY,
  13253. GOODSID,
  13254. GOODSCODE,
  13255. GOODSNAME,
  13256. USERID,
  13257. GROUTINGDAILYID,
  13258. GROUTINGDAILYDETAILID,
  13259. GROUTINGDATE,
  13260. GROUTINGLINEID,
  13261. GROUTINGLINECODE,
  13262. GROUTINGLINENAME,
  13263. GMOULDTYPEID,
  13264. CANMANYTIMES,
  13265. GROUTINGLINEDETAILID,
  13266. GROUTINGMOULDCODE,
  13267. MOULDCODE,
  13268. REMARKS,
  13269. ACCOUNTID,
  13270. VALUEFLAG,
  13271. CREATETIME,
  13272. CREATEUSERID,
  13273. UPDATETIME,
  13274. UPDATEUSERID,
  13275. OPTIMESTAMP,
  13276. ISREFIRE,
  13277. GOODSLEVELID,
  13278. GOODSLEVELTYPEID,
  13279. DEFECTFLAG,
  13280. GROUTINGUSERID,
  13281. GROUTINGUSERCODE,
  13282. GROUTINGNUM,
  13283. KILNID,
  13284. KILNCODE,
  13285. KILNNAME,
  13286. KILNCARID,
  13287. KILNCARCODE,
  13288. KILNCARNAME,
  13289. KILNCARBATCHNO,
  13290. KILNCARPOSITION,
  13291. SPECIALREPAIRFLAG,
  13292. FLOWPROCEDUREID,
  13293. FLOWPROCEDURETIME,
  13294. PROCEDUREID,
  13295. PROCEDURETIME,
  13296. PRODUCTIONDATAID,
  13297. trashflag,
  13298. Deletedtime,
  13299. logoid,
  13300. IsReworkFlag,
  13301. SemiCheckID,
  13302. DELETEDUSERID,
  13303. DELETEDUSERCODE
  13304. )
  13305. select
  13306. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13307. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13308. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13309. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13310. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13311. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13312. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13313. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13314. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13315. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13316. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13317. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13318. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  13319. + user.UserID + ",'" + user.UserCode +
  13320. "' from TP_PM_InProductionTrash p where p.barcode = :barcode";
  13321. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13322. //删除在产回收站数据
  13323. sql = "delete from TP_PM_InProductionTrash p where p.barcode =:barcode";
  13324. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13325. //删除在产生产数据
  13326. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  13327. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13328. }
  13329. if (returnRows == 0)
  13330. {
  13331. oracleTrConn.Rollback();
  13332. oracleTrConn.Disconnect();
  13333. }
  13334. else
  13335. {
  13336. oracleTrConn.Commit();
  13337. oracleTrConn.Disconnect();
  13338. }
  13339. }
  13340. catch (Exception ex)
  13341. {
  13342. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13343. {
  13344. oracleTrConn.Rollback();
  13345. oracleTrConn.Disconnect();
  13346. }
  13347. throw ex;
  13348. }
  13349. finally
  13350. {
  13351. if (oracleTrConn.ConnState == ConnectionState.Open)
  13352. {
  13353. oracleTrConn.Disconnect();
  13354. }
  13355. }
  13356. return returnRows;
  13357. }
  13358. #endregion
  13359. #region 清除在产回收站残留数据(批量)
  13360. /// <summary>
  13361. /// 清除在产残留数据(批量清除)
  13362. /// </summary>
  13363. /// <param name="barcodes">产品条码集</param>
  13364. /// <returns></returns>
  13365. public static int SaveClearAllInproductionTrash(SUserInfo user, FPM2110_SE se)
  13366. {
  13367. int returnRows = 0;
  13368. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13369. try
  13370. {
  13371. List<OracleParameter> parameters = new List<OracleParameter>();
  13372. StringBuilder sql = new StringBuilder(GetClearInproductionTrashData(user.AccountID));
  13373. if (se != null)
  13374. {
  13375. //生产线IDS
  13376. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13377. {
  13378. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProductionTrash.ProductionLineID||',')>0 ");
  13379. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13380. }
  13381. //完成工序IDS
  13382. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13383. {
  13384. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProductionTrash.ProcedureID||',')>0 ");
  13385. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13386. }
  13387. // 生产时间--开始
  13388. if (se.UpdateTimeStart.HasValue)
  13389. {
  13390. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime >= :UpdateTimeStart ");
  13391. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13392. }
  13393. // 生产时间--结束
  13394. if (se.UpdateTimeEnd.HasValue)
  13395. {
  13396. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime <= :UpdateTimeEnd ");
  13397. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13398. }
  13399. //报废日期开始
  13400. if (se.ScrapDataStart.HasValue)
  13401. {
  13402. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  13403. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  13404. }
  13405. //报废日期结束
  13406. if (se.ScrapDataEnd.HasValue)
  13407. {
  13408. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  13409. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  13410. }
  13411. // 产品分级
  13412. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  13413. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  13414. }
  13415. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  13416. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  13417. (
  13418. BARCODE,
  13419. PRODUCTIONLINEID,
  13420. PRODUCTIONLINECODE,
  13421. PRODUCTIONLINENAME,
  13422. PROCEDUREMODEL,
  13423. MODELTYPE,
  13424. REWORKPROCEDUREID,
  13425. ISPUBLICBODY,
  13426. GOODSID,
  13427. GOODSCODE,
  13428. GOODSNAME,
  13429. USERID,
  13430. GROUTINGDAILYID,
  13431. GROUTINGDAILYDETAILID,
  13432. GROUTINGDATE,
  13433. GROUTINGLINEID,
  13434. GROUTINGLINECODE,
  13435. GROUTINGLINENAME,
  13436. GMOULDTYPEID,
  13437. CANMANYTIMES,
  13438. GROUTINGLINEDETAILID,
  13439. GROUTINGMOULDCODE,
  13440. MOULDCODE,
  13441. REMARKS,
  13442. ACCOUNTID,
  13443. VALUEFLAG,
  13444. CREATETIME,
  13445. CREATEUSERID,
  13446. UPDATETIME,
  13447. UPDATEUSERID,
  13448. OPTIMESTAMP,
  13449. ISREFIRE,
  13450. GOODSLEVELID,
  13451. GOODSLEVELTYPEID,
  13452. DEFECTFLAG,
  13453. GROUTINGUSERID,
  13454. GROUTINGUSERCODE,
  13455. GROUTINGNUM,
  13456. KILNID,
  13457. KILNCODE,
  13458. KILNNAME,
  13459. KILNCARID,
  13460. KILNCARCODE,
  13461. KILNCARNAME,
  13462. KILNCARBATCHNO,
  13463. KILNCARPOSITION,
  13464. SPECIALREPAIRFLAG,
  13465. FLOWPROCEDUREID,
  13466. FLOWPROCEDURETIME,
  13467. PROCEDUREID,
  13468. PROCEDURETIME,
  13469. PRODUCTIONDATAID,
  13470. trashflag,
  13471. Deletedtime,
  13472. logoid,
  13473. IsReworkFlag,
  13474. SemiCheckID,
  13475. DELETEDUSERID,
  13476. DELETEDUSERCODE
  13477. )
  13478. select
  13479. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13480. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13481. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13482. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13483. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13484. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13485. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13486. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13487. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13488. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13489. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13490. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13491. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  13492. + user.UserID + ",'" + user.UserCode +
  13493. "' from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  13494. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13495. //删除在产数据
  13496. updatsql1 = "delete from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  13497. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13498. //删除在产生产数据
  13499. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  13500. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13501. if (returnRows == 0)
  13502. {
  13503. oracleTrConn.Rollback();
  13504. oracleTrConn.Disconnect();
  13505. }
  13506. else
  13507. {
  13508. oracleTrConn.Commit();
  13509. oracleTrConn.Disconnect();
  13510. }
  13511. }
  13512. catch (Exception ex)
  13513. {
  13514. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13515. {
  13516. oracleTrConn.Rollback();
  13517. oracleTrConn.Disconnect();
  13518. }
  13519. throw ex;
  13520. }
  13521. finally
  13522. {
  13523. if (oracleTrConn.ConnState == ConnectionState.Open)
  13524. {
  13525. oracleTrConn.Disconnect();
  13526. }
  13527. }
  13528. return returnRows;
  13529. }
  13530. /// <summary>
  13531. /// 获取批量数据
  13532. /// </summary>
  13533. /// <returns></returns>
  13534. private static string GetClearInproductionTrashData(int accountid)
  13535. {
  13536. string selSql =
  13537. "SELECT " +
  13538. " TP_PM_InProductionTrash.BarCode " +
  13539. " FROM TP_PM_InProductionTrash " +
  13540. " left join tp_pm_scrapproduct " +
  13541. " on tp_pm_scrapproduct.barcode=TP_PM_InProductionTrash.barcode " +
  13542. " Where 1=1 and TP_PM_InProductionTrash.ValueFlag = 1 " +
  13543. " and TP_PM_InProductionTrash.AccountID= " + accountid;
  13544. return selSql;
  13545. }
  13546. #endregion
  13547. /// <summary>
  13548. /// 清除在产临时表残留数据(清除选择)
  13549. /// </summary>
  13550. /// <param name="barcodes">产品条码集</param>
  13551. /// <returns></returns>
  13552. public static int SaveClearInproductionTmp(string barcodes)
  13553. {
  13554. int returnRows = 0;
  13555. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13556. try
  13557. {
  13558. string sql = "";
  13559. string[] subbarcode = barcodes.Split(',');
  13560. OracleParameter[] Paras = null;
  13561. for (int i = 0; i < subbarcode.Length; i++)
  13562. {
  13563. Paras = new OracleParameter[] {
  13564. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13565. subbarcode[i],ParameterDirection.Input)
  13566. };
  13567. //删除在产临时表数据
  13568. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  13569. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13570. }
  13571. if (returnRows == 0)
  13572. {
  13573. oracleTrConn.Rollback();
  13574. oracleTrConn.Disconnect();
  13575. }
  13576. else
  13577. {
  13578. oracleTrConn.Commit();
  13579. oracleTrConn.Disconnect();
  13580. }
  13581. }
  13582. catch (Exception ex)
  13583. {
  13584. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13585. {
  13586. oracleTrConn.Rollback();
  13587. oracleTrConn.Disconnect();
  13588. }
  13589. throw ex;
  13590. }
  13591. finally
  13592. {
  13593. if (oracleTrConn.ConnState == ConnectionState.Open)
  13594. {
  13595. oracleTrConn.Disconnect();
  13596. }
  13597. }
  13598. return returnRows;
  13599. }
  13600. #region 清除在产回收站残留数据(批量)
  13601. /// <summary>
  13602. /// 清除在产残留数据(批量清除)
  13603. /// </summary>
  13604. /// <param name="barcodes">产品条码集</param>
  13605. /// <returns></returns>
  13606. public static int SaveClearAllInproductionTmp(SUserInfo user, FPM2112_SE se)
  13607. {
  13608. int returnRows = 0;
  13609. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13610. try
  13611. {
  13612. List<OracleParameter> parameters = new List<OracleParameter>();
  13613. StringBuilder sql = new StringBuilder(GetClearInproductionTmpData(user.AccountID));
  13614. if (se != null)
  13615. {
  13616. //生产线IDS
  13617. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  13618. {
  13619. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction_Tmp.ProductionLineID||',')>0 ");
  13620. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  13621. }
  13622. //完成工序IDS
  13623. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  13624. {
  13625. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction_Tmp.ProcedureID||',')>0 ");
  13626. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  13627. }
  13628. // 生产时间--开始
  13629. if (se.UpdateTimeStart.HasValue)
  13630. {
  13631. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime >= :UpdateTimeStart ");
  13632. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  13633. }
  13634. // 生产时间--结束
  13635. if (se.UpdateTimeEnd.HasValue)
  13636. {
  13637. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime <= :UpdateTimeEnd ");
  13638. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  13639. }
  13640. //报废日期开始
  13641. if (se.ScrapDataStart.HasValue)
  13642. {
  13643. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  13644. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  13645. }
  13646. //报废日期结束
  13647. if (se.ScrapDataEnd.HasValue)
  13648. {
  13649. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  13650. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  13651. }
  13652. if (se.GooddLevelTypeID != null)
  13653. {
  13654. // 产品分级
  13655. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  13656. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  13657. }
  13658. //在产or 回收站
  13659. sql.Append(" AND TP_PM_InProduction_Tmp.TrashFlag = :TrashFlag ");
  13660. parameters.Add(new OracleParameter(":TrashFlag", OracleDbType.Int32, se.TrashFlag, ParameterDirection.Input));
  13661. }
  13662. //删除在产临时表数据
  13663. string updatsql1 = "delete from TP_PM_InProduction_Tmp p where p.barcode in (" + sql.ToString() + ")";
  13664. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  13665. if (returnRows == 0)
  13666. {
  13667. oracleTrConn.Rollback();
  13668. oracleTrConn.Disconnect();
  13669. }
  13670. else
  13671. {
  13672. oracleTrConn.Commit();
  13673. oracleTrConn.Disconnect();
  13674. }
  13675. }
  13676. catch (Exception ex)
  13677. {
  13678. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13679. {
  13680. oracleTrConn.Rollback();
  13681. oracleTrConn.Disconnect();
  13682. }
  13683. throw ex;
  13684. }
  13685. finally
  13686. {
  13687. if (oracleTrConn.ConnState == ConnectionState.Open)
  13688. {
  13689. oracleTrConn.Disconnect();
  13690. }
  13691. }
  13692. return returnRows;
  13693. }
  13694. /// <summary>
  13695. /// 获取批量数据
  13696. /// </summary>
  13697. /// <returns></returns>
  13698. private static string GetClearInproductionTmpData(int accountid)
  13699. {
  13700. string selSql =
  13701. "SELECT " +
  13702. " TP_PM_InProduction_Tmp.BarCode " +
  13703. " FROM TP_PM_InProduction_Tmp " +
  13704. " left join tp_pm_scrapproduct " +
  13705. " on tp_pm_scrapproduct.barcode=TP_PM_InProduction_Tmp.barcode " +
  13706. " Where 1=1 and TP_PM_InProduction_Tmp.ValueFlag = 1 " +
  13707. " and TP_PM_InProduction_Tmp.AccountID= " + accountid;
  13708. return selSql;
  13709. }
  13710. #endregion
  13711. #region 恢复数据
  13712. /// <summary>
  13713. /// 恢复数据
  13714. /// </summary>
  13715. /// <param name="barcodes">产品条码集</param>
  13716. /// <returns></returns>
  13717. public static int ResetBarCode(string barcode)
  13718. {
  13719. int returnRows = 0;
  13720. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13721. try
  13722. {
  13723. string sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  13724. OracleParameter[] Paras = Paras = new OracleParameter[] {
  13725. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13726. barcode,ParameterDirection.Input)
  13727. };
  13728. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13729. if (ds != null && ds.Tables[0].Rows.Count == 0)
  13730. {
  13731. oracleTrConn.Rollback();
  13732. oracleTrConn.Disconnect();
  13733. return -1; //此条码没有清除,不能恢复
  13734. }
  13735. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  13736. {
  13737. sql = @"insert into tp_pm_inproduction select
  13738. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13739. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13740. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13741. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13742. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13743. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13744. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13745. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13746. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13747. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13748. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13749. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13750. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  13751. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  13752. }
  13753. else
  13754. {
  13755. sql = @"insert into tp_pm_inproductiontrash select
  13756. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13757. PROCEDUREMODEL, MODELTYPE,
  13758. defectflag,
  13759. REWORKPROCEDUREID,
  13760. ISPUBLICBODY,
  13761. ISRefire,
  13762. GOODSLEVELID, GOODSLEVELTYPEID,
  13763. GOODSID, GOODSCODE, GOODSNAME,
  13764. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13765. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13766. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13767. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13768. REMARKS,
  13769. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13770. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  13771. ACCOUNTID, VALUEFLAG, CREATETIME,
  13772. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13773. SpecialRepairFlag,FlowProcedureID
  13774. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  13775. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  13776. }
  13777. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13778. //将生产数据表中的数据插入到在产生产数据表中
  13779. sql = @"insert into tp_pm_productiondatain
  13780. select
  13781. pd.PRODUCTIONDATAID,
  13782. pd.BARCODE,
  13783. pd.CENTRALIZEDBATCHNO,
  13784. pd.PRODUCTIONLINEID,
  13785. pd.PRODUCTIONLINECODE,
  13786. pd.PRODUCTIONLINENAME,
  13787. pd.PROCEDUREID,
  13788. pd.PROCEDURECODE,
  13789. pd.PROCEDURENAME,
  13790. pd.PROCEDUREMODEL,
  13791. pd.MODELTYPE,
  13792. pd.PIECETYPE,
  13793. pd.ISREWORKED,
  13794. pd.NODETYPE,
  13795. pd.ISPUBLICBODY,
  13796. pd.ISREFIRE,
  13797. pd.ORGANIZATIONID,
  13798. pd.GOODSID,
  13799. pd.GOODSCODE,
  13800. pd.GOODSNAME,
  13801. pd.USERID,
  13802. pd.USERCODE,
  13803. pd.USERNAME,
  13804. pd.KILNID,
  13805. pd.KILNCODE,
  13806. pd.KILNNAME,
  13807. pd.KILNCARID,
  13808. pd.KILNCARCODE,
  13809. pd.KILNCARNAME,
  13810. pd.KILNCARBATCHNO,
  13811. pd.KILNCARPOSITION,
  13812. pd.REWORKPROCEDUREID,
  13813. pd.REWORKPROCEDURECODE,
  13814. pd.REWORKPROCEDURENAME,
  13815. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  13816. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  13817. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  13818. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  13819. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  13820. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  13821. '1',pd.LOGOID,
  13822. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  13823. from tp_pm_productiondata pd
  13824. where pd.barcode = :barcode
  13825. and pd.productiondataid not in
  13826. (select pp.productiondataid
  13827. from tp_pm_productiondatain pp
  13828. where pp.barcode = :barcode)";
  13829. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13830. //删除在产临时表数据
  13831. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  13832. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13833. if (returnRows == 0)
  13834. {
  13835. oracleTrConn.Rollback();
  13836. oracleTrConn.Disconnect();
  13837. }
  13838. else
  13839. {
  13840. oracleTrConn.Commit();
  13841. oracleTrConn.Disconnect();
  13842. }
  13843. }
  13844. catch (Exception ex)
  13845. {
  13846. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13847. {
  13848. oracleTrConn.Rollback();
  13849. oracleTrConn.Disconnect();
  13850. }
  13851. throw ex;
  13852. }
  13853. finally
  13854. {
  13855. if (oracleTrConn.ConnState == ConnectionState.Open)
  13856. {
  13857. oracleTrConn.Disconnect();
  13858. }
  13859. }
  13860. return returnRows;
  13861. }
  13862. /// <summary>
  13863. /// 批量恢复数据
  13864. /// </summary>
  13865. /// <param name="barcodes">产品条码集</param>
  13866. /// <returns></returns>
  13867. public static int ResetSelectedBarCode(string barcodes)
  13868. {
  13869. int returnRows = 0;
  13870. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13871. try
  13872. {
  13873. string sql = "";
  13874. string[] subbarcode = barcodes.Split(',');
  13875. OracleParameter[] Paras = null;
  13876. DataSet ds = null;
  13877. for (int i = 0; i < subbarcode.Length; i++)
  13878. {
  13879. sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  13880. Paras = Paras = new OracleParameter[] {
  13881. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13882. subbarcode[i],ParameterDirection.Input)
  13883. };
  13884. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  13885. if (ds != null && ds.Tables[0].Rows.Count == 0)
  13886. {
  13887. oracleTrConn.Rollback();
  13888. oracleTrConn.Disconnect();
  13889. return -1; //此条码没有清除,不能恢复
  13890. }
  13891. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  13892. {
  13893. sql = @"insert into tp_pm_inproduction select
  13894. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13895. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  13896. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  13897. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13898. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13899. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13900. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  13901. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13902. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  13903. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13904. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13905. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  13906. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  13907. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  13908. }
  13909. else
  13910. {
  13911. sql = @"insert into tp_pm_inproductiontrash select
  13912. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  13913. PROCEDUREMODEL, MODELTYPE,
  13914. defectflag,
  13915. REWORKPROCEDUREID,
  13916. ISPUBLICBODY,
  13917. ISRefire,
  13918. GOODSLEVELID, GOODSLEVELTYPEID,
  13919. GOODSID, GOODSCODE, GOODSNAME,
  13920. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  13921. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  13922. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  13923. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  13924. REMARKS,
  13925. KILNID, KILNCODE, KILNNAME, KILNCARID,
  13926. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  13927. ACCOUNTID, VALUEFLAG, CREATETIME,
  13928. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  13929. SpecialRepairFlag,FlowProcedureID
  13930. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  13931. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  13932. }
  13933. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13934. //将生产数据表中的数据插入到在产生产数据表中
  13935. sql = @"insert into tp_pm_productiondatain
  13936. select pd.PRODUCTIONDATAID,
  13937. pd.BARCODE,
  13938. pd.CENTRALIZEDBATCHNO,
  13939. pd.PRODUCTIONLINEID,
  13940. pd.PRODUCTIONLINECODE,
  13941. pd.PRODUCTIONLINENAME,
  13942. pd.PROCEDUREID,
  13943. pd.PROCEDURECODE,
  13944. pd.PROCEDURENAME,
  13945. pd.PROCEDUREMODEL,
  13946. pd.MODELTYPE,
  13947. pd.PIECETYPE,
  13948. pd.ISREWORKED,
  13949. pd.NODETYPE,
  13950. pd.ISPUBLICBODY,
  13951. pd.ISREFIRE,
  13952. pd.ORGANIZATIONID,
  13953. pd.GOODSID,
  13954. pd.GOODSCODE,
  13955. pd.GOODSNAME,
  13956. pd.USERID,
  13957. pd.USERCODE,
  13958. pd.USERNAME,
  13959. pd.KILNID,
  13960. pd.KILNCODE,
  13961. pd.KILNNAME,
  13962. pd.KILNCARID,
  13963. pd.KILNCARCODE,
  13964. pd.KILNCARNAME,
  13965. pd.KILNCARBATCHNO,
  13966. pd.KILNCARPOSITION,
  13967. pd.REWORKPROCEDUREID,
  13968. pd.REWORKPROCEDURECODE,
  13969. pd.REWORKPROCEDURENAME,
  13970. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  13971. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  13972. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  13973. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  13974. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  13975. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  13976. '1',pd.LOGOID,
  13977. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  13978. from tp_pm_productiondata pd
  13979. where pd.barcode = :barcode
  13980. and pd.productiondataid not in
  13981. (select pp.productiondataid
  13982. from tp_pm_productiondatain pp
  13983. where pp.barcode = :barcode)";
  13984. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13985. //删除在产临时表数据
  13986. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  13987. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13988. }
  13989. if (returnRows == 0)
  13990. {
  13991. oracleTrConn.Rollback();
  13992. oracleTrConn.Disconnect();
  13993. }
  13994. else
  13995. {
  13996. oracleTrConn.Commit();
  13997. oracleTrConn.Disconnect();
  13998. }
  13999. }
  14000. catch (Exception ex)
  14001. {
  14002. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14003. {
  14004. oracleTrConn.Rollback();
  14005. oracleTrConn.Disconnect();
  14006. }
  14007. throw ex;
  14008. }
  14009. finally
  14010. {
  14011. if (oracleTrConn.ConnState == ConnectionState.Open)
  14012. {
  14013. oracleTrConn.Disconnect();
  14014. }
  14015. }
  14016. return returnRows;
  14017. }
  14018. #endregion
  14019. /// <summary>
  14020. /// 撤销特殊工序撤销
  14021. /// </summary>
  14022. /// <param name="barcode">产品条码</param>
  14023. /// <returns></returns>
  14024. public static ServiceResultEntity AddChancelBarCode(string barcode, SUserInfo sUserInfo)
  14025. {
  14026. ServiceResultEntity entity = new ServiceResultEntity();
  14027. int returnRows = 0;
  14028. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14029. try
  14030. {
  14031. // 转换注浆条码
  14032. barcode = CommonModuleLogic.CommonModuleLogic.GetBarcode(oracleTrConn, barcode, sUserInfo);
  14033. DateTime? flowProcedureTime = null;
  14034. // 1 条码是否有效
  14035. string sql = "select 1 from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  14036. OracleParameter[] Paras = new OracleParameter[] {
  14037. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14038. barcode,ParameterDirection.Input)
  14039. };
  14040. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14041. if (ds.Tables[0].Rows.Count == 0)
  14042. {
  14043. //无效条码
  14044. returnRows = -1;
  14045. oracleTrConn.Rollback();
  14046. oracleTrConn.Disconnect();
  14047. entity.Result = returnRows;
  14048. return entity;
  14049. }
  14050. // 2.看看是否在产,如果在产看看是否已经损坯标识
  14051. int? ProcedureID = null;
  14052. // 撤销时,需要判定当前工序,而不是流程工序,干补时,当前工序是干补,流程工序是报损时的工序。
  14053. //sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,flowProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14054. sql = "select InScrapFlag,ProcedureID,IsReworkFlag,ProcedureTime from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14055. Paras = new OracleParameter[] {
  14056. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14057. barcode,ParameterDirection.Input)
  14058. };
  14059. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14060. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  14061. {
  14062. // 不在产,看看是否有成品
  14063. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  14064. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14065. if (ds.Tables[0].Rows.Count > 0)
  14066. {
  14067. //生产完成
  14068. returnRows = -2;
  14069. oracleTrConn.Rollback();
  14070. oracleTrConn.Disconnect();
  14071. entity.Result = returnRows;
  14072. return entity;
  14073. }
  14074. else
  14075. {
  14076. //条码不在生产线上
  14077. returnRows = -7;
  14078. oracleTrConn.Rollback();
  14079. oracleTrConn.Disconnect();
  14080. entity.Result = returnRows;
  14081. return entity;
  14082. }
  14083. }
  14084. else
  14085. {
  14086. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14087. {
  14088. //申请报废
  14089. returnRows = -3;
  14090. oracleTrConn.Rollback();
  14091. oracleTrConn.Disconnect();
  14092. entity.Result = returnRows;
  14093. return entity;
  14094. }
  14095. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14096. {
  14097. //申请报废
  14098. returnRows = -9;
  14099. oracleTrConn.Rollback();
  14100. oracleTrConn.Disconnect();
  14101. entity.Result = returnRows;
  14102. return entity;
  14103. }
  14104. //ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  14105. //flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["flowProcedureTime"]); // 流程工序时间
  14106. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); //条码完成工序
  14107. flowProcedureTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["ProcedureTime"]); // 完成工序时间
  14108. }
  14109. // 此工序所在条码是否是特殊工序,即可以撤销工序
  14110. sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  14111. Paras = new OracleParameter[] {
  14112. new OracleParameter(":procdureid",OracleDbType.Int32,
  14113. ProcedureID,ParameterDirection.Input)
  14114. };
  14115. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14116. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14117. {
  14118. if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  14119. {
  14120. //此条码所在工序不允许进行撤销
  14121. returnRows = -4;
  14122. oracleTrConn.Rollback();
  14123. oracleTrConn.Disconnect();
  14124. entity.Result = returnRows;
  14125. return entity;
  14126. }
  14127. }
  14128. // 如果不合格,查询报损表里是否回收
  14129. sql = "select recyclingflag from TP_PM_ScrapProduct "
  14130. + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  14131. + " from TP_PM_ScrapProduct "
  14132. + " where BarCode=:BarCode and ValueFlag=1)"
  14133. + " and ValueFlag=1";
  14134. Paras = new OracleParameter[]{
  14135. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  14136. };
  14137. DataSet dsResult2 = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14138. if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0)
  14139. {
  14140. if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0)
  14141. {
  14142. returnRows = -200;
  14143. oracleTrConn.Rollback();
  14144. oracleTrConn.Disconnect();
  14145. entity.Result = returnRows;
  14146. entity.Message = "此产品已经回收,不能撤销";
  14147. return entity;
  14148. }
  14149. }
  14150. // 判断是否有撤销范围权限
  14151. sql = @"select 1 from TP_MST_UserPurview where UserID=:UserID and (PurviewID=:PurviewID or PurviewID=-1) and PurviewType=13";
  14152. Paras = new OracleParameter[] {
  14153. new OracleParameter(":PurviewID",OracleDbType.Int32,
  14154. ProcedureID,ParameterDirection.Input),
  14155. new OracleParameter(":UserID",OracleDbType.Int32,
  14156. sUserInfo.UserID,ParameterDirection.Input)
  14157. };
  14158. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14159. if (ds != null && ds.Tables[0].Rows.Count == 0)
  14160. {
  14161. //此条码所在工序不允许进行撤销
  14162. returnRows = -8;
  14163. oracleTrConn.Rollback();
  14164. oracleTrConn.Disconnect();
  14165. entity.Result = returnRows;
  14166. return entity;
  14167. }
  14168. //
  14169. #region 是否启用交坯撤销限制天数
  14170. if (flowProcedureTime != null)
  14171. {
  14172. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  14173. Paras = new OracleParameter[] {
  14174. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  14175. Constant.SettingType.S_PM_004.ToString(),ParameterDirection.Input),
  14176. new OracleParameter(":accountid",OracleDbType.Int32,
  14177. sUserInfo.AccountID,ParameterDirection.Input)
  14178. };
  14179. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14180. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14181. {
  14182. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  14183. {
  14184. // 开启了限制
  14185. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(flowProcedureTime),
  14186. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_004.ToString(), sUserInfo);
  14187. if (Convert.ToInt32(resultEntity.Result) < 0)
  14188. {
  14189. //计件撤销限制天数
  14190. returnRows = -200;
  14191. oracleTrConn.Rollback();
  14192. oracleTrConn.Disconnect();
  14193. entity.Result = returnRows;
  14194. entity.Message = resultEntity.Message;
  14195. return entity;
  14196. }
  14197. }
  14198. }
  14199. }
  14200. #endregion
  14201. // 进行撤销
  14202. string sqlString = @"select ProductionDataID,
  14203. ProcedureID,
  14204. ProcedureModel,
  14205. ModelType,
  14206. ReworkProcedureID,
  14207. UserID,
  14208. logoid,
  14209. (select max(ProcedureID) from Tp_Pm_ProductiondataIn inpp where inpp.barcode = :barcode and inpp.ProductionDataID > t.ProductionDataID and ModelType=8 and valueflag='1') p8id --干补
  14210. from (select ProductionDataID,
  14211. ProcedureID,
  14212. ProcedureModel,
  14213. ModelType,
  14214. ReworkProcedureID,
  14215. UserID,
  14216. logoid
  14217. from Tp_Pm_ProductiondataIn
  14218. where barcode = :barcode
  14219. and valueflag = 1 and ModelType<>8
  14220. order by ProductionDataID desc) t
  14221. where rownum <= 2";
  14222. Paras = new OracleParameter[]{
  14223. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14224. };
  14225. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  14226. if (productionData == null
  14227. || productionData.Tables.Count == Constant.INT_IS_ZERO
  14228. || productionData.Tables[0].Rows.Count != Constant.INT_IS_TWO)
  14229. {
  14230. // 条码至少要有2次数据采集
  14231. //条码没有此工序前数据
  14232. returnRows = -5;
  14233. oracleTrConn.Rollback();
  14234. oracleTrConn.Disconnect();
  14235. entity.Result = returnRows;
  14236. return entity;
  14237. }
  14238. object pid = productionData.Tables[0].Rows[1]["p8id"];
  14239. if (pid == null || pid == DBNull.Value)
  14240. {
  14241. pid = productionData.Tables[0].Rows[1]["ProcedureID"];
  14242. }
  14243. #region 回滚在产数据
  14244. sqlString = @"update TP_PM_InProduction
  14245. set FlowProcedureID = :flowProcedureID,
  14246. ProcedureModel = :procedureModel,
  14247. ProcedureID = :ProcedureID,
  14248. ModelType = :modelType,
  14249. ReworkProcedureID = :reworkProcedureID,
  14250. UserID = :userID,
  14251. updateuserid = :updateuserid,
  14252. ProductionDataID = :ProductionDataID
  14253. --logoid = :logoid
  14254. where barcode = :barcode";
  14255. Paras = new OracleParameter[]{
  14256. new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14257. productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  14258. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  14259. pid,ParameterDirection.Input),
  14260. new OracleParameter(":procedureModel",OracleDbType.Int32,
  14261. productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  14262. new OracleParameter(":modelType",OracleDbType.Int32,
  14263. productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  14264. new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  14265. productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  14266. new OracleParameter(":userID",OracleDbType.Int32,
  14267. productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  14268. new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  14269. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14270. new OracleParameter(":ProductionDataID",OracleDbType.Int32,
  14271. productionData.Tables[0].Rows[1]["ProductionDataID"],ParameterDirection.Input)
  14272. //new OracleParameter(":logoid",OracleDbType.Int32,
  14273. // productionData.Tables[0].Rows[1]["logoid"].ToString()==""?null:productionData.Tables[0].Rows[1]["logoid"],ParameterDirection.Input),
  14274. };
  14275. int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14276. returnRows += rutenRows;
  14277. if (rutenRows == Constant.INT_IS_ZERO)
  14278. {
  14279. // 保存失败
  14280. //没有任何影响行
  14281. returnRows = -6;
  14282. oracleTrConn.Rollback();
  14283. oracleTrConn.Disconnect();
  14284. entity.Result = returnRows;
  14285. return entity;
  14286. }
  14287. //modify end
  14288. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  14289. //sqlString += " where ProductionDataID=:productionDataID";
  14290. //新添加的 begin
  14291. Paras = new OracleParameter[]{
  14292. new OracleParameter(":productionDataID",OracleDbType.Int32,
  14293. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  14294. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14295. barcode,ParameterDirection.Input),
  14296. };
  14297. //新添加的 end
  14298. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  14299. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14300. returnRows += rutenRows;
  14301. if (rutenRows == Constant.INT_IS_ZERO)
  14302. {
  14303. // 保存失败
  14304. //没有任何影响行
  14305. returnRows = -6;
  14306. oracleTrConn.Rollback();
  14307. oracleTrConn.Disconnect();
  14308. entity.Result = returnRows;
  14309. return entity;
  14310. }
  14311. #endregion
  14312. if (returnRows <= 0)
  14313. {
  14314. oracleTrConn.Rollback();
  14315. oracleTrConn.Disconnect();
  14316. }
  14317. else
  14318. {
  14319. oracleTrConn.Commit();
  14320. oracleTrConn.Disconnect();
  14321. }
  14322. }
  14323. catch (Exception ex)
  14324. {
  14325. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14326. {
  14327. oracleTrConn.Rollback();
  14328. oracleTrConn.Disconnect();
  14329. }
  14330. throw ex;
  14331. }
  14332. finally
  14333. {
  14334. if (oracleTrConn.ConnState == ConnectionState.Open)
  14335. {
  14336. oracleTrConn.Disconnect();
  14337. }
  14338. }
  14339. entity.Result = returnRows;
  14340. return entity;
  14341. }
  14342. /// <summary>
  14343. /// 交坯特殊工序撤销
  14344. /// </summary>
  14345. /// <param name="barcode">产品条码</param>
  14346. /// <returns></returns>
  14347. public static ServiceResultEntity AddChancelDeliverMudBarCode(string barcode, SUserInfo sUserInfo)
  14348. {
  14349. ServiceResultEntity entity = new ServiceResultEntity();
  14350. int returnRows = 0;
  14351. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14352. try
  14353. {
  14354. DateTime? deliverTime = null;
  14355. // 1 条码是否有效
  14356. string sql = "select DeliverTime from TP_PM_GroutingDailyDetail where barcode=:barcode and valueflag=1";
  14357. OracleParameter[] Paras = new OracleParameter[] {
  14358. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14359. barcode,ParameterDirection.Input)
  14360. };
  14361. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14362. if (ds.Tables[0].Rows.Count == 0)
  14363. {
  14364. //无效条码
  14365. returnRows = -1;
  14366. oracleTrConn.Rollback();
  14367. oracleTrConn.Disconnect();
  14368. entity.Result = returnRows;
  14369. return entity;
  14370. }
  14371. else
  14372. {
  14373. if (ds.Tables[0].Rows[0]["DeliverTime"].ToString() != "")
  14374. {
  14375. deliverTime = Convert.ToDateTime(ds.Tables[0].Rows[0]["DeliverTime"]);
  14376. }
  14377. }
  14378. // 2.看看是否在产,如果在产看看是否已经损坯标识
  14379. int? ProcedureID = null;
  14380. sql = "select InScrapFlag,flowProcedureID,IsReworkFlag,Specialrepairflag from TP_PM_InProduction where barcode=:barcode and valueflag=1";
  14381. Paras = new OracleParameter[] {
  14382. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14383. barcode,ParameterDirection.Input)
  14384. };
  14385. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14386. if (ds.Tables[0].Rows.Count == 0) //不存在在产信息
  14387. {
  14388. // 不在产,看看是否有成品
  14389. sql = @"select 1 from TP_PM_FinishedProduct where barcode=:barcode";
  14390. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14391. if (ds.Tables[0].Rows.Count > 0)
  14392. {
  14393. //生产完成
  14394. returnRows = -2;
  14395. oracleTrConn.Rollback();
  14396. oracleTrConn.Disconnect();
  14397. entity.Result = returnRows;
  14398. return entity;
  14399. }
  14400. else
  14401. {
  14402. //条码不在生产线上
  14403. returnRows = -7;
  14404. oracleTrConn.Rollback();
  14405. oracleTrConn.Disconnect();
  14406. entity.Result = returnRows;
  14407. return entity;
  14408. }
  14409. }
  14410. else
  14411. {
  14412. if (ds.Tables[0].Rows[0]["Specialrepairflag"].ToString() == "1")
  14413. {
  14414. //干补后不允许撤销
  14415. returnRows = -200;
  14416. oracleTrConn.Rollback();
  14417. oracleTrConn.Disconnect();
  14418. entity.Result = returnRows;
  14419. entity.Message = "干补后不允许撤销";
  14420. return entity;
  14421. }
  14422. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14423. {
  14424. //申请报废
  14425. returnRows = -3;
  14426. oracleTrConn.Rollback();
  14427. oracleTrConn.Disconnect();
  14428. entity.Result = returnRows;
  14429. return entity;
  14430. }
  14431. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14432. {
  14433. //申请报废
  14434. returnRows = -8;
  14435. oracleTrConn.Rollback();
  14436. oracleTrConn.Disconnect();
  14437. entity.Result = returnRows;
  14438. return entity;
  14439. }
  14440. ProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["flowProcedureID"]); //条码完成工序
  14441. }
  14442. //// 此工序所在条码是否是特殊工序,即可以撤销工序
  14443. //sql = "select UnDoFlag from tp_pc_procedure where procedureid=:procdureid and valueflag=1";
  14444. //Paras = new OracleParameter[] {
  14445. // new OracleParameter(":procdureid",OracleDbType.Int32,
  14446. // ProcedureID,ParameterDirection.Input)
  14447. //};
  14448. //ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14449. //if (ds != null && ds.Tables[0].Rows.Count > 0)
  14450. //{
  14451. // if (ds.Tables[0].Rows[0]["UnDoFlag"].ToString() != "1")
  14452. // {
  14453. // //此条码所在工序不允许进行撤销
  14454. // returnRows = -4;
  14455. // oracleTrConn.Rollback();
  14456. // oracleTrConn.Disconnect();
  14457. // return returnRows;
  14458. // }
  14459. //}
  14460. #region 是否启用交坯撤销限制天数
  14461. if (deliverTime != null)
  14462. {
  14463. sql = "select settingvalue from TP_MST_SystemSetting where settingcode=:settingcode and accountid=:accountid";
  14464. Paras = new OracleParameter[] {
  14465. new OracleParameter(":settingcode",OracleDbType.Varchar2,
  14466. Constant.SettingType.S_PM_003.ToString(),ParameterDirection.Input),
  14467. new OracleParameter(":accountid",OracleDbType.Int32,
  14468. sUserInfo.AccountID,ParameterDirection.Input)
  14469. };
  14470. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14471. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14472. {
  14473. if (Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]) > 0)
  14474. {
  14475. // 开启了限制
  14476. ServiceResultEntity resultEntity = PMModuleLogic.BarcodeAllowCancel(Convert.ToDateTime(deliverTime),
  14477. Convert.ToInt32(ds.Tables[0].Rows[0]["settingvalue"]), Constant.SettingType.S_PM_003.ToString(), sUserInfo);
  14478. if (Convert.ToInt32(resultEntity.Result) < 0)
  14479. {
  14480. //超过交坯撤销限制天数
  14481. returnRows = -200;
  14482. oracleTrConn.Rollback();
  14483. oracleTrConn.Disconnect();
  14484. entity.Result = returnRows;
  14485. entity.Message = resultEntity.Message;
  14486. return entity;
  14487. }
  14488. }
  14489. }
  14490. }
  14491. #endregion
  14492. // 进行撤销
  14493. string sqlString = @"select ProductionDataID,
  14494. ProcedureID,
  14495. ProcedureModel,
  14496. ModelType,
  14497. ReworkProcedureID,
  14498. UserID
  14499. from (select ProductionDataID,
  14500. ProcedureID,
  14501. ProcedureModel,
  14502. ModelType,
  14503. ReworkProcedureID,
  14504. UserID
  14505. from Tp_Pm_ProductiondataIn
  14506. where barcode = :barcode
  14507. and valueflag = 1 and ModelType<>8
  14508. order by ProductionDataID desc)
  14509. where rownum <= 2";
  14510. Paras = new OracleParameter[]{
  14511. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14512. };
  14513. DataSet productionData = oracleTrConn.GetSqlResultToDs(sqlString, Paras);
  14514. if (productionData == null
  14515. || productionData.Tables.Count == Constant.INT_IS_ZERO
  14516. )
  14517. {
  14518. // 条码至少要有1次数据采集
  14519. //条码没有此工序前数据
  14520. returnRows = -5; //条码至少要有1次数据采集
  14521. oracleTrConn.Rollback();
  14522. oracleTrConn.Disconnect();
  14523. entity.Result = returnRows;
  14524. return entity;
  14525. }
  14526. if (productionData.Tables[0].Rows.Count != Constant.INT_IS_ONE)
  14527. {
  14528. // 条码至少要有1次数据采集
  14529. //条码没有此工序前数据
  14530. returnRows = -55; //条码已经经过多个工序,不允许撤销
  14531. oracleTrConn.Rollback();
  14532. oracleTrConn.Disconnect();
  14533. entity.Result = returnRows;
  14534. return entity;
  14535. }
  14536. #region 回滚在产数据
  14537. // sqlString = @"update TP_PM_InProduction
  14538. // set FlowProcedureID = :flowProcedureID,
  14539. // ProcedureModel = :procedureModel,
  14540. // ProcedureID = :flowProcedureID,
  14541. // ModelType = :modelType,
  14542. // ReworkProcedureID = :reworkProcedureID,
  14543. // UserID = :userID,
  14544. // updateuserid = :updateuserid
  14545. // where barcode = :barcode";
  14546. // Paras = new OracleParameter[]{
  14547. // new OracleParameter(":flowProcedureID",OracleDbType.Int32,
  14548. // productionData.Tables[0].Rows[1]["ProcedureID"],ParameterDirection.Input),//1--->0
  14549. // new OracleParameter(":procedureModel",OracleDbType.Int32,
  14550. // productionData.Tables[0].Rows[1]["procedureModel"],ParameterDirection.Input),
  14551. // new OracleParameter(":modelType",OracleDbType.Int32,
  14552. // productionData.Tables[0].Rows[1]["modelType"],ParameterDirection.Input),
  14553. // new OracleParameter(":reworkProcedureID",OracleDbType.Int32,
  14554. // productionData.Tables[0].Rows[1]["reworkProcedureID"],ParameterDirection.Input),
  14555. // new OracleParameter(":userID",OracleDbType.Int32,
  14556. // productionData.Tables[0].Rows[1]["userID"],ParameterDirection.Input),
  14557. // new OracleParameter(":updateuserid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  14558. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  14559. // };
  14560. // int rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14561. // returnRows += rutenRows;
  14562. // if (rutenRows == Constant.INT_IS_ZERO)
  14563. // {
  14564. // // 保存失败
  14565. // //没有任何影响行
  14566. // returnRows = -6;
  14567. // oracleTrConn.Rollback();
  14568. // oracleTrConn.Disconnect();
  14569. // return returnRows;
  14570. // }
  14571. int rutenRows = 0;
  14572. //modify end
  14573. sqlString = "update Tp_Pm_ProductiondataIn set valueflag=0 ,updateuserid=" + sUserInfo.UserID; //wangxin 20150406
  14574. //sqlString += " where ProductionDataID=:productionDataID";
  14575. //新添加的 begin
  14576. Paras = new OracleParameter[]{
  14577. new OracleParameter(":productionDataID",OracleDbType.Int32,
  14578. Convert.ToInt32(productionData.Tables[0].Rows[0]["productionDataID"]),ParameterDirection.Input),
  14579. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14580. barcode,ParameterDirection.Input),
  14581. };
  14582. //新添加的 end
  14583. sqlString += " where ProductionDataID=:productionDataID and barcode=:barcode";
  14584. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14585. returnRows += rutenRows;
  14586. if (rutenRows == Constant.INT_IS_ZERO)
  14587. {
  14588. // 保存失败
  14589. //没有任何影响行
  14590. returnRows = -6;
  14591. oracleTrConn.Rollback();
  14592. oracleTrConn.Disconnect();
  14593. entity.Result = returnRows;
  14594. return entity;
  14595. }
  14596. //modify end
  14597. sqlString = "delete from TP_PM_InProduction where barcode=:barcode"; //wangxin 20150406
  14598. //sqlString += " where ProductionDataID=:productionDataID";
  14599. //新添加的 begin
  14600. Paras = new OracleParameter[]{
  14601. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14602. barcode,ParameterDirection.Input),
  14603. };
  14604. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14605. returnRows += rutenRows;
  14606. if (rutenRows == Constant.INT_IS_ZERO)
  14607. {
  14608. // 保存失败
  14609. //没有任何影响行
  14610. returnRows = -6;
  14611. oracleTrConn.Rollback();
  14612. oracleTrConn.Disconnect();
  14613. entity.Result = returnRows;
  14614. return entity;
  14615. }
  14616. #endregion
  14617. // 更新注浆明交坯标识把已经交坯改回,正常交坯
  14618. sqlString = "update TP_PM_GroutingDailyDetail set SpecialRepairFlag=0,ScrapFlag=0,IsPublicBody=0,DeliverFlag=0,DeliverTime=null,DeliverUserID=null,DeliverUserCode=null where barcode=:barcode"; //wangxin 20150406
  14619. Paras = new OracleParameter[]{
  14620. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14621. barcode,ParameterDirection.Input),
  14622. };
  14623. rutenRows = oracleTrConn.ExecuteNonQuery(sqlString, Paras);
  14624. returnRows += rutenRows;
  14625. sql = "update TP_PM_USEDBARCODE set barcodestatus=1 where BarCode=:barcode";
  14626. Paras = new OracleParameter[]{
  14627. new OracleParameter(":barcode",OracleDbType.Varchar2,
  14628. barcode,ParameterDirection.Input),
  14629. };
  14630. rutenRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  14631. returnRows += rutenRows;
  14632. if (returnRows <= 0)
  14633. {
  14634. oracleTrConn.Rollback();
  14635. oracleTrConn.Disconnect();
  14636. }
  14637. else
  14638. {
  14639. oracleTrConn.Commit();
  14640. oracleTrConn.Disconnect();
  14641. }
  14642. }
  14643. catch (Exception ex)
  14644. {
  14645. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14646. {
  14647. oracleTrConn.Rollback();
  14648. oracleTrConn.Disconnect();
  14649. }
  14650. throw ex;
  14651. }
  14652. finally
  14653. {
  14654. if (oracleTrConn.ConnState == ConnectionState.Open)
  14655. {
  14656. oracleTrConn.Disconnect();
  14657. }
  14658. }
  14659. entity.Result = returnRows;
  14660. return entity;
  14661. }
  14662. #region
  14663. /// <summary>
  14664. /// 清除未盘点残留数据(清除选择)
  14665. /// </summary>
  14666. /// <param name="inCheckedID">盘点单ID</param>
  14667. /// <param name="barcodes">条码集</param>
  14668. /// <returns></returns>
  14669. public static int SaveClearInChecked(int inCheckedID, string barcodes, SUserInfo sUserInfo)
  14670. {
  14671. int returnRows = 0;
  14672. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14673. try
  14674. {
  14675. string sql = "";
  14676. string[] subbarcodes = barcodes.Split(',');
  14677. OracleParameter[] Paras = null;
  14678. for (int i = 0; i < subbarcodes.Length; i++)
  14679. {
  14680. // 0.登窑、入窑、出窑工序的产品不能清除
  14681. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  14682. Paras = new OracleParameter[] {
  14683. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14684. subbarcodes[i],ParameterDirection.Input),
  14685. };
  14686. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  14687. if (!string.IsNullOrWhiteSpace(modeltype))
  14688. {
  14689. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  14690. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  14691. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  14692. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  14693. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln ||
  14694. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.CarAdd)
  14695. {
  14696. continue;
  14697. }
  14698. }
  14699. // 返工标识或者是报损标识不允许清除 2016-07-12
  14700. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  14701. Paras = new OracleParameter[] {
  14702. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14703. subbarcodes[i],ParameterDirection.Input)
  14704. };
  14705. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  14706. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14707. {
  14708. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  14709. {
  14710. returnRows = -1;
  14711. break;
  14712. }
  14713. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  14714. {
  14715. returnRows = -2;
  14716. break;
  14717. }
  14718. }
  14719. // 1.清除未盘点数据
  14720. sql = @"update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' /*, p.valueflag='0'*/ where p.INCHECKEDID=:InCheckedID and p.barcode =:barcode and p.InCheckedFlag='0'";
  14721. Paras = new OracleParameter[] {
  14722. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14723. subbarcodes[i],ParameterDirection.Input),
  14724. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  14725. inCheckedID,ParameterDirection.Input)
  14726. };
  14727. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14728. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  14729. // sql = @"insert into tp_pm_inproduction_tmp
  14730. // select * from tp_pm_inproduction p where p.barcode = :barcode";
  14731. sql = "INSERT INTO tp_pm_inproduction_tmp\n" +
  14732. " (barcode\n" +
  14733. " ,productionlineid\n" +
  14734. " ,productionlinecode\n" +
  14735. " ,productionlinename\n" +
  14736. " ,proceduremodel\n" +
  14737. " ,modeltype\n" +
  14738. " ,reworkprocedureid\n" +
  14739. " ,ispublicbody\n" +
  14740. " ,goodsid\n" +
  14741. " ,goodscode\n" +
  14742. " ,goodsname\n" +
  14743. " ,userid\n" +
  14744. " ,groutingdailyid\n" +
  14745. " ,groutingdailydetailid\n" +
  14746. " ,groutingdate\n" +
  14747. " ,groutinglineid\n" +
  14748. " ,groutinglinecode\n" +
  14749. " ,groutinglinename\n" +
  14750. " ,gmouldtypeid\n" +
  14751. " ,canmanytimes\n" +
  14752. " ,groutinglinedetailid\n" +
  14753. " ,groutingmouldcode\n" +
  14754. " ,mouldcode\n" +
  14755. " ,remarks\n" +
  14756. " ,accountid\n" +
  14757. " ,valueflag\n" +
  14758. " ,createtime\n" +
  14759. " ,createuserid\n" +
  14760. " ,updatetime\n" +
  14761. " ,updateuserid\n" +
  14762. " ,optimestamp\n" +
  14763. " ,isrefire\n" +
  14764. " ,goodslevelid\n" +
  14765. " ,goodsleveltypeid\n" +
  14766. " ,defectflag\n" +
  14767. " ,groutinguserid\n" +
  14768. " ,groutingusercode\n" +
  14769. " ,groutingnum\n" +
  14770. " ,kilnid\n" +
  14771. " ,kilncode\n" +
  14772. " ,kilnname\n" +
  14773. " ,kilncarid\n" +
  14774. " ,kilncarcode\n" +
  14775. " ,kilncarname\n" +
  14776. " ,kilncarbatchno\n" +
  14777. " ,kilncarposition\n" +
  14778. " ,specialrepairflag\n" +
  14779. " ,flowprocedureid\n" +
  14780. " ,flowproceduretime\n" +
  14781. " ,procedureid\n" +
  14782. " ,proceduretime\n" +
  14783. " ,productiondataid\n" +
  14784. " ,deleteduserid\n" +
  14785. " ,deletedusercode\n" +
  14786. " --,trashflag\n" +
  14787. " --,deletedtime\n" +
  14788. " ,logoid)\n" +
  14789. " SELECT barcode\n" +
  14790. " ,productionlineid\n" +
  14791. " ,productionlinecode\n" +
  14792. " ,productionlinename\n" +
  14793. " ,proceduremodel\n" +
  14794. " ,modeltype\n" +
  14795. " ,reworkprocedureid\n" +
  14796. " ,ispublicbody\n" +
  14797. " ,goodsid\n" +
  14798. " ,goodscode\n" +
  14799. " ,goodsname\n" +
  14800. " ,userid\n" +
  14801. " ,groutingdailyid\n" +
  14802. " ,groutingdailydetailid\n" +
  14803. " ,groutingdate\n" +
  14804. " ,groutinglineid\n" +
  14805. " ,groutinglinecode\n" +
  14806. " ,groutinglinename\n" +
  14807. " ,gmouldtypeid\n" +
  14808. " ,canmanytimes\n" +
  14809. " ,groutinglinedetailid\n" +
  14810. " ,groutingmouldcode\n" +
  14811. " ,mouldcode\n" +
  14812. " ,remarks\n" +
  14813. " ,accountid\n" +
  14814. " ,valueflag\n" +
  14815. " ,createtime\n" +
  14816. " ,createuserid\n" +
  14817. " ,updatetime\n" +
  14818. " ,updateuserid\n" +
  14819. " ,optimestamp\n" +
  14820. " ,isrefire\n" +
  14821. " ,goodslevelid\n" +
  14822. " ,goodsleveltypeid\n" +
  14823. " ,defectflag\n" +
  14824. " ,groutinguserid\n" +
  14825. " ,groutingusercode\n" +
  14826. " ,groutingnum\n" +
  14827. " ,kilnid\n" +
  14828. " ,kilncode\n" +
  14829. " ,kilnname\n" +
  14830. " ,kilncarid\n" +
  14831. " ,kilncarcode\n" +
  14832. " ,kilncarname\n" +
  14833. " ,kilncarbatchno\n" +
  14834. " ,kilncarposition\n" +
  14835. " ,specialrepairflag\n" +
  14836. " ,flowprocedureid\n" +
  14837. " ,flowproceduretime\n" +
  14838. " ,procedureid\n" +
  14839. " ,proceduretime\n" +
  14840. " ,productiondataid\n" +
  14841. " ,:deleteduserid\n" +
  14842. " ,:deletedusercode\n" +
  14843. " --,inscrapflag\n" +
  14844. " ,logoid\n" +
  14845. " FROM tp_pm_inproduction p\n" +
  14846. " WHERE p.barcode = :barcode\n" +
  14847. " AND p.modeltype not in (1,2,3,6)\n" +
  14848. " AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1' \n" +
  14849. "";
  14850. Paras = new OracleParameter[] {
  14851. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14852. subbarcodes[i],ParameterDirection.Input),
  14853. new OracleParameter(":deleteduserid",OracleDbType.Int32,
  14854. sUserInfo.UserID,ParameterDirection.Input),
  14855. new OracleParameter(":deletedusercode",OracleDbType.NVarchar2,
  14856. sUserInfo.UserCode,ParameterDirection.Input),
  14857. };
  14858. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14859. // 3 删除在产数据
  14860. sql = @" delete from tp_pm_inproduction p where p.barcode =:barcode AND p.modeltype not in (1,2,3,6) AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1'";
  14861. Paras = new OracleParameter[] {
  14862. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14863. subbarcodes[i],ParameterDirection.Input),
  14864. };
  14865. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  14866. if (returnRows > 0)
  14867. {
  14868. // 4. 删除在产生产数据
  14869. sql = @" delete from tp_pm_productiondatain p where p.barcode = :barcode";
  14870. Paras = new OracleParameter[] {
  14871. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  14872. subbarcodes[i],ParameterDirection.Input),
  14873. };
  14874. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14875. }
  14876. }
  14877. if (returnRows <= 0)
  14878. {
  14879. oracleTrConn.Rollback();
  14880. oracleTrConn.Disconnect();
  14881. }
  14882. else
  14883. {
  14884. oracleTrConn.Commit();
  14885. oracleTrConn.Disconnect();
  14886. }
  14887. }
  14888. catch (Exception ex)
  14889. {
  14890. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14891. {
  14892. oracleTrConn.Rollback();
  14893. oracleTrConn.Disconnect();
  14894. }
  14895. throw ex;
  14896. }
  14897. finally
  14898. {
  14899. if (oracleTrConn.ConnState == ConnectionState.Open)
  14900. {
  14901. oracleTrConn.Disconnect();
  14902. }
  14903. }
  14904. return returnRows;
  14905. }
  14906. /// <summary>
  14907. /// 清除未盘点残留数据(根据条件进行选择)
  14908. /// </summary>
  14909. /// <param name="inCheckedID">盘点单ID</param>
  14910. /// <param name="procedureIDs">完成工序集</param>
  14911. /// <param name="goodsCodes">产品编码集</param>
  14912. /// <returns></returns>
  14913. public static int SaveClearInCheckedAll(int inCheckedID, string procedureIDs, string goodsCodes, DateTime? startDateTime, DateTime? endDateTime, SUserInfo sUserInfo)
  14914. {
  14915. int returnRows = 0;
  14916. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  14917. try
  14918. {
  14919. OracleParameter[] Paras = null;
  14920. string Insql = "";
  14921. // 1 查出根据条件进行未盘点数据
  14922. // 0.登窑、入窑、出窑工序的产品不能清除
  14923. Insql = @"select p.barcode from TP_PM_INCHECKEDDETAIL p "
  14924. + " inner join tp_pm_inproduction pin on pin.barcode = p.barcode and p.PROCEDUREID = pin.PROCEDUREID"
  14925. + " where p.INCHECKEDID=:InCheckedID and p.InCheckedFlag in ('0','9') and (pin.modeltype is null or pin.modeltype not in (1,2,3,6)) and pin.IsReworkFlag='0' and pin.InScrapFlag='0'";
  14926. if (!string.IsNullOrEmpty(procedureIDs))
  14927. {
  14928. Insql += " and p.PROCEDUREID in (" + procedureIDs + ")";
  14929. }
  14930. if (!string.IsNullOrEmpty(goodsCodes))
  14931. {
  14932. Insql += " and p.GoodsID in (" + goodsCodes + ")";
  14933. }
  14934. if (startDateTime != null)
  14935. {
  14936. Insql += Insql + " AND pin.ProcedureTime >= :Createdate AND pin.ProcedureTime <= :EndDate ";
  14937. Paras = new OracleParameter[] {
  14938. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  14939. new OracleParameter(":Createdate", OracleDbType.Date, startDateTime, ParameterDirection.Input),
  14940. new OracleParameter(":EndDate", OracleDbType.Date, endDateTime, ParameterDirection.Input),
  14941. };
  14942. }
  14943. else
  14944. {
  14945. Paras = new OracleParameter[] {
  14946. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  14947. };
  14948. }
  14949. string sql = "";
  14950. // 1.清除未盘点数据
  14951. sql = @"update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '9' /*, p.valueflag='0'*/ where p.INCHECKEDID=:InCheckedID and p.barcode in (" + Insql + ") and p.InCheckedFlag='0'";
  14952. //Paras = new OracleParameter[] {
  14953. // new OracleParameter(":InCheckedID",OracleDbType.Int32,
  14954. // inCheckedID,ParameterDirection.Input)
  14955. // };
  14956. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  14957. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  14958. sql = @"insert into tp_pm_inproduction_tmp
  14959. (
  14960. BARCODE,
  14961. PRODUCTIONLINEID,
  14962. PRODUCTIONLINECODE,
  14963. PRODUCTIONLINENAME,
  14964. PROCEDUREMODEL,
  14965. MODELTYPE,
  14966. REWORKPROCEDUREID,
  14967. ISPUBLICBODY,
  14968. GOODSID,
  14969. GOODSCODE,
  14970. GOODSNAME,
  14971. USERID,
  14972. GROUTINGDAILYID,
  14973. GROUTINGDAILYDETAILID,
  14974. GROUTINGDATE,
  14975. GROUTINGLINEID,
  14976. GROUTINGLINECODE,
  14977. GROUTINGLINENAME,
  14978. GMOULDTYPEID,
  14979. CANMANYTIMES,
  14980. GROUTINGLINEDETAILID,
  14981. GROUTINGMOULDCODE,
  14982. MOULDCODE,
  14983. REMARKS,
  14984. ACCOUNTID,
  14985. VALUEFLAG,
  14986. CREATETIME,
  14987. CREATEUSERID,
  14988. UPDATETIME,
  14989. UPDATEUSERID,
  14990. OPTIMESTAMP,
  14991. ISREFIRE,
  14992. GOODSLEVELID,
  14993. GOODSLEVELTYPEID,
  14994. DEFECTFLAG,
  14995. GROUTINGUSERID,
  14996. GROUTINGUSERCODE,
  14997. GROUTINGNUM,
  14998. KILNID,
  14999. KILNCODE,
  15000. KILNNAME,
  15001. KILNCARID,
  15002. KILNCARCODE,
  15003. KILNCARNAME,
  15004. KILNCARBATCHNO,
  15005. KILNCARPOSITION,
  15006. SPECIALREPAIRFLAG,
  15007. FLOWPROCEDUREID,
  15008. FLOWPROCEDURETIME,
  15009. PROCEDUREID,
  15010. PROCEDURETIME,
  15011. PRODUCTIONDATAID,
  15012. trashflag,
  15013. Deletedtime,
  15014. logoid,
  15015. IsReworkFlag,
  15016. SemiCheckID,
  15017. DELETEDUSERID,
  15018. DELETEDUSERCODE
  15019. )
  15020. select
  15021. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  15022. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  15023. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  15024. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  15025. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  15026. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  15027. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  15028. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  15029. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  15030. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  15031. KILNID, KILNCODE, KILNNAME, KILNCARID,
  15032. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  15033. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,sysdate,logoid,ISREWORKFLAG,SEMICHECKID,"
  15034. + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  15035. "' from tp_pm_inproduction pp where pp.barcode in (" + Insql + ")";
  15036. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15037. // 4. 删除在产生产数据
  15038. sql = @" delete from tp_pm_productiondatain pp where pp.barcode in(" + Insql + ")";
  15039. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15040. // 3 删除在产数据
  15041. sql = @" delete from tp_pm_inproduction pp where pp.barcode in(" + Insql + ")";
  15042. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15043. sql = @" update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' where p.INCHECKEDFLAG='9' and p.InCheckedID=" + inCheckedID;
  15044. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15045. if (returnRows == 0)
  15046. {
  15047. oracleTrConn.Rollback();
  15048. oracleTrConn.Disconnect();
  15049. }
  15050. else
  15051. {
  15052. oracleTrConn.Commit();
  15053. oracleTrConn.Disconnect();
  15054. }
  15055. }
  15056. catch (Exception ex)
  15057. {
  15058. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15059. {
  15060. oracleTrConn.Rollback();
  15061. oracleTrConn.Disconnect();
  15062. }
  15063. throw ex;
  15064. }
  15065. finally
  15066. {
  15067. if (oracleTrConn.ConnState == ConnectionState.Open)
  15068. {
  15069. oracleTrConn.Disconnect();
  15070. }
  15071. }
  15072. return returnRows;
  15073. }
  15074. /// <summary>
  15075. /// 设置条码商标
  15076. /// </summary>
  15077. /// <returns></returns>
  15078. public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo)
  15079. {
  15080. int returnRows = 0;
  15081. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15082. try
  15083. {
  15084. // 转换条码
  15085. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  15086. OracleParameter[] paras1 = new OracleParameter[]{
  15087. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  15088. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  15089. };
  15090. barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  15091. OracleParameter[] Paras = null;
  15092. object oldLogoID = null;
  15093. object pid = null;
  15094. string sql = "";
  15095. sql = @"select logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  15096. oldLogoID = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  15097. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15098. });
  15099. // 1.更新注浆明细
  15100. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15101. Paras = new OracleParameter[] {
  15102. new OracleParameter(":logoid",OracleDbType.Int32,
  15103. logoid,ParameterDirection.Input),
  15104. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15105. sUserInfo.UserID,ParameterDirection.Input),
  15106. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15107. barcode,ParameterDirection.Input)
  15108. };
  15109. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15110. // 2.在产产品
  15111. sql = @"update tp_pm_inproduction set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15112. //Paras = new OracleParameter[] {
  15113. // new OracleParameter(":logoid",OracleDbType.Int32,
  15114. // logoid,ParameterDirection.Input),
  15115. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15116. // sUserInfo.UserID,ParameterDirection.Input),
  15117. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15118. // barcode,ParameterDirection.Input)
  15119. // };
  15120. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15121. if (returnRows > 0)
  15122. {
  15123. sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
  15124. pid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  15125. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15126. });
  15127. }
  15128. // 3.在产回收站
  15129. sql = @"update tp_pm_inproductiontrash set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15130. //Paras = new OracleParameter[] {
  15131. // new OracleParameter(":logoid",OracleDbType.Int32,
  15132. // logoid,ParameterDirection.Input),
  15133. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15134. // sUserInfo.UserID,ParameterDirection.Input),
  15135. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15136. // barcode,ParameterDirection.Input)
  15137. // };
  15138. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15139. // 4.在产临时表
  15140. sql = @"update tp_pm_inproduction_tmp set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15141. //Paras = new OracleParameter[] {
  15142. // new OracleParameter(":logoid",OracleDbType.Int32,
  15143. // logoid,ParameterDirection.Input),
  15144. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15145. // sUserInfo.UserID,ParameterDirection.Input),
  15146. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15147. // barcode,ParameterDirection.Input)
  15148. // };
  15149. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15150. // 5.成品表
  15151. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15152. //Paras = new OracleParameter[] {
  15153. // new OracleParameter(":logoid",OracleDbType.Int32,
  15154. // logoid,ParameterDirection.Input),
  15155. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15156. // sUserInfo.UserID,ParameterDirection.Input),
  15157. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15158. // barcode,ParameterDirection.Input)
  15159. // };
  15160. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15161. // 6 在产盘点明细
  15162. sql = @"update TP_PM_InCheckedDetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15163. //Paras = new OracleParameter[] {
  15164. // new OracleParameter(":logoid",OracleDbType.Int32,
  15165. // logoid,ParameterDirection.Input),
  15166. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15167. // sUserInfo.UserID,ParameterDirection.Input),
  15168. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15169. // barcode,ParameterDirection.Input)
  15170. // };
  15171. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15172. // 7 半成品检验登记
  15173. sql = @"update TP_PM_SemiCheck set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15174. //Paras = new OracleParameter[] {
  15175. // new OracleParameter(":logoid",OracleDbType.Int32,
  15176. // logoid,ParameterDirection.Input),
  15177. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15178. // sUserInfo.UserID,ParameterDirection.Input),
  15179. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15180. // barcode,ParameterDirection.Input)
  15181. // };
  15182. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15183. // 8 废弃产品
  15184. sql = @"update TP_PM_ScrapProduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15185. //Paras = new OracleParameter[] {
  15186. // new OracleParameter(":logoid",OracleDbType.Int32,
  15187. // logoid,ParameterDirection.Input),
  15188. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15189. // sUserInfo.UserID,ParameterDirection.Input),
  15190. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15191. // barcode,ParameterDirection.Input)
  15192. // };
  15193. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15194. // 9 在产生产数据
  15195. sql = @"update TP_PM_ProductionDataIn set Triggerflag=1, logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15196. //Paras = new OracleParameter[] {
  15197. // new OracleParameter(":logoid",OracleDbType.Int32,
  15198. // logoid,ParameterDirection.Input),
  15199. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15200. // sUserInfo.UserID,ParameterDirection.Input),
  15201. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15202. // barcode,ParameterDirection.Input)
  15203. // };
  15204. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15205. // 10 生产数据
  15206. sql = @"update TP_PM_ProductionData set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15207. //Paras = new OracleParameter[] {
  15208. // new OracleParameter(":logoid",OracleDbType.Int32,
  15209. // logoid,ParameterDirection.Input),
  15210. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  15211. // sUserInfo.UserID,ParameterDirection.Input),
  15212. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  15213. // barcode,ParameterDirection.Input)
  15214. // };
  15215. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15216. // 变更履历
  15217. sql =
  15218. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15219. " (BARCODE\n" +
  15220. " ,OLDLOGOID\n" +
  15221. " ,NEWLOGOID\n" +
  15222. " ,PROCEDUREID\n" +
  15223. " ,REMARKS\n" +
  15224. " ,ACCOUNTID\n" +
  15225. " ,CREATETIME\n" +
  15226. " ,CREATEUSERID)\n" +
  15227. "VALUES\n" +
  15228. " (:BARCODE\n" +
  15229. " ,:OLDLOGOID\n" +
  15230. " ,:NEWLOGOID\n" +
  15231. " ,:PROCEDUREID\n" +
  15232. " ,NULL\n" +
  15233. " ,:ACCOUNTID\n" +
  15234. " ,SYSDATE\n" +
  15235. " ,:CREATEUSERID)";
  15236. Paras = new OracleParameter[] {
  15237. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  15238. oldLogoID,ParameterDirection.Input),
  15239. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  15240. logoid,ParameterDirection.Input),
  15241. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  15242. pid,ParameterDirection.Input),
  15243. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  15244. sUserInfo.AccountID,ParameterDirection.Input),
  15245. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  15246. sUserInfo.UserID,ParameterDirection.Input),
  15247. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  15248. barcode,ParameterDirection.Input)
  15249. };
  15250. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  15251. //if (returnRows == 0)
  15252. //{
  15253. // oracleTrConn.Rollback();
  15254. // oracleTrConn.Disconnect();
  15255. //}
  15256. //else
  15257. {
  15258. oracleTrConn.Commit();
  15259. oracleTrConn.Disconnect();
  15260. }
  15261. }
  15262. catch (Exception ex)
  15263. {
  15264. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15265. {
  15266. oracleTrConn.Rollback();
  15267. oracleTrConn.Disconnect();
  15268. }
  15269. throw ex;
  15270. }
  15271. return returnRows;
  15272. }
  15273. /// <summary>
  15274. /// 设置产成品商标
  15275. /// </summary>
  15276. /// <param name="barcodes"></param>
  15277. /// <param name="logoid"></param>
  15278. /// <param name="sUserInfo"></param>
  15279. /// <returns></returns>
  15280. public static int SetFinishedLogo(string[] barcodes, int logoid, SUserInfo sUserInfo)
  15281. {
  15282. int returnRows = 0;
  15283. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15284. try
  15285. {
  15286. OracleParameter[] Paras = null;
  15287. object oldLogoID = null;
  15288. object gdid = null;
  15289. //object pid = null;
  15290. string sql = "";
  15291. DataTable dataTable = null;
  15292. foreach (string barcode in barcodes)
  15293. {
  15294. sql = @"select groutingdailydetailid, logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  15295. dataTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  15296. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  15297. });
  15298. if (dataTable == null || dataTable.Rows.Count == 0)
  15299. {
  15300. continue;
  15301. }
  15302. gdid = dataTable.Rows[0]["groutingdailydetailid"];
  15303. oldLogoID = dataTable.Rows[0]["logoid"];
  15304. // 1.更新注浆明细
  15305. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15306. Paras = new OracleParameter[] {
  15307. new OracleParameter(":logoid",OracleDbType.Int32,
  15308. logoid,ParameterDirection.Input),
  15309. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15310. sUserInfo.UserID,ParameterDirection.Input),
  15311. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15312. barcode,ParameterDirection.Input)
  15313. };
  15314. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15315. // 5.成品表
  15316. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  15317. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15318. // 变更履历
  15319. sql =
  15320. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  15321. " (BARCODE\n" +
  15322. " ,OLDLOGOID\n" +
  15323. " ,NEWLOGOID\n" +
  15324. //" ,PROCEDUREID\n" +
  15325. " ,REMARKS\n" +
  15326. " ,ACCOUNTID\n" +
  15327. " ,CREATETIME\n" +
  15328. " ,CREATEUSERID)\n" +
  15329. "VALUES\n" +
  15330. " (:BARCODE\n" +
  15331. " ,:OLDLOGOID\n" +
  15332. " ,:NEWLOGOID\n" +
  15333. //" ,:PROCEDUREID\n" +
  15334. " ,NULL\n" +
  15335. " ,:ACCOUNTID\n" +
  15336. " ,SYSDATE\n" +
  15337. " ,:CREATEUSERID)";
  15338. Paras = new OracleParameter[] {
  15339. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  15340. oldLogoID,ParameterDirection.Input),
  15341. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  15342. logoid,ParameterDirection.Input),
  15343. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  15344. // pid,ParameterDirection.Input),
  15345. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  15346. sUserInfo.AccountID,ParameterDirection.Input),
  15347. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  15348. sUserInfo.UserID,ParameterDirection.Input),
  15349. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  15350. barcode,ParameterDirection.Input)
  15351. };
  15352. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15353. }
  15354. //if (returnRows == 0)
  15355. //{
  15356. // oracleTrConn.Rollback();
  15357. // oracleTrConn.Disconnect();
  15358. //}
  15359. //else
  15360. {
  15361. oracleTrConn.Commit();
  15362. oracleTrConn.Disconnect();
  15363. }
  15364. }
  15365. catch (Exception ex)
  15366. {
  15367. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15368. {
  15369. oracleTrConn.Rollback();
  15370. oracleTrConn.Disconnect();
  15371. }
  15372. throw ex;
  15373. }
  15374. return returnRows;
  15375. }
  15376. /// <summary>
  15377. /// 设置产成品订单
  15378. /// </summary>
  15379. /// <param name="barcodes"></param>
  15380. /// <param name="orderid"></param>
  15381. /// <param name="sUserInfo"></param>
  15382. /// <returns></returns>
  15383. public static int SetHandoveredOrder(string[] barcodes, int orderID, SUserInfo sUserInfo)
  15384. {
  15385. int returnRows = 0;
  15386. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15387. try
  15388. {
  15389. string sql = @"update tp_pm_finishedproduct set FHOrderID=:FHOrderID,updateuserid=:updateuserid where barcode=:barcode and FHOrderID is not null";
  15390. OracleParameter[] Paras = new OracleParameter[] {
  15391. new OracleParameter(":barcode",OracleDbType.Varchar2,
  15392. "",ParameterDirection.Input),
  15393. new OracleParameter(":FHOrderID",OracleDbType.Int32,
  15394. orderID,ParameterDirection.Input),
  15395. new OracleParameter(":updateuserid",OracleDbType.Int32,
  15396. sUserInfo.UserID,ParameterDirection.Input)
  15397. };
  15398. foreach (string barcode in barcodes)
  15399. {
  15400. Paras[0].Value = barcode;
  15401. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  15402. }
  15403. oracleTrConn.Commit();
  15404. oracleTrConn.Disconnect();
  15405. }
  15406. catch (Exception ex)
  15407. {
  15408. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15409. {
  15410. oracleTrConn.Rollback();
  15411. oracleTrConn.Disconnect();
  15412. }
  15413. throw ex;
  15414. }
  15415. return returnRows;
  15416. }
  15417. #endregion
  15418. /// <summary>
  15419. /// 添加生产数据
  15420. /// </summary>
  15421. /// <param name="oracleTrConn">连接对象</param>
  15422. /// <param name="accountDate">账务日期</param>
  15423. /// <param name="productionData">生产数据</param>
  15424. /// <param name="sUserInfo">用户基本信息</param>
  15425. /// <returns>string</returns>
  15426. /// <remarks>
  15427. /// 陈冰 2014.09.18 新建
  15428. /// </remarks>
  15429. private static string AddProductionDataWaster(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  15430. {
  15431. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  15432. string selectSql = "";
  15433. string returnVal = "";
  15434. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  15435. {
  15436. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  15437. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  15438. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  15439. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  15440. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  15441. TP_PM_GroutingDailyDetail.MouldCode,
  15442. TP_PM_GroutingDailyDetail.GroutingDailyID,
  15443. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  15444. TP_PM_GroutingDailyDetail.GroutingLineID,
  15445. TP_PM_GroutingDailyDetail.GroutingLineCode,
  15446. TP_PM_GroutingDailyDetail.GroutingLineName,
  15447. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  15448. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  15449. (select GMouldTypeID
  15450. from TP_PM_GroutingDaily
  15451. where TP_PM_GroutingDaily.GroutingDailyID =
  15452. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  15453. (select CanManyTimes
  15454. from TP_PM_GroutingDaily
  15455. where TP_PM_GroutingDaily.GroutingDailyID =
  15456. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  15457. 0 as IsReFire
  15458. from TP_PM_GroutingDailyDetail
  15459. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  15460. }
  15461. else
  15462. {
  15463. selectSql = @"select
  15464. GroutingDate,
  15465. userid as GroutingUserID,
  15466. usercode as GroutingUserCode,
  15467. Groutingcount as GroutingNum,
  15468. GroutingMouldCode,
  15469. MouldCode,
  15470. GroutingDailyID,
  15471. GroutingDailyDetailID,
  15472. GroutingLineID,
  15473. GroutingLineCode,
  15474. GroutingLineName,
  15475. GMouldTypeID,
  15476. CanManyTimes,
  15477. GroutingLineDetailID,
  15478. SpecialRepairflag,
  15479. 0 as IsReFire,
  15480. logoid
  15481. from TP_PM_GroutingDailyDetail where barcode=:barcode
  15482. ";
  15483. }
  15484. OracleParameter[] selectparas = new OracleParameter[] {
  15485. new OracleParameter(":barcode",productionData.Barcode),
  15486. };
  15487. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  15488. DateTime GroutingDate = new DateTime();
  15489. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  15490. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  15491. int IsReFire = 0;
  15492. int? logoID = null;
  15493. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  15494. {
  15495. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  15496. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  15497. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  15498. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  15499. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  15500. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  15501. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  15502. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  15503. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  15504. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  15505. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  15506. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  15507. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  15508. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  15509. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  15510. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  15511. if (IsReFire > 0) //大于零代表重烧过
  15512. {
  15513. productionData.IsReFire = IsReFire;
  15514. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  15515. }
  15516. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  15517. {
  15518. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  15519. }
  15520. //if (productionData.LogoID != null) //当前工序有商标
  15521. //{
  15522. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  15523. // {
  15524. // logoID = productionData.LogoID;
  15525. // //根据明细ID.update
  15526. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  15527. // OracleParameter[] paras2 = new OracleParameter[] {
  15528. // new OracleParameter(":logoid",productionData.LogoID)
  15529. // };
  15530. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  15531. // }
  15532. //}
  15533. returnVal = SpecialRepairflag.ToString();
  15534. }
  15535. #endregion
  15536. #region 更新窑炉窑车属性
  15537. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  15538. {
  15539. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  15540. if (ds != null)
  15541. {
  15542. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  15543. {
  15544. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  15545. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  15546. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  15547. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  15548. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  15549. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  15550. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  15551. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  15552. }
  15553. }
  15554. }
  15555. #endregion
  15556. #region SQL
  15557. string sql = "insert into tp_pm_productiondataIn"
  15558. + " (productiondataid,"
  15559. + " barcode,"
  15560. + " centralizedbatchno,"
  15561. + " productionlineid,"
  15562. + " productionlinecode,"
  15563. + " productionlinename,"
  15564. + " procedureid,"
  15565. + " procedurecode,"
  15566. + " procedurename,"
  15567. + " proceduremodel,"
  15568. + " modeltype,"
  15569. + " piecetype,"
  15570. + " isreworked,"
  15571. + " nodetype,"
  15572. + " ispublicbody,"
  15573. + " isrefire,"
  15574. + " organizationid,"
  15575. + " goodsid,"
  15576. + " goodscode,"
  15577. + " goodsname,"
  15578. + " userid,"
  15579. + " usercode,"
  15580. + " username,"
  15581. + " kilnid,"
  15582. + " kilncode,"
  15583. + " kilnname,"
  15584. + " kilncarid,"
  15585. + " kilncarcode,"
  15586. + " kilncarname,"
  15587. + " kilncarbatchno,"
  15588. + " kilncarposition,"
  15589. + " reworkprocedureid,"
  15590. + " reworkprocedurecode,"
  15591. + " reworkprocedurename,"
  15592. + " remarks,"
  15593. + " accountdate,"
  15594. + " accountid,"
  15595. + " GoodsLevelID,"
  15596. + " GoodsLevelTypeID,"
  15597. + " createuserid,"
  15598. + " updateuserid,"
  15599. + " GroutingDate,"
  15600. + " GroutingUserID,"
  15601. + " GroutingUserCode,"
  15602. + " GroutingNum,"
  15603. + " GroutingMouldCode,"
  15604. + " MouldCode,"
  15605. + "GroutingDailyID,"
  15606. + "GroutingDailyDetailID,"
  15607. + "GroutingLineID,"
  15608. + " GroutingLineCode,"
  15609. + "GroutingLineName,"
  15610. + "GMouldTypeID,"
  15611. + "CanManyTimes,"
  15612. + "GroutingLineDetailID,"
  15613. + "SpecialRepairflag,"
  15614. + "ClassesSettingID,"
  15615. + "LogoID"
  15616. + ")"
  15617. + " values"
  15618. + " (:productiondataid,"
  15619. + " :barcode,"
  15620. + " :centralizedbatchno,"
  15621. + " :productionlineid,"
  15622. + " :productionlinecode,"
  15623. + " :productionlinename,"
  15624. + " :procedureid,"
  15625. + " :procedurecode,"
  15626. + " :procedurename,"
  15627. + " :proceduremodel,"
  15628. + " :modeltype,"
  15629. + " :piecetype,"
  15630. + " :isreworked,"
  15631. + " :nodetype,"
  15632. + " :ispublicbody,"
  15633. + " :isrefire,"
  15634. + " :organizationid,"
  15635. + " :goodsid,"
  15636. + " :goodscode,"
  15637. + " :goodsname,"
  15638. + " :userid,"
  15639. + " :usercode,"
  15640. + " :username,"
  15641. + " :kilnid,"
  15642. + " :kilncode,"
  15643. + " :kilnname,"
  15644. + " :kilncarid,"
  15645. + " :kilncarcode,"
  15646. + " :kilncarname,"
  15647. + " :kilncarbatchno,"
  15648. + " :kilncarposition,"
  15649. + " :reworkprocedureid,"
  15650. + " :reworkprocedurecode,"
  15651. + " :reworkprocedurename,"
  15652. + " :remarks,"
  15653. + " :accountdata,"
  15654. + " :accountid,"
  15655. + " :GoodsLevelID,"
  15656. + " :GoodsLevelTypeID,"
  15657. + " :createuserid,"
  15658. + " :updateuserid,"
  15659. + " :groutingdate,"
  15660. + " :groutinguserid,"
  15661. + " :groutingusercode,"
  15662. + " :groutingnum,"
  15663. + " :groutingmouldcode,"
  15664. + " :mouldcode,"
  15665. + ":groutingdailyid,"
  15666. + ":groutingdailydetailid,"
  15667. + ":groutinglineid,"
  15668. + " :groutinglinecode,"
  15669. + ":groutinglinename,"
  15670. + ":gmouldtypeid,"
  15671. + ":canmanytimes,"
  15672. + ":groutinglinedetailid,"
  15673. + ":specialRepairflag,"
  15674. + ":classesSettingID,"
  15675. + ":logoID"
  15676. + ")";
  15677. #endregion
  15678. #region OracleParameter
  15679. OracleParameter[] paras = new OracleParameter[] {
  15680. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  15681. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  15682. new OracleParameter(":barcode",productionData.Barcode),
  15683. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  15684. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  15685. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  15686. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  15687. new OracleParameter(":procedureid",productionData.ProcedureID),
  15688. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  15689. new OracleParameter(":procedurename",productionData.ProcedureName),
  15690. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  15691. new OracleParameter(":modeltype",productionData.ModelType),
  15692. new OracleParameter(":piecetype",productionData.PieceType),
  15693. new OracleParameter(":isreworked",productionData.IsReworked),
  15694. new OracleParameter(":nodetype",productionData.NodeType),
  15695. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  15696. new OracleParameter(":isrefire",productionData.IsReFire),
  15697. new OracleParameter(":organizationid",productionData.OrganizationID),
  15698. new OracleParameter(":goodsid",productionData.GoodsID),
  15699. new OracleParameter(":goodscode",productionData.GoodsCode),
  15700. new OracleParameter(":goodsname",productionData.GoodsName),
  15701. new OracleParameter(":userid",productionData.UserID),
  15702. new OracleParameter(":usercode",productionData.UserCode),
  15703. new OracleParameter(":username",productionData.UserName),
  15704. new OracleParameter(":kilnid",productionData.KilnID),
  15705. new OracleParameter(":kilncode",productionData.KilnCode),
  15706. new OracleParameter(":kilnname",productionData.KilnName),
  15707. new OracleParameter(":kilncarid",productionData.KilnCarID),
  15708. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  15709. new OracleParameter(":kilncarname",productionData.KilnCarName),
  15710. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  15711. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  15712. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  15713. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  15714. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  15715. new OracleParameter(":remarks",productionData.Remarks),
  15716. new OracleParameter(":accountdata",accountDate),
  15717. new OracleParameter(":accountid",sUserInfo.AccountID),
  15718. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  15719. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  15720. new OracleParameter(":createuserid",sUserInfo.UserID),
  15721. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15722. new OracleParameter(":groutingdate",GroutingDate),
  15723. new OracleParameter(":groutinguserid",GroutingUserID),
  15724. new OracleParameter(":groutingusercode",GroutingUserCode),
  15725. new OracleParameter(":groutingnum",GroutingNum),
  15726. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  15727. new OracleParameter(":mouldcode",MouldCode),
  15728. new OracleParameter(":groutingdailyid",GroutingDailyID),
  15729. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  15730. new OracleParameter(":groutinglineid",GroutingLineID),
  15731. new OracleParameter(":groutinglinecode",GroutingLineCode),
  15732. new OracleParameter(":groutinglinename",GroutingLineName),
  15733. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  15734. new OracleParameter(":canmanytimes",CanManyTimes),
  15735. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  15736. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  15737. new OracleParameter(":logoID",logoID),
  15738. };
  15739. #endregion
  15740. foreach (OracleParameter para in paras)
  15741. {
  15742. if (string.IsNullOrEmpty(para.Value + ""))
  15743. {
  15744. para.Value = DBNull.Value;
  15745. }
  15746. }
  15747. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  15748. OutSpecialRepairflag = returnVal;
  15749. // 失败
  15750. if (result != Constant.INT_IS_ONE)
  15751. {
  15752. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  15753. }
  15754. // 成功返回null
  15755. return null;
  15756. }
  15757. #region 保存半检登记
  15758. /// <summary>
  15759. /// 保存半检登记
  15760. /// </summary>
  15761. /// <param name="entity">半检实体类</param>
  15762. /// <param name="sUserInfo">用户基本信息</param>
  15763. /// <returns>ServiceResultEntity</returns>
  15764. /// <remarks>
  15765. /// 王鑫 2016.06.27 新建
  15766. /// </remarks>
  15767. public static ServiceResultEntity AddSemiCheck(SemiCheckEntity[] entityobj, SUserInfo sUserInfo)
  15768. {
  15769. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  15770. oracleTrConn.IgnoreCase = false;
  15771. ServiceResultEntity resultEntity = new ServiceResultEntity();
  15772. try
  15773. {
  15774. oracleTrConn.Connect();
  15775. SemiCheckEntity entity = entityobj[0];
  15776. string errMsg = "";
  15777. if (entity.SemiCheckCategory == 1) // 半检登记
  15778. {
  15779. errMsg = AddNormalSemiCheck(oracleTrConn, entity, sUserInfo);
  15780. }
  15781. else if (entity.SemiCheckCategory == 2)// 复检登记
  15782. {
  15783. errMsg = AddReSemiCheck(oracleTrConn, entity, sUserInfo);
  15784. }
  15785. else if (entity.SemiCheckCategory == 3)// 撤销复检
  15786. {
  15787. errMsg = AddCancelSemiCheck(oracleTrConn, entity, sUserInfo);
  15788. }
  15789. // 没有错误 提交事务
  15790. if (string.IsNullOrEmpty(errMsg))
  15791. {
  15792. oracleTrConn.Commit();
  15793. }
  15794. else
  15795. {
  15796. resultEntity.Message = errMsg;
  15797. }
  15798. }
  15799. catch (Exception ex)
  15800. {
  15801. oracleTrConn.Rollback();
  15802. throw ex;
  15803. }
  15804. finally
  15805. {
  15806. // 释放资源
  15807. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  15808. {
  15809. oracleTrConn.Disconnect();
  15810. }
  15811. }
  15812. return resultEntity;
  15813. }
  15814. #endregion
  15815. /// <summary>
  15816. /// 半检数据
  15817. /// </summary>
  15818. /// <param name="oracleTrConn">数据连接对象</param>
  15819. /// <param name="entity">半检实体类</param>
  15820. /// <param name="sUserInfo">用户基本信息</param>
  15821. /// <returns>string</returns>
  15822. /// <remarks>
  15823. /// 王鑫 2016.06.27 新建
  15824. /// </remarks>
  15825. private static string AddNormalSemiCheck(IDBTransaction oracleTrConn,
  15826. SemiCheckEntity entity,
  15827. SUserInfo sUserInfo)
  15828. {
  15829. try
  15830. {
  15831. // 获得账务日期
  15832. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  15833. string errMsg = string.Empty;
  15834. // 本批采集的批次号
  15835. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  15836. // 条码
  15837. string barcode = entity.BarCode;
  15838. if (string.IsNullOrEmpty(barcode))
  15839. {
  15840. throw new Exception("传入的条码号为空");
  15841. }
  15842. // 半检工号ID
  15843. int workUserID = Convert.ToInt32(entity.SemiCheckUserID);
  15844. // 半检工号编码
  15845. string workUserCode = entity.SemiCheckUserCode;
  15846. // 查询新插入的半检数据ID
  15847. string sql = "select SEQ_PM_SemiCheck_ID.nextval from dual";
  15848. string idStr = "";
  15849. if (entity.SemiCheckEditType == 1) //新增
  15850. {
  15851. idStr = oracleTrConn.GetSqlResultToStr(sql);
  15852. }
  15853. else if (entity.SemiCheckEditType == 2) //编辑返工
  15854. {
  15855. if (entity.SemiCheckType != "0") //正常
  15856. {
  15857. idStr = oracleTrConn.GetSqlResultToStr(sql);
  15858. }
  15859. }
  15860. else if (entity.SemiCheckEditType == 3) //编辑不合格
  15861. {
  15862. if (entity.SemiCheckType != "0") //正常
  15863. {
  15864. idStr = oracleTrConn.GetSqlResultToStr(sql);
  15865. }
  15866. }
  15867. // 保存时再验证,前台已有缺陷不能为空的验证,但还是产生了无责任和缺陷记录的数据,后台保存时增加验证。
  15868. if (!string.IsNullOrEmpty(idStr) && (entity.SemiCheckDefects == null || entity.SemiCheckDefects.Count == 0))
  15869. {
  15870. errMsg = "缺陷责任记录不能为空";
  15871. return errMsg;
  15872. }
  15873. if (entity.SemiCheckEditType == 1) //新增
  15874. {
  15875. #region 校验条码有效性
  15876. errMsg = CheckBarcodeByNew(oracleTrConn, barcode, sUserInfo);
  15877. if (!string.IsNullOrEmpty(errMsg))
  15878. {
  15879. return errMsg;
  15880. }
  15881. #endregion
  15882. #region 添加半检数据
  15883. entity.SemiCheckID = Convert.ToInt32(idStr);
  15884. if (entity.SemiCheckType == "2")
  15885. {
  15886. errMsg = AddSemiCheckDataNoPass(oracleTrConn, entity, sUserInfo);
  15887. }
  15888. else
  15889. {
  15890. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  15891. }
  15892. if (!string.IsNullOrEmpty(errMsg))
  15893. {
  15894. return errMsg;
  15895. }
  15896. #endregion
  15897. #region 条码有缺陷
  15898. #region 是次品 添加废弃产品
  15899. string ResponProcedureidStr = "";
  15900. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  15901. {
  15902. #region 添加废弃产品
  15903. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  15904. #region 属性赋值
  15905. scrapProduct.BarCode = entity.BarCode;
  15906. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  15907. // 不能责任人吗? TODO 单独责任时,没有插入废品数据。
  15908. //scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  15909. scrapProduct.ResponType = (int)Constant.ScrapResponType.Person;
  15910. scrapProduct.ScrapDate = accountDate;// sysdate
  15911. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  15912. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  15913. scrapProduct.Auditor = sUserInfo.UserID;
  15914. scrapProduct.AuditlDate = accountDate;// sysdate
  15915. scrapProduct.AccountDate = accountDate;
  15916. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  15917. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  15918. if (ds != null && ds.Tables[0].Rows.Count > 0)
  15919. {
  15920. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  15921. }
  15922. scrapProduct.GoodsLevelTypeID = 13;
  15923. //scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  15924. // 查询新插入的废弃ID
  15925. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  15926. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  15927. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  15928. scrapProduct.ScrapType = 2;
  15929. #endregion
  15930. // 保存报废
  15931. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  15932. // 保存失败
  15933. if (!string.IsNullOrEmpty(errMsg))
  15934. {
  15935. return errMsg;
  15936. }
  15937. #endregion
  15938. }
  15939. #endregion
  15940. // 存在缺陷 插入缺陷表
  15941. if (entity.SemiCheckDefects != null)
  15942. {
  15943. int row = 0;
  15944. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  15945. {
  15946. if (row == 0)
  15947. {
  15948. #region 保存缺陷
  15949. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  15950. semiCheckDefect.ScrapResponFlag
  15951. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  15952. // 保存缺陷
  15953. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  15954. if (!string.IsNullOrEmpty(errMsg))
  15955. {
  15956. return errMsg;
  15957. }
  15958. #endregion
  15959. #region 是不合格 添加废弃责任工序
  15960. if (entity.SemiCheckType == "2")
  15961. {
  15962. //if (semiCheckDefect.DefectProcedureID != null)
  15963. {
  15964. #region 添加责任工序
  15965. ResponProcedureEntity responProce = new ResponProcedureEntity();
  15966. // 新建-不合格 获取生产线及生产数据ID
  15967. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  15968. OracleParameter[] oracleParameters = new OracleParameter[] {
  15969. new OracleParameter(":barcode",entity.BarCode),
  15970. };
  15971. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  15972. if (ds != null && ds.Tables[0].Rows.Count > 0)
  15973. {
  15974. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  15975. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  15976. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  15977. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  15978. }
  15979. //新建-不合格 获取生产线及生产数据ID end
  15980. #region 属性赋值
  15981. responProce.BarCode = entity.BarCode;
  15982. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  15983. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  15984. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  15985. responProce.UserID = semiCheckDefect.DefectUserID;
  15986. responProce.UserCode = semiCheckDefect.DefectUserCode;
  15987. responProce.UserName = semiCheckDefect.DefectUserName;
  15988. responProce.Remarks = semiCheckDefect.Remarks;
  15989. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  15990. #endregion
  15991. // 保存责任工序
  15992. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  15993. // 保存失败
  15994. if (!string.IsNullOrEmpty(errMsg))
  15995. {
  15996. return errMsg;
  15997. }
  15998. #endregion
  15999. }
  16000. }
  16001. #endregion
  16002. }
  16003. row++;
  16004. }
  16005. }
  16006. #endregion
  16007. #region 条码是不合格 删除在产产品数据
  16008. if (entity.SemiCheckType == "2") //新建时不合格
  16009. {
  16010. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  16011. sql = @"update TP_PM_InProduction set GoodsLevelID=
  16012. (
  16013. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16014. )
  16015. ,GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16016. where barcode=:barcode";
  16017. OracleParameter[] oracleParameters = new OracleParameter[] {
  16018. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  16019. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16020. new OracleParameter(":accountid",sUserInfo.AccountID),
  16021. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16022. new OracleParameter(":barcode",entity.BarCode),
  16023. // new OracleParameter(":createuserid",sUserInfo.UserID),
  16024. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16025. };
  16026. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16027. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  16028. string sqlInsert = @"insert into TP_PM_InProductionTrash
  16029. (
  16030. BarCode,
  16031. ProductionLineID,
  16032. ProductionLineCode,
  16033. ProductionLineName,
  16034. ProcedureModel,
  16035. ModelType,
  16036. DefectFlag,
  16037. ReworkProcedureID,
  16038. IsPublicBody,
  16039. IsReFire,
  16040. GoodsLevelID,
  16041. GoodsLevelTypeID,
  16042. GoodsID,
  16043. GoodsCode,
  16044. GoodsName,
  16045. UserID,
  16046. GroutingDailyID,
  16047. GroutingDailyDetailID,
  16048. GroutingDate,
  16049. GroutingLineID,
  16050. GroutingLineCode,
  16051. GroutingLineName,
  16052. GMouldTypeID,
  16053. CanManyTimes,
  16054. GroutingLineDetailID,
  16055. GroutingMouldCode,
  16056. MouldCode,
  16057. GroutingUserID,
  16058. GroutingUserCode,
  16059. GroutingNum,
  16060. Remarks,
  16061. KilnID,
  16062. KilnCode,
  16063. KilnName,
  16064. KilnCarID,
  16065. KilnCarCode,
  16066. KilnCarName,
  16067. KilnCarBatchNo,
  16068. KilnCarPosition,
  16069. AccountID,
  16070. ValueFlag,
  16071. CreateUserID,
  16072. UpdateUserID,
  16073. SpecialRepairflag,
  16074. FlowProcedureID,
  16075. FlowProcedureTime,
  16076. ProcedureID,
  16077. ProcedureTime,
  16078. ProductionDataID,
  16079. logoid,
  16080. ISREWORKFLAG, SEMICHECKID
  16081. )
  16082. select
  16083. BarCode,
  16084. ProductionLineID,
  16085. ProductionLineCode,
  16086. ProductionLineName,
  16087. ProcedureModel,
  16088. ModelType,
  16089. DefectFlag,
  16090. ReworkProcedureID,
  16091. IsPublicBody,
  16092. IsReFire,
  16093. -- GoodsLevelID,
  16094. --GoodsLevelTypeID,
  16095. (
  16096. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16097. )
  16098. ,13,
  16099. GoodsID,
  16100. GoodsCode,
  16101. GoodsName,
  16102. UserID,
  16103. GroutingDailyID,
  16104. GroutingDailyDetailID,
  16105. GroutingDate,
  16106. GroutingLineID,
  16107. GroutingLineCode,
  16108. GroutingLineName,
  16109. GMouldTypeID,
  16110. CanManyTimes,
  16111. GroutingLineDetailID,
  16112. GroutingMouldCode,
  16113. MouldCode,
  16114. GroutingUserID,
  16115. GroutingUserCode,
  16116. GroutingNum,
  16117. Remarks,
  16118. KilnID,
  16119. KilnCode,
  16120. KilnName,
  16121. KilnCarID,
  16122. KilnCarCode,
  16123. KilnCarName,
  16124. KilnCarBatchNo,
  16125. KilnCarPosition,
  16126. AccountID,
  16127. ValueFlag,
  16128. :CreateUserID,
  16129. :UpdateUserID,
  16130. SpecialRepairflag,
  16131. FlowProcedureID,
  16132. FlowProcedureTime,
  16133. FlowProcedureID,
  16134. ProcedureTime,
  16135. ProductionDataID,
  16136. logoid,
  16137. ISREWORKFLAG, SEMICHECKID
  16138. from TP_PM_InProduction
  16139. where barcode=:barcode
  16140. ";
  16141. oracleParameters = new OracleParameter[] {
  16142. new OracleParameter(":barcode",entity.BarCode),
  16143. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16144. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16145. new OracleParameter(":accountid",sUserInfo.AccountID),
  16146. };
  16147. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16148. // 删除在产数据
  16149. sql = "delete tp_pm_inproduction where barcode = :barcode";
  16150. oracleParameters = new OracleParameter[] {
  16151. new OracleParameter(":barcode",entity.BarCode),
  16152. };
  16153. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16154. }
  16155. else if (entity.SemiCheckType == "1") //返工
  16156. {
  16157. sql = @"update TP_PM_InProduction set IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16158. where barcode=:barcode";
  16159. OracleParameter[] oracleParameters = new OracleParameter[] {
  16160. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16161. new OracleParameter(":barcode",entity.BarCode),
  16162. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16163. };
  16164. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16165. }
  16166. #endregion
  16167. }
  16168. else if (entity.SemiCheckEditType == 2) //编辑返工
  16169. {
  16170. #region 校验条码有效性
  16171. errMsg = CheckBarcodeByEditRework(oracleTrConn, barcode, sUserInfo);
  16172. if (!string.IsNullOrEmpty(errMsg))
  16173. {
  16174. return errMsg;
  16175. }
  16176. #endregion
  16177. #region 删除当前半检数据
  16178. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  16179. if (!string.IsNullOrEmpty(errMsg))
  16180. {
  16181. return errMsg;
  16182. }
  16183. #endregion
  16184. if (entity.SemiCheckType != "0") //正常
  16185. {
  16186. #region 添加半检数据
  16187. entity.SemiCheckID = Convert.ToInt32(idStr);
  16188. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  16189. if (!string.IsNullOrEmpty(errMsg))
  16190. {
  16191. return errMsg;
  16192. }
  16193. #endregion
  16194. }
  16195. #region 条码有缺陷
  16196. #region 是次品 添加废弃产品
  16197. string ResponProcedureidStr = "";
  16198. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  16199. {
  16200. #region 添加废弃产品
  16201. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16202. #region 属性赋值
  16203. scrapProduct.BarCode = entity.BarCode;
  16204. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16205. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16206. scrapProduct.ScrapDate = accountDate;
  16207. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  16208. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16209. scrapProduct.Auditor = sUserInfo.UserID;
  16210. scrapProduct.AuditlDate = accountDate;
  16211. scrapProduct.AccountDate = accountDate;
  16212. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  16213. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  16214. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  16215. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  16216. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16217. {
  16218. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16219. }
  16220. scrapProduct.GoodsLevelTypeID = 13;
  16221. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16222. // 查询新插入的废弃ID
  16223. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16224. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16225. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16226. scrapProduct.ScrapType = 2;
  16227. #endregion
  16228. // 保存报废
  16229. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16230. // 保存失败
  16231. if (!string.IsNullOrEmpty(errMsg))
  16232. {
  16233. return errMsg;
  16234. }
  16235. #endregion
  16236. }
  16237. #endregion
  16238. // 存在缺陷 插入缺陷表
  16239. if (entity.SemiCheckDefects != null)
  16240. {
  16241. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16242. {
  16243. #region 保存缺陷
  16244. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16245. semiCheckDefect.ScrapResponFlag
  16246. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16247. // 保存缺陷
  16248. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16249. if (!string.IsNullOrEmpty(errMsg))
  16250. {
  16251. return errMsg;
  16252. }
  16253. #endregion
  16254. #region 是不合格 添加废弃责任工序
  16255. if (entity.SemiCheckType == "2")
  16256. {
  16257. //if (semiCheckDefect.DefectProcedureID != null)
  16258. {
  16259. #region 添加责任工序
  16260. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16261. // 获取生产线及生产数据ID
  16262. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  16263. OracleParameter[] oracleParameters = new OracleParameter[] {
  16264. new OracleParameter(":barcode",entity.BarCode),
  16265. };
  16266. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  16267. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16268. {
  16269. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16270. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16271. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16272. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16273. }
  16274. //获取生产线及生产数据ID end
  16275. #region 属性赋值
  16276. responProce.BarCode = entity.BarCode;
  16277. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  16278. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  16279. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  16280. responProce.UserID = semiCheckDefect.DefectUserID;
  16281. responProce.UserCode = semiCheckDefect.DefectUserCode;
  16282. responProce.UserName = semiCheckDefect.DefectUserName;
  16283. responProce.Remarks = semiCheckDefect.Remarks;
  16284. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16285. #endregion
  16286. // 保存责任工序
  16287. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  16288. // 保存失败
  16289. if (!string.IsNullOrEmpty(errMsg))
  16290. {
  16291. return errMsg;
  16292. }
  16293. #endregion
  16294. }
  16295. }
  16296. #endregion
  16297. }
  16298. }
  16299. #endregion
  16300. #region 条码是不合格 删除在产产品数据
  16301. if (entity.SemiCheckType == "2") //编辑时不合格
  16302. {
  16303. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  16304. sql = @"update TP_PM_InProduction set GoodsLevelID= (
  16305. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16306. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,IsReworkFlag=0,
  16307. updateuserid=:updateuserid
  16308. where barcode=:barcode";
  16309. OracleParameter[] oracleParameters = new OracleParameter[] {
  16310. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  16311. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16312. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16313. new OracleParameter(":barcode",entity.BarCode),
  16314. //new OracleParameter(":createuserid",sUserInfo.UserID),
  16315. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16316. new OracleParameter(":accountid",sUserInfo.AccountID),
  16317. };
  16318. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16319. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  16320. string sqlInsert = @"insert into TP_PM_InProductionTrash
  16321. (
  16322. BarCode,
  16323. ProductionLineID,
  16324. ProductionLineCode,
  16325. ProductionLineName,
  16326. ProcedureModel,
  16327. ModelType,
  16328. DefectFlag,
  16329. ReworkProcedureID,
  16330. IsPublicBody,
  16331. IsReFire,
  16332. GoodsLevelID,
  16333. GoodsLevelTypeID,
  16334. GoodsID,
  16335. GoodsCode,
  16336. GoodsName,
  16337. UserID,
  16338. GroutingDailyID,
  16339. GroutingDailyDetailID,
  16340. GroutingDate,
  16341. GroutingLineID,
  16342. GroutingLineCode,
  16343. GroutingLineName,
  16344. GMouldTypeID,
  16345. CanManyTimes,
  16346. GroutingLineDetailID,
  16347. GroutingMouldCode,
  16348. MouldCode,
  16349. GroutingUserID,
  16350. GroutingUserCode,
  16351. GroutingNum,
  16352. Remarks,
  16353. KilnID,
  16354. KilnCode,
  16355. KilnName,
  16356. KilnCarID,
  16357. KilnCarCode,
  16358. KilnCarName,
  16359. KilnCarBatchNo,
  16360. KilnCarPosition,
  16361. AccountID,
  16362. ValueFlag,
  16363. CreateUserID,
  16364. UpdateUserID,
  16365. SpecialRepairflag,
  16366. FlowProcedureID,
  16367. FlowProcedureTime,
  16368. ProcedureID,
  16369. ProcedureTime,
  16370. ProductionDataID,
  16371. logoid, SEMICHECKID
  16372. )
  16373. select
  16374. BarCode,
  16375. ProductionLineID,
  16376. ProductionLineCode,
  16377. ProductionLineName,
  16378. ProcedureModel,
  16379. ModelType,
  16380. DefectFlag,
  16381. ReworkProcedureID,
  16382. IsPublicBody,
  16383. IsReFire,
  16384. -- GoodsLevelID,
  16385. --GoodsLevelTypeID,
  16386. (
  16387. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16388. )
  16389. ,13,
  16390. GoodsID,
  16391. GoodsCode,
  16392. GoodsName,
  16393. UserID,
  16394. GroutingDailyID,
  16395. GroutingDailyDetailID,
  16396. GroutingDate,
  16397. GroutingLineID,
  16398. GroutingLineCode,
  16399. GroutingLineName,
  16400. GMouldTypeID,
  16401. CanManyTimes,
  16402. GroutingLineDetailID,
  16403. GroutingMouldCode,
  16404. MouldCode,
  16405. GroutingUserID,
  16406. GroutingUserCode,
  16407. GroutingNum,
  16408. Remarks,
  16409. KilnID,
  16410. KilnCode,
  16411. KilnName,
  16412. KilnCarID,
  16413. KilnCarCode,
  16414. KilnCarName,
  16415. KilnCarBatchNo,
  16416. KilnCarPosition,
  16417. AccountID,
  16418. ValueFlag,
  16419. :CreateUserID,
  16420. :UpdateUserID,
  16421. SpecialRepairflag,
  16422. FlowProcedureID,
  16423. FlowProcedureTime,
  16424. FlowProcedureID,
  16425. ProcedureTime,
  16426. ProductionDataID,
  16427. logoid,
  16428. :SemiCheckID
  16429. from TP_PM_InProduction
  16430. where barcode=:barcode
  16431. ";
  16432. oracleParameters = new OracleParameter[] {
  16433. new OracleParameter(":barcode",entity.BarCode),
  16434. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16435. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16436. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16437. new OracleParameter(":accountid",sUserInfo.AccountID),
  16438. };
  16439. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16440. // 删除在产数据
  16441. sql = "delete tp_pm_inproduction where barcode = :barcode";
  16442. oracleParameters = new OracleParameter[] {
  16443. new OracleParameter(":barcode",entity.BarCode),
  16444. };
  16445. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16446. }
  16447. else if (entity.SemiCheckType == "1") //返工
  16448. {
  16449. sql = @"update TP_PM_InProduction set IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  16450. where barcode=:barcode";
  16451. OracleParameter[] oracleParameters = new OracleParameter[] {
  16452. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  16453. new OracleParameter(":barcode",entity.BarCode),
  16454. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16455. };
  16456. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16457. }
  16458. else if (entity.SemiCheckType == "0") //正常
  16459. {
  16460. sql = @"update TP_PM_InProduction set IsReworkFlag=0,SemiCheckID=null,updateuserid=:updateuserid
  16461. where barcode=:barcode";
  16462. OracleParameter[] oracleParameters = new OracleParameter[] {
  16463. new OracleParameter(":barcode",entity.BarCode),
  16464. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16465. };
  16466. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16467. }
  16468. #endregion
  16469. }
  16470. else if (entity.SemiCheckEditType == 3) //编辑不合格
  16471. {
  16472. #region 校验条码有效性
  16473. errMsg = CheckBarcodeByEditNoPass(oracleTrConn, barcode, sUserInfo);
  16474. if (!string.IsNullOrEmpty(errMsg))
  16475. {
  16476. return errMsg;
  16477. }
  16478. #endregion
  16479. #region 删除当前半检数据
  16480. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  16481. if (!string.IsNullOrEmpty(errMsg))
  16482. {
  16483. return errMsg;
  16484. }
  16485. #endregion
  16486. if (entity.SemiCheckType != "0") //正常
  16487. {
  16488. #region 添加半检数据
  16489. entity.SemiCheckID = Convert.ToInt32(idStr);
  16490. errMsg = AddSemiCheckDataTrash(oracleTrConn, entity, sUserInfo);
  16491. if (!string.IsNullOrEmpty(errMsg))
  16492. {
  16493. return errMsg;
  16494. }
  16495. #endregion
  16496. }
  16497. #region 条码是不合格 删除在产产品数据
  16498. OracleParameter[] spParameters = null;
  16499. int spResult = 0;
  16500. if (entity.SemiCheckType == "2") //编辑时不合格
  16501. {
  16502. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  16503. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  16504. " from TP_PM_ScrapProduct sp\n" +
  16505. " where sp.barcode = :barcode\n" +
  16506. " and sp.auditstatus = 1\n" +
  16507. " and sp.valueflag = '1'\n" +
  16508. " and sp.scraptype = '2'";
  16509. spParameters = new OracleParameter[] {
  16510. new OracleParameter(":barcode",entity.BarCode),
  16511. };
  16512. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  16513. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  16514. spParameters = new OracleParameter[] {
  16515. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16516. new OracleParameter(":scrapproductid",scrapproductid),
  16517. };
  16518. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16519. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  16520. //oracleParameters = new OracleParameter[] {
  16521. // new OracleParameter(":barcode",entity.BarCode),
  16522. //};
  16523. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16524. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  16525. //OracleParameter[] oracleParameters = new OracleParameter[] {
  16526. // new OracleParameter(":barcode",entity.BarCode),
  16527. //};
  16528. //int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16529. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  16530. //oracleParameters = new OracleParameter[] {
  16531. // new OracleParameter(":barcode",entity.BarCode),
  16532. //};
  16533. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16534. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  16535. ////oracleParameters = new OracleParameter[] {
  16536. //// new OracleParameter(":barcode",entity.BarCode),
  16537. ////};
  16538. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16539. #endregion
  16540. #region 2.修改在产回收站表中的数据(产品等级【13不合格】,半检登记ID=新记录的半检登记ID)。
  16541. sql = @"update TP_PM_InProductionTrash set GoodsLevelID= (
  16542. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  16543. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID where barcode=:barcode";
  16544. OracleParameter[] oracleParameters = new OracleParameter[] {
  16545. new OracleParameter(":barcode",entity.BarCode),
  16546. new OracleParameter(":accountid",sUserInfo.AccountID),
  16547. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  16548. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16549. };
  16550. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16551. #endregion
  16552. #region 条码有缺陷
  16553. #region 是次品 添加废弃产品
  16554. string ResponProcedureidStr = "";
  16555. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  16556. {
  16557. #region 添加废弃产品
  16558. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16559. #region 属性赋值
  16560. scrapProduct.BarCode = entity.BarCode;
  16561. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16562. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16563. scrapProduct.ScrapDate = accountDate;
  16564. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  16565. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16566. scrapProduct.Auditor = sUserInfo.UserID;
  16567. scrapProduct.AuditlDate = accountDate;
  16568. scrapProduct.AccountDate = accountDate;
  16569. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  16570. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  16571. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16572. {
  16573. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16574. }
  16575. scrapProduct.GoodsLevelTypeID = 13;
  16576. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  16577. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  16578. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16579. // 查询新插入的废弃ID
  16580. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16581. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16582. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16583. scrapProduct.ScrapType = 2;
  16584. #endregion
  16585. // 保存报废
  16586. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16587. // 保存失败
  16588. if (!string.IsNullOrEmpty(errMsg))
  16589. {
  16590. return errMsg;
  16591. }
  16592. #endregion
  16593. }
  16594. #endregion
  16595. // 存在缺陷 插入缺陷表
  16596. if (entity.SemiCheckDefects != null)
  16597. {
  16598. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16599. {
  16600. #region 保存缺陷
  16601. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16602. semiCheckDefect.ScrapResponFlag
  16603. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16604. // 保存缺陷
  16605. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16606. if (!string.IsNullOrEmpty(errMsg))
  16607. {
  16608. return errMsg;
  16609. }
  16610. #endregion
  16611. #region 是不合格 添加废弃责任工序
  16612. if (entity.SemiCheckType == "2")
  16613. {
  16614. //if (semiCheckDefect.DefectProcedureID != null)
  16615. {
  16616. #region 添加责任工序
  16617. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16618. // 取生产线及生产数据ID
  16619. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProductionTrash where barcode=:barcode";
  16620. oracleParameters = new OracleParameter[] {
  16621. new OracleParameter(":barcode",entity.BarCode),
  16622. };
  16623. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  16624. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16625. {
  16626. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16627. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16628. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16629. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16630. }
  16631. //获取生产线及生产数据ID end
  16632. #region 属性赋值
  16633. responProce.BarCode = entity.BarCode;
  16634. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  16635. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  16636. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  16637. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  16638. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  16639. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  16640. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  16641. responProce.UserID = semiCheckDefect.DefectUserID;
  16642. responProce.UserCode = semiCheckDefect.DefectUserCode;
  16643. responProce.UserName = semiCheckDefect.DefectUserName;
  16644. responProce.Remarks = semiCheckDefect.Remarks;
  16645. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16646. #endregion
  16647. // 保存责任工序
  16648. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  16649. // 保存失败
  16650. if (!string.IsNullOrEmpty(errMsg))
  16651. {
  16652. return errMsg;
  16653. }
  16654. #endregion
  16655. }
  16656. }
  16657. #endregion
  16658. }
  16659. }
  16660. #endregion
  16661. }
  16662. else if (entity.SemiCheckType == "1") //返工
  16663. {
  16664. #region 1.从在产回收站中把数据恢复到在产表中。
  16665. string sqlInsert = @"insert into TP_PM_InProduction
  16666. (
  16667. BarCode,
  16668. ProductionLineID,
  16669. ProductionLineCode,
  16670. ProductionLineName,
  16671. ProcedureModel,
  16672. ModelType,
  16673. DefectFlag,
  16674. ReworkProcedureID,
  16675. IsPublicBody,
  16676. IsReFire,
  16677. GoodsLevelID,
  16678. GoodsLevelTypeID,
  16679. GoodsID,
  16680. GoodsCode,
  16681. GoodsName,
  16682. UserID,
  16683. GroutingDailyID,
  16684. GroutingDailyDetailID,
  16685. GroutingDate,
  16686. GroutingLineID,
  16687. GroutingLineCode,
  16688. GroutingLineName,
  16689. GMouldTypeID,
  16690. CanManyTimes,
  16691. GroutingLineDetailID,
  16692. GroutingMouldCode,
  16693. MouldCode,
  16694. GroutingUserID,
  16695. GroutingUserCode,
  16696. GroutingNum,
  16697. Remarks,
  16698. KilnID,
  16699. KilnCode,
  16700. KilnName,
  16701. KilnCarID,
  16702. KilnCarCode,
  16703. KilnCarName,
  16704. KilnCarBatchNo,
  16705. KilnCarPosition,
  16706. AccountID,
  16707. ValueFlag,
  16708. CreateUserID,
  16709. UpdateUserID,
  16710. SpecialRepairflag,
  16711. FlowProcedureID,
  16712. FlowProcedureTime,
  16713. ProcedureID,
  16714. ProcedureTime,
  16715. ProductionDataID,
  16716. logoid,
  16717. IsReworkFlag,
  16718. SemiCheckID
  16719. )
  16720. select
  16721. BarCode,
  16722. ProductionLineID,
  16723. ProductionLineCode,
  16724. ProductionLineName,
  16725. ProcedureModel,
  16726. ModelType,
  16727. DefectFlag,
  16728. ReworkProcedureID,
  16729. IsPublicBody,
  16730. IsReFire,
  16731. null,
  16732. null,
  16733. GoodsID,
  16734. GoodsCode,
  16735. GoodsName,
  16736. UserID,
  16737. GroutingDailyID,
  16738. GroutingDailyDetailID,
  16739. GroutingDate,
  16740. GroutingLineID,
  16741. GroutingLineCode,
  16742. GroutingLineName,
  16743. GMouldTypeID,
  16744. CanManyTimes,
  16745. GroutingLineDetailID,
  16746. GroutingMouldCode,
  16747. MouldCode,
  16748. GroutingUserID,
  16749. GroutingUserCode,
  16750. GroutingNum,
  16751. Remarks,
  16752. KilnID,
  16753. KilnCode,
  16754. KilnName,
  16755. KilnCarID,
  16756. KilnCarCode,
  16757. KilnCarName,
  16758. KilnCarBatchNo,
  16759. KilnCarPosition,
  16760. AccountID,
  16761. ValueFlag,
  16762. :CreateUserID,
  16763. :UpdateUserID,
  16764. SpecialRepairflag,
  16765. FlowProcedureID,
  16766. FlowProcedureTime,
  16767. FlowProcedureID,
  16768. ProcedureTime,
  16769. ProductionDataID,
  16770. logoid,
  16771. 1,
  16772. :SemiCheckID
  16773. from TP_PM_InProductionTrash
  16774. where barcode=:barcode
  16775. ";
  16776. OracleParameter[] oracleParameters = new OracleParameter[] {
  16777. new OracleParameter(":barcode",entity.BarCode),
  16778. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16779. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16780. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16781. };
  16782. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16783. #endregion
  16784. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  16785. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  16786. " from TP_PM_ScrapProduct sp\n" +
  16787. " where sp.barcode = :barcode\n" +
  16788. " and sp.auditstatus = 1\n" +
  16789. " and sp.valueflag = '1'\n" +
  16790. " and sp.scraptype = '2'";
  16791. spParameters = new OracleParameter[] {
  16792. new OracleParameter(":barcode",entity.BarCode),
  16793. };
  16794. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  16795. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  16796. spParameters = new OracleParameter[] {
  16797. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16798. new OracleParameter(":scrapproductid",scrapproductid),
  16799. };
  16800. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16801. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  16802. //oracleParameters = new OracleParameter[] {
  16803. // new OracleParameter(":barcode",entity.BarCode),
  16804. //};
  16805. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16806. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  16807. //oracleParameters = new OracleParameter[] {
  16808. // new OracleParameter(":barcode",entity.BarCode),
  16809. //};
  16810. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16811. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  16812. //oracleParameters = new OracleParameter[] {
  16813. // new OracleParameter(":barcode",entity.BarCode),
  16814. //};
  16815. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16816. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  16817. ////oracleParameters = new OracleParameter[] {
  16818. //// new OracleParameter(":barcode",entity.BarCode),
  16819. ////};
  16820. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16821. #endregion
  16822. #region 3.删除在产产品数据
  16823. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  16824. oracleParameters = new OracleParameter[] {
  16825. new OracleParameter(":barcode",entity.BarCode),
  16826. };
  16827. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16828. #endregion
  16829. #region 4.更新半检数据产品分级
  16830. sql = "update TP_PM_SemiCheck set GoodsLevelID=null,GoodsLevelTypeID=null where SemiCheckID=:SemiCheckID";
  16831. oracleParameters = new OracleParameter[] {
  16832. new OracleParameter(":SemiCheckID",idStr),
  16833. };
  16834. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16835. #endregion
  16836. #region 存在缺陷 插入缺陷表
  16837. if (entity.SemiCheckDefects != null)
  16838. {
  16839. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16840. {
  16841. #region 保存缺陷
  16842. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  16843. semiCheckDefect.ScrapResponFlag
  16844. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16845. // 保存缺陷
  16846. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16847. if (!string.IsNullOrEmpty(errMsg))
  16848. {
  16849. return errMsg;
  16850. }
  16851. #endregion
  16852. }
  16853. }
  16854. #endregion
  16855. }
  16856. else if (entity.SemiCheckType == "0") //正常
  16857. {
  16858. #region 1.从在产回收站中把数据恢复到在产表中。
  16859. string sqlInsert = @"insert into TP_PM_InProduction
  16860. (
  16861. BarCode,
  16862. ProductionLineID,
  16863. ProductionLineCode,
  16864. ProductionLineName,
  16865. ProcedureModel,
  16866. ModelType,
  16867. DefectFlag,
  16868. ReworkProcedureID,
  16869. IsPublicBody,
  16870. IsReFire,
  16871. GoodsLevelID,
  16872. GoodsLevelTypeID,
  16873. GoodsID,
  16874. GoodsCode,
  16875. GoodsName,
  16876. UserID,
  16877. GroutingDailyID,
  16878. GroutingDailyDetailID,
  16879. GroutingDate,
  16880. GroutingLineID,
  16881. GroutingLineCode,
  16882. GroutingLineName,
  16883. GMouldTypeID,
  16884. CanManyTimes,
  16885. GroutingLineDetailID,
  16886. GroutingMouldCode,
  16887. MouldCode,
  16888. GroutingUserID,
  16889. GroutingUserCode,
  16890. GroutingNum,
  16891. Remarks,
  16892. KilnID,
  16893. KilnCode,
  16894. KilnName,
  16895. KilnCarID,
  16896. KilnCarCode,
  16897. KilnCarName,
  16898. KilnCarBatchNo,
  16899. KilnCarPosition,
  16900. AccountID,
  16901. ValueFlag,
  16902. CreateUserID,
  16903. UpdateUserID,
  16904. SpecialRepairflag,
  16905. FlowProcedureID,
  16906. FlowProcedureTime,
  16907. ProcedureID,
  16908. ProcedureTime,
  16909. ProductionDataID,
  16910. logoid,
  16911. IsReworkFlag,
  16912. SemiCheckID
  16913. )
  16914. select
  16915. BarCode,
  16916. ProductionLineID,
  16917. ProductionLineCode,
  16918. ProductionLineName,
  16919. ProcedureModel,
  16920. ModelType,
  16921. DefectFlag,
  16922. ReworkProcedureID,
  16923. IsPublicBody,
  16924. IsReFire,
  16925. null,
  16926. null,
  16927. GoodsID,
  16928. GoodsCode,
  16929. GoodsName,
  16930. UserID,
  16931. GroutingDailyID,
  16932. GroutingDailyDetailID,
  16933. GroutingDate,
  16934. GroutingLineID,
  16935. GroutingLineCode,
  16936. GroutingLineName,
  16937. GMouldTypeID,
  16938. CanManyTimes,
  16939. GroutingLineDetailID,
  16940. GroutingMouldCode,
  16941. MouldCode,
  16942. GroutingUserID,
  16943. GroutingUserCode,
  16944. GroutingNum,
  16945. Remarks,
  16946. KilnID,
  16947. KilnCode,
  16948. KilnName,
  16949. KilnCarID,
  16950. KilnCarCode,
  16951. KilnCarName,
  16952. KilnCarBatchNo,
  16953. KilnCarPosition,
  16954. AccountID,
  16955. ValueFlag,
  16956. :CreateUserID,
  16957. :UpdateUserID,
  16958. SpecialRepairflag,
  16959. FlowProcedureID,
  16960. FlowProcedureTime,
  16961. FlowProcedureID,
  16962. ProcedureTime,
  16963. ProductionDataID,
  16964. logoid,
  16965. 0,
  16966. null
  16967. from TP_PM_InProductionTrash
  16968. where barcode=:barcode
  16969. ";
  16970. OracleParameter[] oracleParameters = new OracleParameter[] {
  16971. new OracleParameter(":barcode",entity.BarCode),
  16972. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16973. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16974. };
  16975. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16976. #endregion
  16977. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  16978. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  16979. " from TP_PM_ScrapProduct sp\n" +
  16980. " where sp.barcode = :barcode\n" +
  16981. " and sp.auditstatus = 1\n" +
  16982. " and sp.valueflag = '1'\n" +
  16983. " and sp.scraptype = '2'";
  16984. spParameters = new OracleParameter[] {
  16985. new OracleParameter(":barcode",entity.BarCode),
  16986. };
  16987. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  16988. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  16989. spParameters = new OracleParameter[] {
  16990. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16991. new OracleParameter(":scrapproductid",scrapproductid),
  16992. };
  16993. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16994. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  16995. //oracleParameters = new OracleParameter[] {
  16996. // new OracleParameter(":barcode",entity.BarCode),
  16997. //};
  16998. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16999. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  17000. //oracleParameters = new OracleParameter[] {
  17001. // new OracleParameter(":barcode",entity.BarCode),
  17002. //};
  17003. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17004. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  17005. //oracleParameters = new OracleParameter[] {
  17006. // new OracleParameter(":barcode",entity.BarCode),
  17007. //};
  17008. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17009. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  17010. ////oracleParameters = new OracleParameter[] {
  17011. //// new OracleParameter(":barcode",entity.BarCode),
  17012. ////};
  17013. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17014. #endregion
  17015. #region 3.删除在产回收站产品数据
  17016. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  17017. oracleParameters = new OracleParameter[] {
  17018. new OracleParameter(":barcode",entity.BarCode),
  17019. };
  17020. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17021. #endregion
  17022. }
  17023. #endregion
  17024. }
  17025. return errMsg;
  17026. }
  17027. catch (Exception ex)
  17028. {
  17029. throw ex;
  17030. }
  17031. }
  17032. /// <summary>
  17033. /// 校验条码有效(新建)
  17034. /// </summary>
  17035. /// <param name="oracleTrConn">连接对象</param>
  17036. /// <param name="barcode">条码</param>
  17037. /// <param name="sUserInfo">登录用户信息</param>
  17038. /// <returns>string</returns>
  17039. /// <remarks>
  17040. /// 王鑫 2016.06.27 新建
  17041. /// </remarks>
  17042. private static string CheckBarcodeByNew(IDBTransaction oracleTrConn,
  17043. string barcode,
  17044. SUserInfo sUserInfo
  17045. )
  17046. {
  17047. try
  17048. {
  17049. OracleParameter[] paras = new OracleParameter[]{
  17050. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17051. };
  17052. string sql = @"
  17053. select InScrapFlag,
  17054. KilnCarID,
  17055. KilnCarName,
  17056. IsReworkFlag,
  17057. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  17058. ";
  17059. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17060. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  17061. {
  17062. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  17063. {
  17064. return "条码[" + barcode + "]已经报损待审批";
  17065. }
  17066. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  17067. {
  17068. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17069. }
  17070. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  17071. {
  17072. return "条码[" + barcode + "]已经返工中";
  17073. }
  17074. }
  17075. else
  17076. {
  17077. return "条码[" + barcode + "]不在在产流程";
  17078. }
  17079. return null;
  17080. }
  17081. catch (Exception ex)
  17082. {
  17083. throw ex;
  17084. }
  17085. }
  17086. /// <summary>
  17087. /// 校验条码有效(编辑返工)
  17088. /// </summary>
  17089. /// <param name="oracleTrConn">连接对象</param>
  17090. /// <param name="barcode">条码</param>
  17091. /// <param name="sUserInfo">登录用户信息</param>
  17092. /// <returns>string</returns>
  17093. /// <remarks>
  17094. /// 王鑫 2016.06.27 新建
  17095. /// </remarks>
  17096. private static string CheckBarcodeByEditRework(IDBTransaction oracleTrConn,
  17097. string barcode,
  17098. SUserInfo sUserInfo
  17099. )
  17100. {
  17101. try
  17102. {
  17103. OracleParameter[] paras = new OracleParameter[]{
  17104. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17105. };
  17106. string sql = @"
  17107. select InScrapFlag,
  17108. KilnCarID,
  17109. KilnCarName,
  17110. IsReworkFlag,
  17111. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  17112. ";
  17113. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17114. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  17115. {
  17116. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  17117. {
  17118. return "条码[" + barcode + "]已经报损待审批";
  17119. }
  17120. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  17121. {
  17122. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17123. }
  17124. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1")
  17125. {
  17126. return "条码[" + barcode + "]不在返工中";
  17127. }
  17128. }
  17129. else
  17130. {
  17131. return "条码[" + barcode + "]不在在产流程";
  17132. }
  17133. return null;
  17134. }
  17135. catch (Exception ex)
  17136. {
  17137. throw ex;
  17138. }
  17139. }
  17140. /// <summary>
  17141. /// 校验条码有效(编辑不合格)
  17142. /// </summary>
  17143. /// <param name="oracleTrConn">连接对象</param>
  17144. /// <param name="barcode">条码</param>
  17145. /// <param name="sUserInfo">登录用户信息</param>
  17146. /// <returns>string</returns>
  17147. /// <remarks>
  17148. /// 王鑫 2016.06.27 新建
  17149. /// </remarks>
  17150. private static string CheckBarcodeByEditNoPass(IDBTransaction oracleTrConn,
  17151. string barcode,
  17152. SUserInfo sUserInfo
  17153. )
  17154. {
  17155. try
  17156. {
  17157. OracleParameter[] paras = new OracleParameter[]{
  17158. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  17159. };
  17160. string sql = @"
  17161. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=13
  17162. ";
  17163. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  17164. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  17165. {
  17166. return "条码[" + barcode + "]不在在产回收站中";
  17167. }
  17168. return null;
  17169. }
  17170. catch (Exception ex)
  17171. {
  17172. throw ex;
  17173. }
  17174. }
  17175. /// <summary>
  17176. /// 添加半成品检验数据
  17177. /// </summary>
  17178. /// <param name="oracleTrConn">连接对象</param>
  17179. /// <param name="accountDate">账务日期</param>
  17180. /// <param name="productionData">生产数据</param>
  17181. /// <param name="sUserInfo">用户基本信息</param>
  17182. /// <returns>string</returns>
  17183. /// <remarks>
  17184. /// 陈冰 2014.09.18 新建
  17185. /// </remarks>
  17186. private static string AddSemiCheckData(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17187. {
  17188. #region SQL
  17189. string sql = "insert into tp_pm_semicheck"
  17190. + " (semicheckid,"
  17191. + " barcode,"
  17192. + " productionlineid,"
  17193. + " procedureid,"
  17194. + " proceduretime,"
  17195. + " proceduremodel,"
  17196. + " modeltype,"
  17197. + " organizationid,"
  17198. + " goodsid,"
  17199. + " goodscode,"
  17200. + " userid,"
  17201. + " usercode,"
  17202. + " productiondataid,"
  17203. + " logoid,"
  17204. + " ispublicbody,"
  17205. + " specialrepairflag,"
  17206. + " goodslevelid,"
  17207. + " goodsleveltypeid,"
  17208. + " groutingdailyid,"
  17209. + " groutingdailydetailid,"
  17210. + " groutinglineid,"
  17211. + " groutinglinecode,"
  17212. + " groutinglinename,"
  17213. + " gmouldtypeid,"
  17214. + " canmanytimes,"
  17215. + " groutinglinedetailid,"
  17216. + " groutingdate,"
  17217. + " groutingmouldcode,"
  17218. + " mouldcode,"
  17219. + " groutinguserid,"
  17220. + " groutingusercode,"
  17221. + " groutingnum,"
  17222. + " semichecktype,"
  17223. + " semicheckuserID,"
  17224. + " semicheckusercode,"
  17225. + " semichecktime,"
  17226. + " remarks,"
  17227. + " accountid,"
  17228. + " createuserid,"
  17229. + " updateuserid,"
  17230. + " reworkprocedureid,"
  17231. + " reworkprocedurecode,"
  17232. + " reworkuserid,"
  17233. + " reworkusercode"
  17234. + ")"
  17235. + " select"
  17236. + " :semicheckid,"
  17237. + " TP_PM_InProduction.barcode,"
  17238. + " TP_PM_InProduction.productionlineid,"
  17239. + " TP_PM_InProduction.procedureid,"
  17240. + " TP_PM_InProduction.proceduretime,"
  17241. + " TP_PM_InProduction.proceduremodel,"
  17242. + " TP_PM_InProduction.modeltype,"
  17243. + " tp_pc_procedure.organizationid,"
  17244. + " TP_PM_InProduction.goodsid,"
  17245. + " TP_PM_InProduction.goodscode,"
  17246. + " TP_PM_InProduction.userid,"
  17247. + " tp_mst_user.usercode,"
  17248. + " TP_PM_InProduction.productiondataid,"
  17249. + " TP_PM_InProduction.logoid,"
  17250. + " TP_PM_InProduction.ispublicbody,"
  17251. + " TP_PM_InProduction.specialrepairflag,"
  17252. + " TP_PM_InProduction.goodslevelid,"
  17253. + " TP_PM_InProduction.goodsleveltypeid,"
  17254. + " TP_PM_InProduction.groutingdailyid,"
  17255. + " TP_PM_InProduction.groutingdailydetailid,"
  17256. + " TP_PM_InProduction.groutinglineid,"
  17257. + " TP_PM_InProduction.groutinglinecode,"
  17258. + " TP_PM_InProduction.groutinglinename,"
  17259. + " TP_PM_InProduction.gmouldtypeid,"
  17260. + " TP_PM_InProduction.canmanytimes,"
  17261. + " TP_PM_InProduction.groutinglinedetailid,"
  17262. + " TP_PM_InProduction.groutingdate,"
  17263. + " TP_PM_InProduction.groutingmouldcode,"
  17264. + " TP_PM_InProduction.mouldcode,"
  17265. + " TP_PM_InProduction.groutinguserid,"
  17266. + " TP_PM_InProduction.groutingusercode,"
  17267. + " TP_PM_InProduction.groutingnum,"
  17268. + " :semichecktype,"
  17269. + " :semicheckuserID,"
  17270. + " :semicheckusercode,"
  17271. + " sysdate,"
  17272. + " :remarks,"
  17273. + " :accountid,"
  17274. + " :createuserid,"
  17275. + " :updateuserid,"
  17276. + " :reworkprocedureid,"
  17277. + " :reworkprocedurecode,"
  17278. + " :reworkuserid,"
  17279. + " :reworkusercode"
  17280. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  17281. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  17282. + " where TP_PM_InProduction.barcode=:barcode";
  17283. #endregion
  17284. #region OracleParameter
  17285. OracleParameter[] paras = new OracleParameter[] {
  17286. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17287. new OracleParameter(":semichecktype",entity.SemiCheckType),
  17288. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  17289. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  17290. new OracleParameter(":remarks",entity.Remarks),
  17291. new OracleParameter(":accountid",sUserInfo.AccountID),
  17292. new OracleParameter(":createuserid",sUserInfo.UserID),
  17293. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17294. new OracleParameter(":barcode",entity.BarCode),
  17295. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  17296. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  17297. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  17298. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  17299. };
  17300. #endregion
  17301. foreach (OracleParameter para in paras)
  17302. {
  17303. if (string.IsNullOrEmpty(para.Value + ""))
  17304. {
  17305. para.Value = DBNull.Value;
  17306. }
  17307. }
  17308. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17309. // 失败
  17310. if (result != Constant.INT_IS_ONE)
  17311. {
  17312. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17313. }
  17314. // 成功返回null
  17315. return null;
  17316. }
  17317. /// <summary>
  17318. /// 添加半成品检验数据(不合格)
  17319. /// </summary>
  17320. /// <param name="oracleTrConn">连接对象</param>
  17321. /// <param name="accountDate">账务日期</param>
  17322. /// <param name="productionData">生产数据</param>
  17323. /// <param name="sUserInfo">用户基本信息</param>
  17324. /// <returns>string</returns>
  17325. /// <remarks>
  17326. /// 陈冰 2014.09.18 新建
  17327. /// </remarks>
  17328. private static string AddSemiCheckDataNoPass(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17329. {
  17330. #region SQL
  17331. string sql = "insert into tp_pm_semicheck"
  17332. + " (semicheckid,"
  17333. + " barcode,"
  17334. + " productionlineid,"
  17335. + " procedureid,"
  17336. + " proceduretime,"
  17337. + " proceduremodel,"
  17338. + " modeltype,"
  17339. + " organizationid,"
  17340. + " goodsid,"
  17341. + " goodscode,"
  17342. + " userid,"
  17343. + " usercode,"
  17344. + " productiondataid,"
  17345. + " logoid,"
  17346. + " ispublicbody,"
  17347. + " specialrepairflag,"
  17348. + " goodslevelid,"
  17349. + " goodsleveltypeid,"
  17350. + " groutingdailyid,"
  17351. + " groutingdailydetailid,"
  17352. + " groutinglineid,"
  17353. + " groutinglinecode,"
  17354. + " groutinglinename,"
  17355. + " gmouldtypeid,"
  17356. + " canmanytimes,"
  17357. + " groutinglinedetailid,"
  17358. + " groutingdate,"
  17359. + " groutingmouldcode,"
  17360. + " mouldcode,"
  17361. + " groutinguserid,"
  17362. + " groutingusercode,"
  17363. + " groutingnum,"
  17364. + " semichecktype,"
  17365. + " semicheckuserID,"
  17366. + " semicheckusercode,"
  17367. + " semichecktime,"
  17368. + " remarks,"
  17369. + " accountid,"
  17370. + " createuserid,"
  17371. + " updateuserid,"
  17372. + " reworkprocedureid,"
  17373. + " reworkprocedurecode,"
  17374. + " reworkuserid,"
  17375. + " reworkusercode"
  17376. + ")"
  17377. + " select"
  17378. + " :semicheckid,"
  17379. + " TP_PM_InProduction.barcode,"
  17380. + " TP_PM_InProduction.productionlineid,"
  17381. + " TP_PM_InProduction.procedureid,"
  17382. + " TP_PM_InProduction.proceduretime,"
  17383. + " TP_PM_InProduction.proceduremodel,"
  17384. + " TP_PM_InProduction.modeltype,"
  17385. + " tp_pc_procedure.organizationid,"
  17386. + " TP_PM_InProduction.goodsid,"
  17387. + " TP_PM_InProduction.goodscode,"
  17388. + " TP_PM_InProduction.userid,"
  17389. + " tp_mst_user.usercode,"
  17390. + " TP_PM_InProduction.productiondataid,"
  17391. + " TP_PM_InProduction.logoid,"
  17392. + " TP_PM_InProduction.ispublicbody,"
  17393. + " TP_PM_InProduction.specialrepairflag,"
  17394. + " (select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid),"
  17395. + " 13,"
  17396. + " TP_PM_InProduction.groutingdailyid,"
  17397. + " TP_PM_InProduction.groutingdailydetailid,"
  17398. + " TP_PM_InProduction.groutinglineid,"
  17399. + " TP_PM_InProduction.groutinglinecode,"
  17400. + " TP_PM_InProduction.groutinglinename,"
  17401. + " TP_PM_InProduction.gmouldtypeid,"
  17402. + " TP_PM_InProduction.canmanytimes,"
  17403. + " TP_PM_InProduction.groutinglinedetailid,"
  17404. + " TP_PM_InProduction.groutingdate,"
  17405. + " TP_PM_InProduction.groutingmouldcode,"
  17406. + " TP_PM_InProduction.mouldcode,"
  17407. + " TP_PM_InProduction.groutinguserid,"
  17408. + " TP_PM_InProduction.groutingusercode,"
  17409. + " TP_PM_InProduction.groutingnum,"
  17410. + " :semichecktype,"
  17411. + " :semicheckuserID,"
  17412. + " :semicheckusercode,"
  17413. + " sysdate,"
  17414. + " :remarks,"
  17415. + " :accountid,"
  17416. + " :createuserid,"
  17417. + " :updateuserid,"
  17418. + " :reworkprocedureid,"
  17419. + " :reworkprocedurecode,"
  17420. + " :reworkuserid,"
  17421. + " :reworkusercode"
  17422. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  17423. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  17424. + " where TP_PM_InProduction.barcode=:barcode";
  17425. #endregion
  17426. #region OracleParameter
  17427. OracleParameter[] paras = new OracleParameter[] {
  17428. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17429. new OracleParameter(":semichecktype",entity.SemiCheckType),
  17430. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  17431. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  17432. new OracleParameter(":remarks",entity.Remarks),
  17433. new OracleParameter(":accountid",sUserInfo.AccountID),
  17434. new OracleParameter(":createuserid",sUserInfo.UserID),
  17435. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17436. new OracleParameter(":accountid",sUserInfo.AccountID),
  17437. new OracleParameter(":barcode",entity.BarCode),
  17438. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  17439. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  17440. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  17441. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  17442. };
  17443. #endregion
  17444. foreach (OracleParameter para in paras)
  17445. {
  17446. if (string.IsNullOrEmpty(para.Value + ""))
  17447. {
  17448. para.Value = DBNull.Value;
  17449. }
  17450. }
  17451. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17452. // 失败
  17453. if (result != Constant.INT_IS_ONE)
  17454. {
  17455. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17456. }
  17457. // 成功返回null
  17458. return null;
  17459. }
  17460. /// <summary>
  17461. /// 添加半成品检验数据
  17462. /// </summary>
  17463. /// <param name="oracleTrConn">连接对象</param>
  17464. /// <param name="accountDate">账务日期</param>
  17465. /// <param name="productionData">生产数据</param>
  17466. /// <param name="sUserInfo">用户基本信息</param>
  17467. /// <returns>string</returns>
  17468. /// <remarks>
  17469. /// 陈冰 2014.09.18 新建
  17470. /// </remarks>
  17471. private static string AddSemiCheckDataTrash(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17472. {
  17473. #region SQL
  17474. string sql = "insert into tp_pm_semicheck"
  17475. + " (semicheckid,"
  17476. + " barcode,"
  17477. + " productionlineid,"
  17478. + " procedureid,"
  17479. + " proceduretime,"
  17480. + " proceduremodel,"
  17481. + " modeltype,"
  17482. + " organizationid,"
  17483. + " goodsid,"
  17484. + " goodscode,"
  17485. + " userid,"
  17486. + " usercode,"
  17487. + " productiondataid,"
  17488. + " logoid,"
  17489. + " ispublicbody,"
  17490. + " specialrepairflag,"
  17491. + " goodslevelid,"
  17492. + " goodsleveltypeid,"
  17493. + " groutingdailyid,"
  17494. + " groutingdailydetailid,"
  17495. + " groutinglineid,"
  17496. + " groutinglinecode,"
  17497. + " groutinglinename,"
  17498. + " gmouldtypeid,"
  17499. + " canmanytimes,"
  17500. + " groutinglinedetailid,"
  17501. + " groutingdate,"
  17502. + " groutingmouldcode,"
  17503. + " mouldcode,"
  17504. + " groutinguserid,"
  17505. + " groutingusercode,"
  17506. + " groutingnum,"
  17507. + " semichecktype,"
  17508. + " semicheckuserID,"
  17509. + " semicheckusercode,"
  17510. + " semichecktime,"
  17511. + " remarks,"
  17512. + " accountid,"
  17513. + " createuserid,"
  17514. + " updateuserid,"
  17515. + " reworkprocedureid,"
  17516. + " reworkprocedurecode,"
  17517. + " reworkuserid,"
  17518. + " reworkusercode"
  17519. + ")"
  17520. + " select"
  17521. + " :semicheckid,"
  17522. + " trash.barcode,"
  17523. + " trash.productionlineid,"
  17524. + " trash.procedureid,"
  17525. + " trash.proceduretime,"
  17526. + " trash.proceduremodel,"
  17527. + " trash.modeltype,"
  17528. + " tp_pc_procedure.organizationid,"
  17529. + " trash.goodsid,"
  17530. + " trash.goodscode,"
  17531. + " trash.userid,"
  17532. + " tp_mst_user.usercode,"
  17533. + " trash.productiondataid,"
  17534. + " trash.logoid,"
  17535. + " trash.ispublicbody,"
  17536. + " trash.specialrepairflag,"
  17537. + " trash.goodslevelid,"
  17538. + " trash.goodsleveltypeid,"
  17539. + " trash.groutingdailyid,"
  17540. + " trash.groutingdailydetailid,"
  17541. + " trash.groutinglineid,"
  17542. + " trash.groutinglinecode,"
  17543. + " trash.groutinglinename,"
  17544. + " trash.gmouldtypeid,"
  17545. + " trash.canmanytimes,"
  17546. + " trash.groutinglinedetailid,"
  17547. + " trash.groutingdate,"
  17548. + " trash.groutingmouldcode,"
  17549. + " trash.mouldcode,"
  17550. + " trash.groutinguserid,"
  17551. + " trash.groutingusercode,"
  17552. + " trash.groutingnum,"
  17553. + " :semichecktype,"
  17554. + " :semicheckuserID,"
  17555. + " :semicheckusercode,"
  17556. + " sysdate,"
  17557. + " :remarks,"
  17558. + " :accountid,"
  17559. + " :createuserid,"
  17560. + " :updateuserid,"
  17561. + " :reworkprocedureid,"
  17562. + " :reworkprocedurecode,"
  17563. + " :reworkuserid,"
  17564. + " :reworkusercode"
  17565. + " from TP_PM_InProductionTrash trash left join tp_mst_user on trash.UserID=tp_mst_user.userid "
  17566. + " left join tp_pc_procedure on trash.ProcedureID=tp_pc_procedure.ProcedureID "
  17567. + " where trash.barcode=:barcode";
  17568. #endregion
  17569. #region OracleParameter
  17570. OracleParameter[] paras = new OracleParameter[] {
  17571. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17572. new OracleParameter(":semichecktype",entity.SemiCheckType),
  17573. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  17574. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  17575. new OracleParameter(":remarks",entity.Remarks),
  17576. new OracleParameter(":accountid",sUserInfo.AccountID),
  17577. new OracleParameter(":createuserid",sUserInfo.UserID),
  17578. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17579. new OracleParameter(":barcode",entity.BarCode),
  17580. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  17581. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  17582. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  17583. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  17584. };
  17585. #endregion
  17586. foreach (OracleParameter para in paras)
  17587. {
  17588. if (string.IsNullOrEmpty(para.Value + ""))
  17589. {
  17590. para.Value = DBNull.Value;
  17591. }
  17592. }
  17593. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17594. // 失败
  17595. if (result != Constant.INT_IS_ONE)
  17596. {
  17597. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17598. }
  17599. // 成功返回null
  17600. return null;
  17601. }
  17602. /// <summary>
  17603. /// 添加半成品检验数据
  17604. /// </summary>
  17605. /// <param name="oracleTrConn">连接对象</param>
  17606. /// <param name="accountDate">账务日期</param>
  17607. /// <param name="productionData">生产数据</param>
  17608. /// <param name="sUserInfo">用户基本信息</param>
  17609. /// <returns>string</returns>
  17610. /// <remarks>
  17611. /// 陈冰 2014.09.18 新建
  17612. /// </remarks>
  17613. private static string SetSemiCheckDataValueFlag(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  17614. {
  17615. #region SQL
  17616. string sql = @"update TP_PM_SemiCheck
  17617. set BackOutUserID=:BackOutUserID,
  17618. BackOutUserCode=:BackOutUserCode,
  17619. BackOutFlag=1,
  17620. BackOutTime=sysdate,
  17621. ValueFlag='0',
  17622. updateuserid=:updateuserid
  17623. where semicheckid=:semicheckid";
  17624. #region OracleParameter
  17625. OracleParameter[] paras = new OracleParameter[] {
  17626. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17627. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17628. new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  17629. new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  17630. };
  17631. #endregion
  17632. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  17633. string sql2 = @"update TP_PM_SemiCheckDefect
  17634. set
  17635. ValueFlag='0',
  17636. updateuserid=:updateuserid
  17637. where semicheckid=:semicheckid";
  17638. string sql3 = @"update TP_PM_SCDefectResponsible
  17639. set
  17640. ValueFlag='0',
  17641. updateuserid=:updateuserid
  17642. where semicheckid=:semicheckid";
  17643. #endregion
  17644. #region OracleParameter
  17645. paras = new OracleParameter[] {
  17646. new OracleParameter(":semicheckid",entity.SemiCheckID),
  17647. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17648. };
  17649. #endregion
  17650. foreach (OracleParameter para in paras)
  17651. {
  17652. if (string.IsNullOrEmpty(para.Value + ""))
  17653. {
  17654. para.Value = DBNull.Value;
  17655. }
  17656. }
  17657. result += oracleTrConn.ExecuteNonQuery(sql2, paras);
  17658. result += oracleTrConn.ExecuteNonQuery(sql3, paras);
  17659. // 失败
  17660. if (result == Constant.INT_IS_ZERO)
  17661. {
  17662. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17663. }
  17664. // 成功返回null
  17665. return null;
  17666. }
  17667. /// <summary>
  17668. /// 保存半检缺陷
  17669. /// </summary>
  17670. /// <param name="oracleTrConn">连接对象</param>
  17671. /// <param name="productionDefect">缺陷数据</param>
  17672. /// <param name="sUserInfo">用户基本信息</param>
  17673. /// <returns>string</returns>
  17674. private static string AddSemiCheckDefect(IDBTransaction oracleTrConn, SemiCheckDefectEntity semiCheckDefect, SUserInfo sUserInfo)
  17675. {
  17676. // 查询新插入的半检缺陷ID
  17677. string sql = "select SEQ_PM_SemiCheckDefect_ID.nextval from dual";
  17678. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  17679. int semiCheckDefectID = 0;
  17680. if (!string.IsNullOrEmpty(idStr))
  17681. {
  17682. semiCheckDefectID = int.Parse(idStr);
  17683. }
  17684. else
  17685. {
  17686. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17687. }
  17688. #region SQL
  17689. sql = "insert into TP_PM_SemiCheckDefect"
  17690. + " (semicheckdefectid,"
  17691. + " semicheckid,"
  17692. + " defectid,"
  17693. + " defectcode,"
  17694. + " defectname,"
  17695. + " defectpositionid,"
  17696. + " defectpositioncode,"
  17697. + " defectpositionname,"
  17698. + " scrapResponFlag,"
  17699. + " defectproductiondataid,"
  17700. + " defectprocedureid,"
  17701. + " defectuserid,"
  17702. + " defectusercode,"
  17703. + " remarks,"
  17704. + " accountid,"
  17705. + " createuserid,"
  17706. + " updateuserid)"
  17707. + " values"
  17708. + " ("
  17709. + " :semicheckdefectid,"
  17710. + " :semicheckid,"
  17711. + " :defectid,"
  17712. + " :defectcode,"
  17713. + " :defectname,"
  17714. + " :defectpositionid,"
  17715. + " :defectpositioncode,"
  17716. + " :defectpositionname,"
  17717. + " :scrapResponFlag,"
  17718. + " :defectproductiondataid,"
  17719. + " :defectprocedureid,"
  17720. + " :defectuserid,"
  17721. + " :defectusercode,"
  17722. + " :remarks,"
  17723. + " :accountid,"
  17724. + " :createuserid,"
  17725. + " :updateuserid)";
  17726. #endregion
  17727. #region 参数
  17728. OracleParameter[] oracleParameters = new OracleParameter[] {
  17729. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  17730. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  17731. new OracleParameter(":defectid",semiCheckDefect.DefectID),
  17732. new OracleParameter(":defectcode",semiCheckDefect.DefectCode),
  17733. new OracleParameter(":defectname",semiCheckDefect.DefectName),
  17734. new OracleParameter(":defectpositionid",semiCheckDefect.DefectPositionID),
  17735. new OracleParameter(":defectpositioncode",semiCheckDefect.DefectPositionCode),
  17736. new OracleParameter(":defectpositionname",semiCheckDefect.DefectPositionName),
  17737. new OracleParameter(":scrapResponFlag",semiCheckDefect.ScrapResponFlag),
  17738. new OracleParameter(":defectproductiondataid",semiCheckDefect.DefectProductionDataID),
  17739. new OracleParameter(":defectprocedureid",semiCheckDefect.DefectProcedureID),
  17740. new OracleParameter(":defectuserid",semiCheckDefect.DefectUserID),
  17741. new OracleParameter(":defectusercode",semiCheckDefect.DefectUserCode),
  17742. new OracleParameter(":remarks",semiCheckDefect.Remarks),
  17743. new OracleParameter(":accountid",sUserInfo.AccountID),
  17744. new OracleParameter(":createuserid",sUserInfo.UserID),
  17745. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17746. };
  17747. #endregion
  17748. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17749. // 保存失败
  17750. if (result != Constant.INT_IS_ONE)
  17751. {
  17752. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17753. }
  17754. #region 插入生产缺陷责任者
  17755. if (semiCheckDefect.DefectResponsibles != null)
  17756. {
  17757. foreach (SemiCheckResponsibleEntity DefectResponsible in semiCheckDefect.DefectResponsibles)
  17758. {
  17759. #region SQL
  17760. sql = "insert into TP_PM_SCDefectResponsible"
  17761. + " (semicheckdefectid,"
  17762. + " staffid,"
  17763. + " semicheckid,"
  17764. + " userid,"
  17765. + " usercode,"
  17766. + " Ujobsid,"
  17767. + " SJobsID,"
  17768. + " staffstatus,"
  17769. + " accountid,"
  17770. + " createuserid,"
  17771. + " updateuserid)"
  17772. + " values"
  17773. + " (:semicheckdefectid,"
  17774. + " :staffid,"
  17775. + " :semicheckid,"
  17776. + " :userid,"
  17777. + " :usercode,"
  17778. + " :ujobsid,"
  17779. + " :sjobsid,"
  17780. + " :staffstatus,"
  17781. + " :accountid,"
  17782. + " :createuserid,"
  17783. + " :updateuserid)";
  17784. #endregion
  17785. #region 参数
  17786. oracleParameters = new OracleParameter[] {
  17787. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  17788. new OracleParameter(":staffid",DefectResponsible.StaffID),
  17789. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  17790. new OracleParameter(":userid",DefectResponsible.UserID),
  17791. new OracleParameter(":usercode",DefectResponsible.UserCode),
  17792. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  17793. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  17794. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  17795. new OracleParameter(":accountid",sUserInfo.AccountID),
  17796. new OracleParameter(":createuserid",sUserInfo.UserID),
  17797. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17798. };
  17799. #endregion
  17800. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17801. // 保存失败
  17802. if (result != Constant.INT_IS_ONE)
  17803. {
  17804. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17805. }
  17806. }
  17807. }
  17808. #endregion
  17809. return null;
  17810. }
  17811. /// <summary>
  17812. /// 添加责任工序
  17813. /// </summary>
  17814. /// <param name="oracleTrConn">连接对象</param>
  17815. /// <param name="responProce">责任工序</param>
  17816. /// <param name="productionDefect">缺陷数据</param>
  17817. /// <param name="sUserInfo">用户基本信息</param>
  17818. /// <returns>string</returns>
  17819. private static string AddSemiCheckResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, SemiCheckDefectEntity productionDefect, SUserInfo sUserInfo)
  17820. {
  17821. OracleParameter[] oracleParameters = null;
  17822. string sql = null;
  17823. int result = 0;
  17824. // 查询新插入ID
  17825. if (responProce.ProcedureID != null)
  17826. {
  17827. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  17828. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  17829. if (!string.IsNullOrEmpty(idStr))
  17830. {
  17831. responProce.ResponProcedureID = int.Parse(idStr);
  17832. }
  17833. else
  17834. {
  17835. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17836. }
  17837. #region SQL
  17838. sql = "insert into tp_pm_responprocedure"
  17839. + " (ResponProcedureID,"
  17840. + " scrapproductid,"
  17841. + " barcode,"
  17842. + " productiondataid,"
  17843. + " productionlineid,"
  17844. + " productionlinecode,"
  17845. + " productionlinename,"
  17846. + " procedureid,"
  17847. + " procedurecode,"
  17848. + " procedurename,"
  17849. + " userid,"
  17850. + " usercode,"
  17851. + " username,"
  17852. + " remarks,"
  17853. + " accountid,"
  17854. + " createuserid,"
  17855. + " updateuserid)"
  17856. + " values"
  17857. + " ("
  17858. + " :ResponProcedureID,"
  17859. + " :scrapproductid,"
  17860. + " :barcode,"
  17861. + " :productiondataid,"
  17862. + " :productionlineid,"
  17863. + " :productionlinecode,"
  17864. + " :productionlinename,"
  17865. + " :procedureid,"
  17866. + " :procedurecode,"
  17867. + " :procedurename,"
  17868. + " :userid,"
  17869. + " :usercode,"
  17870. + " :username,"
  17871. + " :remarks,"
  17872. + " :accountid,"
  17873. + " :createuserid,"
  17874. + " :updateuserid)";
  17875. #endregion
  17876. #region 参数
  17877. oracleParameters = new OracleParameter[] {
  17878. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  17879. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  17880. new OracleParameter(":barcode",responProce.BarCode),
  17881. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  17882. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  17883. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  17884. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  17885. new OracleParameter(":procedureid",responProce.ProcedureID),
  17886. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  17887. new OracleParameter(":procedurename",responProce.ProcedureName),
  17888. new OracleParameter(":userid",responProce.UserID),
  17889. new OracleParameter(":usercode",responProce.UserCode),
  17890. new OracleParameter(":username",responProce.UserName),
  17891. new OracleParameter(":remarks",responProce.Remarks),
  17892. new OracleParameter(":accountid",sUserInfo.AccountID),
  17893. new OracleParameter(":createuserid",sUserInfo.UserID),
  17894. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17895. };
  17896. #endregion
  17897. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17898. // 保存失败
  17899. if (result != Constant.INT_IS_ONE)
  17900. {
  17901. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17902. }
  17903. //// 查询新插入ID
  17904. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  17905. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  17906. //if (!string.IsNullOrEmpty(idStr))
  17907. //{
  17908. // responProce.ResponProcedureID = int.Parse(idStr);
  17909. //}
  17910. //else
  17911. //{
  17912. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17913. //}
  17914. }
  17915. #region 插入责任人
  17916. foreach (SemiCheckResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  17917. {
  17918. #region SQL
  17919. sql = "insert into tp_pm_scrapresponsible"
  17920. + " (barcode,"
  17921. + " scrapproductid,"
  17922. + " staffid,"
  17923. + " userid,"
  17924. + " usercode,"
  17925. + " ujobsid,"
  17926. + " sjobsid,"
  17927. + " staffstatus,"
  17928. + " accountid,"
  17929. + " createuserid,"
  17930. + " updateuserid,"
  17931. + " responprocedureid,"
  17932. + " respontype)"
  17933. + " values"
  17934. + " (:barcode,"
  17935. + " :scrapproductid,"
  17936. + " :staffid,"
  17937. + " :userid,"
  17938. + " :usercode,"
  17939. + " :ujobsid,"
  17940. + " :sjobsid,"
  17941. + " :staffstatus,"
  17942. + " :accountid,"
  17943. + " :createuserid,"
  17944. + " :updateuserid,"
  17945. + " :responprocedureid,"
  17946. + " :respontype)";
  17947. #endregion
  17948. #region 参数
  17949. oracleParameters = new OracleParameter[] {
  17950. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  17951. new OracleParameter(":barcode",responProce.BarCode),
  17952. new OracleParameter(":staffid",defectResponsible.StaffID),
  17953. new OracleParameter(":userid",defectResponsible.UserID),
  17954. new OracleParameter(":usercode",defectResponsible.UserCode),
  17955. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  17956. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  17957. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  17958. new OracleParameter(":accountid",sUserInfo.AccountID),
  17959. new OracleParameter(":createuserid",sUserInfo.UserID),
  17960. new OracleParameter(":updateuserid",sUserInfo.UserID),
  17961. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  17962. new OracleParameter(":respontype", (responProce.ResponProcedureID == null? (int)Constant.ScrapResponType.Person:(int)Constant.ScrapResponType.Procedure)),
  17963. };
  17964. #endregion
  17965. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  17966. // 保存失败
  17967. if (result != Constant.INT_IS_ONE)
  17968. {
  17969. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  17970. }
  17971. }
  17972. #endregion
  17973. return null;
  17974. }
  17975. #region 复检
  17976. /// <summary>
  17977. /// 复检数据
  17978. /// </summary>
  17979. /// <param name="oracleTrConn">数据连接对象</param>
  17980. /// <param name="entity">半检实体类</param>
  17981. /// <param name="sUserInfo">用户基本信息</param>
  17982. /// <returns>string</returns>
  17983. /// <remarks>
  17984. /// 王鑫 2016.06.28 新建
  17985. /// </remarks>
  17986. private static string AddReSemiCheck(IDBTransaction oracleTrConn,
  17987. SemiCheckEntity entity,
  17988. SUserInfo sUserInfo)
  17989. {
  17990. try
  17991. {
  17992. // 获得账务日期
  17993. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  17994. string errMsg = string.Empty;
  17995. #region 校验条码有效性
  17996. errMsg = CheckBarcodeByEditRework(oracleTrConn, entity.BarCode, sUserInfo);
  17997. if (!string.IsNullOrEmpty(errMsg))
  17998. {
  17999. return errMsg;
  18000. }
  18001. #endregion
  18002. //------------------------------
  18003. #region 条码是不合格 删除在产产品数据
  18004. if (entity.ReSemiCheckType == "2") //编辑时不合格
  18005. {
  18006. #region 修改半检登记的复检状态=2不合格(返)、复检工号=当前工号、复检时间=sysdate。
  18007. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='2' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  18008. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  18009. OracleParameter[] oracleParameters = new OracleParameter[] {
  18010. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  18011. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  18012. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18013. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18014. };
  18015. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18016. // 保存失败
  18017. if (result != Constant.INT_IS_ONE)
  18018. {
  18019. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18020. }
  18021. #endregion
  18022. #region 条码有缺陷
  18023. #region 是次品 添加废弃产品
  18024. string ResponProcedureidStr = "";
  18025. if (entity.ReSemiCheckType == "2") //新建时不合格,直接报损
  18026. {
  18027. #region 添加废弃产品
  18028. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  18029. #region 属性赋值
  18030. scrapProduct.BarCode = entity.BarCode;
  18031. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  18032. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  18033. scrapProduct.ScrapDate = accountDate;
  18034. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASSREWORK;
  18035. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  18036. scrapProduct.Auditor = sUserInfo.UserID;
  18037. scrapProduct.AuditlDate = accountDate;
  18038. scrapProduct.AccountDate = accountDate;
  18039. sqlUpdate = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=" + sUserInfo.AccountID;
  18040. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate);
  18041. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18042. {
  18043. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  18044. }
  18045. scrapProduct.GoodsLevelTypeID = 14;
  18046. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  18047. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  18048. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  18049. // 查询新插入的废弃ID
  18050. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  18051. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  18052. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18053. scrapProduct.ScrapType = 3;
  18054. #endregion
  18055. // 保存报废
  18056. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  18057. // 保存失败
  18058. if (!string.IsNullOrEmpty(errMsg))
  18059. {
  18060. return errMsg;
  18061. }
  18062. #endregion
  18063. }
  18064. #endregion
  18065. // 存在缺陷 插入缺陷表
  18066. if (entity.SemiCheckDefects != null)
  18067. {
  18068. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  18069. {
  18070. #region 保存缺陷
  18071. //semiCheckDefect.SemiCheckID = Convert.ToInt32(semiCheckDefect.SemiCheckID);
  18072. //semiCheckDefect.ScrapResponFlag
  18073. // = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  18074. //// 保存缺陷
  18075. //errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  18076. //if (!string.IsNullOrEmpty(errMsg))
  18077. //{
  18078. // return errMsg;
  18079. //}
  18080. #endregion
  18081. #region 是不合格 添加废弃责任工序
  18082. if (entity.ReSemiCheckType == "2")
  18083. {
  18084. //if (semiCheckDefect.DefectProcedureID != null)
  18085. {
  18086. #region 添加责任工序
  18087. ResponProcedureEntity responProce = new ResponProcedureEntity();
  18088. #region 属性赋值
  18089. responProce.BarCode = entity.BarCode;
  18090. // 新建-不合格 获取生产线及生产数据ID
  18091. sqlUpdate = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  18092. oracleParameters = new OracleParameter[] {
  18093. new OracleParameter(":barcode",entity.BarCode),
  18094. };
  18095. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate, oracleParameters);
  18096. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18097. {
  18098. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  18099. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  18100. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  18101. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  18102. }
  18103. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  18104. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  18105. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  18106. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  18107. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  18108. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  18109. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  18110. responProce.UserID = semiCheckDefect.DefectUserID;
  18111. responProce.UserCode = semiCheckDefect.DefectUserCode;
  18112. responProce.UserName = semiCheckDefect.DefectUserName;
  18113. responProce.Remarks = semiCheckDefect.Remarks;
  18114. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  18115. #endregion
  18116. // 保存责任工序
  18117. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  18118. // 保存失败
  18119. if (!string.IsNullOrEmpty(errMsg))
  18120. {
  18121. return errMsg;
  18122. }
  18123. #endregion
  18124. }
  18125. }
  18126. #endregion
  18127. }
  18128. }
  18129. #endregion
  18130. // 1.在产表产品设置产品等级【14不合格返】。
  18131. string sql = @"update TP_PM_InProduction set GoodsLevelID=
  18132. (
  18133. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  18134. ),GoodsLevelTypeID=14,updateuserid=:updateuserid
  18135. where barcode=:barcode";
  18136. oracleParameters = new OracleParameter[] {
  18137. new OracleParameter(":accountid", sUserInfo.AccountID),
  18138. // new OracleParameter(":updateuserid",scrapProduct.GoodsLevelTypeID),
  18139. new OracleParameter(":barcode",entity.BarCode),
  18140. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18141. };
  18142. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18143. // 2.将在产数据保存到在产回收站表中(产品等级【14不合格返】)。
  18144. string sqlInsert = @"insert into TP_PM_InProductionTrash
  18145. (
  18146. BarCode,
  18147. ProductionLineID,
  18148. ProductionLineCode,
  18149. ProductionLineName,
  18150. ProcedureModel,
  18151. ModelType,
  18152. DefectFlag,
  18153. ReworkProcedureID,
  18154. IsPublicBody,
  18155. IsReFire,
  18156. GoodsLevelID,
  18157. GoodsLevelTypeID,
  18158. GoodsID,
  18159. GoodsCode,
  18160. GoodsName,
  18161. UserID,
  18162. GroutingDailyID,
  18163. GroutingDailyDetailID,
  18164. GroutingDate,
  18165. GroutingLineID,
  18166. GroutingLineCode,
  18167. GroutingLineName,
  18168. GMouldTypeID,
  18169. CanManyTimes,
  18170. GroutingLineDetailID,
  18171. GroutingMouldCode,
  18172. MouldCode,
  18173. GroutingUserID,
  18174. GroutingUserCode,
  18175. GroutingNum,
  18176. Remarks,
  18177. KilnID,
  18178. KilnCode,
  18179. KilnName,
  18180. KilnCarID,
  18181. KilnCarCode,
  18182. KilnCarName,
  18183. KilnCarBatchNo,
  18184. KilnCarPosition,
  18185. AccountID,
  18186. ValueFlag,
  18187. CreateUserID,
  18188. UpdateUserID,
  18189. SpecialRepairflag,
  18190. FlowProcedureID,
  18191. FlowProcedureTime,
  18192. ProcedureID,
  18193. ProcedureTime,
  18194. ProductionDataID,
  18195. logoid,
  18196. SemiCheckID
  18197. )
  18198. select
  18199. BarCode,
  18200. ProductionLineID,
  18201. ProductionLineCode,
  18202. ProductionLineName,
  18203. ProcedureModel,
  18204. ModelType,
  18205. DefectFlag,
  18206. ReworkProcedureID,
  18207. IsPublicBody,
  18208. IsReFire,
  18209. --GoodsLevelID,
  18210. --GoodsLevelTypeID,
  18211. (
  18212. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  18213. ),14,
  18214. GoodsID,
  18215. GoodsCode,
  18216. GoodsName,
  18217. UserID,
  18218. GroutingDailyID,
  18219. GroutingDailyDetailID,
  18220. GroutingDate,
  18221. GroutingLineID,
  18222. GroutingLineCode,
  18223. GroutingLineName,
  18224. GMouldTypeID,
  18225. CanManyTimes,
  18226. GroutingLineDetailID,
  18227. GroutingMouldCode,
  18228. MouldCode,
  18229. GroutingUserID,
  18230. GroutingUserCode,
  18231. GroutingNum,
  18232. Remarks,
  18233. KilnID,
  18234. KilnCode,
  18235. KilnName,
  18236. KilnCarID,
  18237. KilnCarCode,
  18238. KilnCarName,
  18239. KilnCarBatchNo,
  18240. KilnCarPosition,
  18241. AccountID,
  18242. ValueFlag,
  18243. :CreateUserID,
  18244. :UpdateUserID,
  18245. SpecialRepairflag,
  18246. FlowProcedureID,
  18247. FlowProcedureTime,
  18248. FlowProcedureID,
  18249. ProcedureTime,
  18250. ProductionDataID,
  18251. logoid,
  18252. SemiCheckID
  18253. from TP_PM_InProduction
  18254. where barcode=:barcode
  18255. ";
  18256. oracleParameters = new OracleParameter[] {
  18257. new OracleParameter(":barcode",entity.BarCode),
  18258. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  18259. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18260. new OracleParameter(":accountid", sUserInfo.AccountID),
  18261. };
  18262. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  18263. // 删除在产数据
  18264. sql = "delete tp_pm_inproduction where barcode = :barcode";
  18265. oracleParameters = new OracleParameter[] {
  18266. new OracleParameter(":barcode",entity.BarCode),
  18267. };
  18268. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18269. }
  18270. else if (entity.ReSemiCheckType == "1") //正常
  18271. {
  18272. #region 修改半检登记的复检状态=1合格(返)、复检工号=当前工号、复检时间=sysdate。
  18273. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='1' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  18274. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  18275. OracleParameter[] oracleParameters = new OracleParameter[] {
  18276. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  18277. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  18278. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18279. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18280. };
  18281. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18282. // 保存失败
  18283. if (result != Constant.INT_IS_ONE)
  18284. {
  18285. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18286. }
  18287. #endregion
  18288. #region 3.修改在产产品数据,在产表产品设置非返工状态(IsReworkFlag = '0'),半检登记ID=null(半检登记ID不变)。
  18289. string sql = "update tp_pm_inproduction set IsReworkFlag='0',UpdateUserID=:UpdateUserID where barcode = :barcode";
  18290. oracleParameters = new OracleParameter[] {
  18291. new OracleParameter(":barcode",entity.BarCode),
  18292. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18293. };
  18294. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18295. #endregion
  18296. }
  18297. #endregion
  18298. //------------------------------
  18299. return errMsg;
  18300. }
  18301. catch (Exception ex)
  18302. {
  18303. throw ex;
  18304. }
  18305. }
  18306. #endregion
  18307. #region 撤销复检
  18308. /// <summary>
  18309. /// 撤销复检数据
  18310. /// </summary>
  18311. /// <param name="oracleTrConn">数据连接对象</param>
  18312. /// <param name="entity">半检实体类</param>
  18313. /// <param name="sUserInfo">用户基本信息</param>
  18314. /// <returns>string</returns>
  18315. /// <remarks>
  18316. /// 王鑫 2016.06.28 新建
  18317. /// </remarks>
  18318. private static string AddCancelSemiCheck(IDBTransaction oracleTrConn,
  18319. SemiCheckEntity entity,
  18320. SUserInfo sUserInfo)
  18321. {
  18322. try
  18323. {
  18324. // 获得账务日期
  18325. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  18326. string errMsg = string.Empty;
  18327. string sql = null;
  18328. #region 校验条码有效性
  18329. if (entity.ReSemiCheckType == "1") //撤销合格
  18330. {
  18331. errMsg = CheckBarcodeByCancelReSemiCheckPass(oracleTrConn, entity.BarCode, sUserInfo);
  18332. }
  18333. else if (entity.ReSemiCheckType == "2") //撤销不合格
  18334. {
  18335. errMsg = CheckBarcodeByCancelReSemiCheckNoPass(oracleTrConn, entity.BarCode, sUserInfo);
  18336. }
  18337. if (!string.IsNullOrEmpty(errMsg))
  18338. {
  18339. return errMsg;
  18340. }
  18341. #endregion
  18342. if (entity.ReSemiCheckType == "1") //撤销合格
  18343. {
  18344. #region 在产表产品设置返工状态(IsReworkFlag = '1')。
  18345. sql = "update tp_pm_inproduction set IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  18346. OracleParameter[] oracleParameters = new OracleParameter[] {
  18347. new OracleParameter(":barcode",entity.BarCode),
  18348. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18349. };
  18350. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18351. #endregion
  18352. #region .半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  18353. // 复检撤销不需要记录撤销标识 - chenxy
  18354. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  18355. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  18356. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  18357. where SemiCheckID=:SemiCheckID";
  18358. oracleParameters = new OracleParameter[] {
  18359. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18360. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18361. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  18362. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  18363. };
  18364. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18365. // 保存失败
  18366. if (result != Constant.INT_IS_ONE)
  18367. {
  18368. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18369. }
  18370. #endregion
  18371. }
  18372. else if (entity.ReSemiCheckType == "2") //撤销不合格
  18373. {
  18374. #region 从在产回收站中把数据恢复到在产表中。
  18375. string sqlInsert = @"insert into TP_PM_InProduction
  18376. (
  18377. BarCode,
  18378. ProductionLineID,
  18379. ProductionLineCode,
  18380. ProductionLineName,
  18381. ProcedureModel,
  18382. ModelType,
  18383. DefectFlag,
  18384. ReworkProcedureID,
  18385. IsPublicBody,
  18386. IsReFire,
  18387. GoodsLevelID,
  18388. GoodsLevelTypeID,
  18389. GoodsID,
  18390. GoodsCode,
  18391. GoodsName,
  18392. UserID,
  18393. GroutingDailyID,
  18394. GroutingDailyDetailID,
  18395. GroutingDate,
  18396. GroutingLineID,
  18397. GroutingLineCode,
  18398. GroutingLineName,
  18399. GMouldTypeID,
  18400. CanManyTimes,
  18401. GroutingLineDetailID,
  18402. GroutingMouldCode,
  18403. MouldCode,
  18404. GroutingUserID,
  18405. GroutingUserCode,
  18406. GroutingNum,
  18407. Remarks,
  18408. KilnID,
  18409. KilnCode,
  18410. KilnName,
  18411. KilnCarID,
  18412. KilnCarCode,
  18413. KilnCarName,
  18414. KilnCarBatchNo,
  18415. KilnCarPosition,
  18416. AccountID,
  18417. ValueFlag,
  18418. CreateUserID,
  18419. UpdateUserID,
  18420. SpecialRepairflag,
  18421. FlowProcedureID,
  18422. FlowProcedureTime,
  18423. ProcedureID,
  18424. ProcedureTime,
  18425. ProductionDataID,
  18426. logoid,
  18427. SemiCheckID
  18428. )
  18429. select
  18430. BarCode,
  18431. ProductionLineID,
  18432. ProductionLineCode,
  18433. ProductionLineName,
  18434. ProcedureModel,
  18435. ModelType,
  18436. DefectFlag,
  18437. ReworkProcedureID,
  18438. IsPublicBody,
  18439. IsReFire,
  18440. GoodsLevelID,
  18441. GoodsLevelTypeID,
  18442. GoodsID,
  18443. GoodsCode,
  18444. GoodsName,
  18445. UserID,
  18446. GroutingDailyID,
  18447. GroutingDailyDetailID,
  18448. GroutingDate,
  18449. GroutingLineID,
  18450. GroutingLineCode,
  18451. GroutingLineName,
  18452. GMouldTypeID,
  18453. CanManyTimes,
  18454. GroutingLineDetailID,
  18455. GroutingMouldCode,
  18456. MouldCode,
  18457. GroutingUserID,
  18458. GroutingUserCode,
  18459. GroutingNum,
  18460. Remarks,
  18461. KilnID,
  18462. KilnCode,
  18463. KilnName,
  18464. KilnCarID,
  18465. KilnCarCode,
  18466. KilnCarName,
  18467. KilnCarBatchNo,
  18468. KilnCarPosition,
  18469. AccountID,
  18470. ValueFlag,
  18471. :CreateUserID,
  18472. :UpdateUserID,
  18473. SpecialRepairflag,
  18474. FlowProcedureID,
  18475. FlowProcedureTime,
  18476. FlowProcedureID,
  18477. ProcedureTime,
  18478. ProductionDataID,
  18479. logoid,
  18480. SemiCheckID
  18481. from TP_PM_InProductionTrash
  18482. where barcode=:barcode
  18483. ";
  18484. OracleParameter[] oracleParameters = new OracleParameter[] {
  18485. new OracleParameter(":barcode",entity.BarCode),
  18486. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  18487. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18488. };
  18489. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  18490. #endregion
  18491. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  18492. OracleParameter[] spParameters = null;
  18493. int spResult = 0;
  18494. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  18495. " from TP_PM_ScrapProduct sp\n" +
  18496. " where sp.barcode = :barcode\n" +
  18497. " and sp.auditstatus = 1\n" +
  18498. " and sp.valueflag = '1'\n" +
  18499. " and sp.scraptype = '3'";
  18500. spParameters = new OracleParameter[] {
  18501. new OracleParameter(":barcode",entity.BarCode),
  18502. };
  18503. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  18504. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  18505. spParameters = new OracleParameter[] {
  18506. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18507. new OracleParameter(":scrapproductid",scrapproductid),
  18508. };
  18509. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  18510. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  18511. //oracleParameters = new OracleParameter[] {
  18512. // new OracleParameter(":barcode",entity.BarCode),
  18513. //};
  18514. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  18515. //string sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  18516. //oracleParameters = new OracleParameter[] {
  18517. // new OracleParameter(":barcode",entity.BarCode),
  18518. // };
  18519. //result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18520. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  18521. //oracleParameters = new OracleParameter[] {
  18522. // new OracleParameter(":barcode",entity.BarCode),
  18523. // };
  18524. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18525. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  18526. ////oracleParameters = new OracleParameter[] {
  18527. //// new OracleParameter(":barcode",entity.BarCode),
  18528. //// };
  18529. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18530. #endregion
  18531. #region 删除在产回收站数据
  18532. sql = "delete TP_PM_InProductionTrash where barcode = :barcode";
  18533. oracleParameters = new OracleParameter[] {
  18534. new OracleParameter(":barcode",entity.BarCode),
  18535. };
  18536. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18537. #endregion
  18538. #region .在产表产品设置返工状态(IsReworkFlag = '1')。
  18539. sql = "update tp_pm_inproduction set IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  18540. oracleParameters = new OracleParameter[] {
  18541. new OracleParameter(":barcode",entity.BarCode),
  18542. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  18543. };
  18544. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  18545. #endregion
  18546. #region 6.半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  18547. // 复检撤销不需要记录撤销标识 - chenxy
  18548. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  18549. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  18550. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  18551. where SemiCheckID=:SemiCheckID";
  18552. oracleParameters = new OracleParameter[] {
  18553. //new OracleParameter(":ReSemiCheckUserID",entity.ReSemiCheckUserID),
  18554. //new OracleParameter(":ReSemiCheckUserCode",entity.ReSemiCheckUserCode),
  18555. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  18556. new OracleParameter(":updateuserid",sUserInfo.UserID),
  18557. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  18558. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  18559. };
  18560. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  18561. // 保存失败
  18562. if (result != Constant.INT_IS_ONE)
  18563. {
  18564. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  18565. }
  18566. #endregion
  18567. }
  18568. return errMsg;
  18569. }
  18570. catch (Exception ex)
  18571. {
  18572. throw ex;
  18573. }
  18574. }
  18575. #endregion
  18576. /// <summary>
  18577. /// 校验条码有效(撤销复检-不合格)
  18578. /// </summary>
  18579. /// <param name="oracleTrConn">连接对象</param>
  18580. /// <param name="barcode">条码</param>
  18581. /// <param name="sUserInfo">登录用户信息</param>
  18582. /// <returns>string</returns>
  18583. /// <remarks>
  18584. /// 王鑫 2016.06.28 新建
  18585. /// </remarks>
  18586. private static string CheckBarcodeByCancelReSemiCheckNoPass(IDBTransaction oracleTrConn,
  18587. string barcode,
  18588. SUserInfo sUserInfo
  18589. )
  18590. {
  18591. try
  18592. {
  18593. OracleParameter[] paras = new OracleParameter[]{
  18594. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  18595. };
  18596. string sql = @"
  18597. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null
  18598. ";
  18599. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  18600. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  18601. {
  18602. return "条码[" + barcode + "]不在在产回收站中";
  18603. }
  18604. return null;
  18605. }
  18606. catch (Exception ex)
  18607. {
  18608. throw ex;
  18609. }
  18610. }
  18611. /// <summary>
  18612. /// 校验条码有效(撤销复检-合格)
  18613. /// </summary>
  18614. /// <param name="oracleTrConn">连接对象</param>
  18615. /// <param name="barcode">条码</param>
  18616. /// <param name="sUserInfo">登录用户信息</param>
  18617. /// <returns>string</returns>
  18618. /// <remarks>
  18619. /// 王鑫 2016.06.28 新建
  18620. /// </remarks>
  18621. private static string CheckBarcodeByCancelReSemiCheckPass(IDBTransaction oracleTrConn,
  18622. string barcode,
  18623. SUserInfo sUserInfo
  18624. )
  18625. {
  18626. try
  18627. {
  18628. OracleParameter[] paras = new OracleParameter[]{
  18629. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  18630. };
  18631. string sql = @"
  18632. select InScrapFlag,
  18633. KilnCarID,
  18634. KilnCarName,
  18635. IsReworkFlag,
  18636. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  18637. ";
  18638. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  18639. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  18640. {
  18641. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  18642. {
  18643. return "条码[" + barcode + "]已经报损待审批";
  18644. }
  18645. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  18646. {
  18647. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  18648. }
  18649. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  18650. {
  18651. return "条码[" + barcode + "]是半检返工状态";
  18652. }
  18653. if (string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SemiCheckID"].ToString()))
  18654. {
  18655. return "条码[" + barcode + "]已经做过其他操作,不能撤销";
  18656. }
  18657. }
  18658. else
  18659. {
  18660. return "条码[" + barcode + "]不在在产流程";
  18661. }
  18662. return null;
  18663. }
  18664. catch (Exception ex)
  18665. {
  18666. throw ex;
  18667. }
  18668. }
  18669. #region 生产订单 wangx 2017-2-7
  18670. /// <summary>
  18671. /// 保存订单
  18672. /// </summary>
  18673. /// <param name="order"></param>
  18674. /// <param name="sUserInfo"></param>
  18675. /// <returns></returns>
  18676. public static ServiceResultEntity SaveOrder(OrderEntity order, SUserInfo sUserInfo)
  18677. {
  18678. ServiceResultEntity entity = new ServiceResultEntity();
  18679. int returnRows = 0;
  18680. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18681. try
  18682. {
  18683. string sql = string.Empty;
  18684. OracleParameter[] Paras = null;
  18685. DataSet ds = null;
  18686. #region 查询订单号是否有重复
  18687. sql = "select OrderID from TP_PM_Order where OrderNo=:OrderNo and AccountID=:AccountID";
  18688. Paras = new OracleParameter[] {
  18689. new OracleParameter(":OrderNo",OracleDbType.Varchar2,
  18690. order.OrderNo,ParameterDirection.Input),
  18691. new OracleParameter(":AccountID",OracleDbType.Int32,
  18692. sUserInfo.AccountID,ParameterDirection.Input)
  18693. };
  18694. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  18695. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18696. {
  18697. if (order.OrderID == 0 || (order.OrderID != Convert.ToInt32(ds.Tables[0].Rows[0]["OrderID"])))
  18698. {
  18699. //重复订单号
  18700. returnRows = -1;
  18701. oracleTrConn.Rollback();
  18702. oracleTrConn.Disconnect();
  18703. entity.Result = returnRows;
  18704. entity.Message = "系统存在相同的生产订单号!";
  18705. return entity;
  18706. }
  18707. }
  18708. #endregion
  18709. #region 添加、编辑生产订单
  18710. if (order.OrderID == 0)
  18711. {
  18712. string sqlText = "SELECT SEQ_PM_Order_OrderID.NEXTVAL FROM dual";
  18713. int newOrderID = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  18714. sql = @"Insert into TP_PM_Order
  18715. (
  18716. OrderID,
  18717. OrderNo,
  18718. OrderDate,
  18719. Remarks,
  18720. AccountID,
  18721. ValueFlag,
  18722. CreateTime,
  18723. CreateUserID,
  18724. UpdateTime,
  18725. UpdateUserID
  18726. )
  18727. Values
  18728. (
  18729. :OrderID,
  18730. :OrderNo,
  18731. :OrderDate,
  18732. :Remarks,
  18733. :AccountID,
  18734. :ValueFlag,
  18735. sysdate,
  18736. :CreateUserID,
  18737. sysdate,
  18738. :UpdateUserID
  18739. )";
  18740. Paras = new OracleParameter[] {
  18741. new OracleParameter(":OrderID",OracleDbType.Int32,newOrderID,ParameterDirection.Input),
  18742. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  18743. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  18744. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  18745. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  18746. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  18747. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  18748. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  18749. };
  18750. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  18751. }
  18752. else
  18753. {
  18754. sql = @"Update TP_PM_Order
  18755. set
  18756. OrderNo=:OrderNo,
  18757. OrderDate=:OrderDate,
  18758. Remarks=:Remarks,
  18759. ValueFlag=:ValueFlag,
  18760. UpdateUserID=:UpdateUserID
  18761. where OrderID=:OrderID
  18762. ";
  18763. Paras = new OracleParameter[] {
  18764. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  18765. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  18766. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  18767. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  18768. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  18769. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  18770. };
  18771. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  18772. }
  18773. #endregion
  18774. if (returnRows <= 0)
  18775. {
  18776. oracleTrConn.Rollback();
  18777. oracleTrConn.Disconnect();
  18778. }
  18779. else
  18780. {
  18781. oracleTrConn.Commit();
  18782. oracleTrConn.Disconnect();
  18783. }
  18784. }
  18785. catch (Exception ex)
  18786. {
  18787. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  18788. {
  18789. oracleTrConn.Rollback();
  18790. oracleTrConn.Disconnect();
  18791. }
  18792. throw ex;
  18793. }
  18794. finally
  18795. {
  18796. if (oracleTrConn.ConnState == ConnectionState.Open)
  18797. {
  18798. oracleTrConn.Disconnect();
  18799. }
  18800. }
  18801. entity.Result = returnRows;
  18802. return entity;
  18803. }
  18804. /// <summary>
  18805. /// 启用、停用订单标识
  18806. /// </summary>
  18807. /// <param name="order"></param>
  18808. /// <param name="sUserInfo"></param>
  18809. /// <returns></returns>
  18810. public static ServiceResultEntity ChangeOrderFlag(OrderEntity order, SUserInfo sUserInfo)
  18811. {
  18812. ServiceResultEntity entity = new ServiceResultEntity();
  18813. int returnRows = 0;
  18814. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18815. try
  18816. {
  18817. string sql = string.Empty;
  18818. OracleParameter[] Paras = null;
  18819. #region 添加、编辑生产订单
  18820. sql = @"Update TP_PM_Order
  18821. set
  18822. ValueFlag=:ValueFlag,
  18823. UpdateUserID=:UpdateUserID
  18824. where OrderID=:OrderID
  18825. ";
  18826. Paras = new OracleParameter[] {
  18827. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  18828. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  18829. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  18830. };
  18831. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  18832. #endregion
  18833. if (returnRows <= 0)
  18834. {
  18835. oracleTrConn.Rollback();
  18836. oracleTrConn.Disconnect();
  18837. }
  18838. else
  18839. {
  18840. oracleTrConn.Commit();
  18841. oracleTrConn.Disconnect();
  18842. }
  18843. }
  18844. catch (Exception ex)
  18845. {
  18846. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  18847. {
  18848. oracleTrConn.Rollback();
  18849. oracleTrConn.Disconnect();
  18850. }
  18851. throw ex;
  18852. }
  18853. entity.Result = returnRows;
  18854. return entity;
  18855. }
  18856. #endregion
  18857. #region 保存交接
  18858. /// <summary>
  18859. /// 保存交接校验
  18860. /// </summary>
  18861. /// <param name="orderid"></param>
  18862. /// <param name="dtData"></param>
  18863. /// <param name="sUserInfo"></param>
  18864. /// <returns></returns>
  18865. public static ServiceResultEntity SaveFinishedHandover(int orderid, DataTable dtData, SUserInfo sUserInfo)
  18866. {
  18867. ServiceResultEntity entity = new ServiceResultEntity();
  18868. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18869. try
  18870. {
  18871. string sql = string.Empty;
  18872. OracleParameter[] Paras = null;
  18873. DataSet ds = null;
  18874. bool isError = false;
  18875. oracleTrConn.Connect();
  18876. // 包装装板,产成品交接不限制
  18877. //string GoodsModel = string.Empty;
  18878. //int? logoID = null;
  18879. //string logoName = string.Empty;
  18880. //int PlateLimitNum = 0;
  18881. //string _isEnable_S_PM_011 = "0";
  18882. //// 2.产成品交接是否限制同型号
  18883. //string _isEnable_S_PM_012 = "0";
  18884. //// 3.产成品交接是否限制每板装板数量(必须先启用限制同型号);
  18885. //string _isEnable_S_PM_013 = "0";
  18886. //// 读取系统设置
  18887. //sql = "select settingcode,settingvalue from tp_mst_systemsetting where settingcode in ('S_PM_011','S_PM_012','S_PM_013') and accountid=" + sUserInfo.AccountID;
  18888. //ds = oracleTrConn.GetSqlResultToDs(sql);
  18889. //foreach (DataRow dr in ds.Tables[0].Rows)
  18890. //{
  18891. // if (dr["settingcode"] == "S_PM_011")
  18892. // _isEnable_S_PM_011 = dr["settingcode"].ToString();
  18893. // else if (dr["settingcode"] == "S_PM_012")
  18894. // _isEnable_S_PM_012 = dr["settingcode"].ToString();
  18895. // else if (dr["settingcode"] == "S_PM_013")
  18896. // _isEnable_S_PM_013 = dr["settingcode"].ToString();
  18897. //}
  18898. // 本批交接的批次号
  18899. string fhBatchNo = System.Guid.NewGuid().ToString();
  18900. for (int i = 0; i < dtData.Rows.Count; i++)
  18901. {
  18902. #region 产品是否在产成表中
  18903. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  18904. Paras = new OracleParameter[]{
  18905. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  18906. };
  18907. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  18908. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18909. {
  18910. #region 是否交接过
  18911. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  18912. if (!string.IsNullOrEmpty(fhUserCode))
  18913. {
  18914. entity.Result = -2; //已交接,不能再次进行交接
  18915. entity.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  18916. isError = true;
  18917. break;
  18918. }
  18919. #endregion
  18920. }
  18921. else
  18922. {
  18923. #region 不是产成品
  18924. entity.Result = -1; //不是产成品
  18925. entity.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  18926. isError = true;
  18927. break;
  18928. #endregion
  18929. }
  18930. #endregion
  18931. /* 包装装板,产成品交接不限制
  18932. if (i == 0)
  18933. {
  18934. #region 记录产品型号,最大限制数量,商标
  18935. GoodsModel = dtData.Rows[i]["GoodsModel"].ToString();
  18936. logoID = Convert.ToInt32(dtData.Rows[i]["logoID"]);
  18937. logoName = dtData.Rows[i]["logoName"].ToString();
  18938. sql = "select PlateLimitNum from TP_MST_Goods where GoodsID=:GoodsID";
  18939. Paras = new OracleParameter[]{
  18940. new OracleParameter(":GoodsID",OracleDbType.Int32, ds.Tables[0].Rows[0]["GoodsID"],ParameterDirection.Input),
  18941. };
  18942. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  18943. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18944. {
  18945. if (_isEnable_S_PM_013 == "1" && _isEnable_S_PM_012 == "1")
  18946. {
  18947. PlateLimitNum = Convert.ToInt32(ds.Tables[0].Rows[0]["PlateLimitNum"]);
  18948. }
  18949. }
  18950. #endregion
  18951. }
  18952. else
  18953. {
  18954. #region 启用限制同商标
  18955. if (_isEnable_S_PM_011 == "1")
  18956. {
  18957. if (Convert.ToInt32(dtData.Rows[0]["logoid"]) != logoID)
  18958. {
  18959. entity.Result = -3;
  18960. entity.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的商标【"
  18961. + dtData.Rows[0]["logoname"] + "】与此批次商标【" + logoName + "】不同,不能进行该操作。 ";
  18962. isError = true;
  18963. break;
  18964. }
  18965. }
  18966. #endregion
  18967. #region 启用限制同型号
  18968. if (_isEnable_S_PM_012 == "1")
  18969. {
  18970. if (dtData.Rows[0]["GoodsModel"].ToString() != GoodsModel)
  18971. {
  18972. entity.Result = -4;
  18973. entity.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的型号【"
  18974. + dtData.Rows[0]["GoodsModel"] + "】与此批次型号【" + GoodsModel + "】不同,不能进行该操作。 ";
  18975. isError = true;
  18976. break;
  18977. }
  18978. }
  18979. #endregion
  18980. #region 产品列表是否大于限制条数
  18981. if (PlateLimitNum > 0)
  18982. {
  18983. if (dtData.Rows.Count > PlateLimitNum)
  18984. {
  18985. entity.Result = -5;
  18986. entity.Message = "产品列表数量大于每板装板数量【" + PlateLimitNum + "】";
  18987. isError = true;
  18988. break;
  18989. }
  18990. }
  18991. #endregion
  18992. }
  18993. */
  18994. #region 更新产成品相关信息
  18995. sql = @"update TP_PM_FinishedProduct
  18996. set FHUserID=:FHUserID,
  18997. FHUserCode=:FHUserCode,
  18998. FHBatchNo=:FHBatchNo,
  18999. FHTime=sysdate,
  19000. FHOrderID=:FHOrderID,
  19001. UpdateUserID=:UpdateUserID
  19002. where Barcode=:Barcode";
  19003. Paras = new OracleParameter[]{
  19004. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  19005. new OracleParameter(":FHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  19006. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  19007. new OracleParameter(":FHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  19008. new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  19009. new OracleParameter(":FHOrderID",OracleDbType.Int32, orderid,ParameterDirection.Input),
  19010. };
  19011. oracleTrConn.ExecuteNonQuery(sql, Paras);
  19012. #endregion
  19013. }
  19014. if (isError)
  19015. {
  19016. oracleTrConn.Rollback();
  19017. oracleTrConn.Disconnect();
  19018. }
  19019. else
  19020. {
  19021. entity.Result = 1;
  19022. oracleTrConn.Commit();
  19023. oracleTrConn.Disconnect();
  19024. }
  19025. }
  19026. catch (Exception ex)
  19027. {
  19028. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19029. {
  19030. oracleTrConn.Rollback();
  19031. oracleTrConn.Disconnect();
  19032. }
  19033. throw ex;
  19034. }
  19035. finally
  19036. {
  19037. if (oracleTrConn.ConnState == ConnectionState.Open)
  19038. {
  19039. oracleTrConn.Disconnect();
  19040. }
  19041. }
  19042. return entity;
  19043. }
  19044. #endregion
  19045. /// <summary>
  19046. /// 撤销产成品交接
  19047. /// </summary>
  19048. /// <param name="barcode"></param>
  19049. /// <param name="sUserInfo"></param>
  19050. /// <returns></returns>
  19051. public static ServiceResultEntity SaveCancelFinishedHandoverByBarcode(string barcode, SUserInfo sUserInfo)
  19052. {
  19053. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19054. try
  19055. {
  19056. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19057. // 1.判断产品是否在产成品表中
  19058. string sql = @"select
  19059. FHUserID,
  19060. FHUserCode,
  19061. GoodsID,
  19062. GoodsCode,
  19063. GoodsName
  19064. from TP_PM_FinishedProduct
  19065. where BarCode=:BarCode";
  19066. OracleParameter[] paras = new OracleParameter[]{
  19067. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19068. };
  19069. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19070. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19071. {
  19072. // 在产成品表中
  19073. #region 是否交接过
  19074. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19075. if (string.IsNullOrEmpty(fhUserCode))
  19076. {
  19077. resultEntity.Result = -1; //未交接,不能撤销
  19078. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19079. return resultEntity;
  19080. }
  19081. #endregion
  19082. }
  19083. else
  19084. {
  19085. resultEntity.Result = -2; //不能产成品,不能撤销
  19086. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19087. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19088. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19089. {
  19090. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19091. }
  19092. else
  19093. {
  19094. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  19095. }
  19096. return resultEntity;
  19097. }
  19098. #region 查询产品相关信息
  19099. // 撤销记录
  19100. string sqlString = "INSERT INTO TP_PM_FHUndo\n" +
  19101. " (GroutingDailyDetailID\n" +
  19102. " ,GoodsLevelTypeID\n" +
  19103. " ,FHUserID\n" +
  19104. " ,FHUserCode\n" +
  19105. " ,FHBatchNo\n" +
  19106. " ,FHTime\n" +
  19107. " ,FHOrderID\n" +
  19108. " ,OnlyCode\n" +
  19109. " ,FINISHEDLOADBATCHNO\n" +
  19110. " ,AccountID\n" +
  19111. " ,CreateUserID)\n" +
  19112. " SELECT t.groutingdailydetailid\n" +
  19113. " ,t.GoodsLevelTypeID\n" +
  19114. " ,t.fhuserid\n" +
  19115. " ,t.fhusercode\n" +
  19116. " ,t.fhbatchno\n" +
  19117. " ,t.fhtime\n" +
  19118. " ,t.FHOrderID\n" +
  19119. " ,t.onlycode\n" +
  19120. " ,t.FINISHEDLOADBATCHNO\n" +
  19121. " ,t.AccountID\n" +
  19122. " ,:UpdateUserID\n" +
  19123. " FROM TP_PM_FinishedProduct t\n" +
  19124. " WHERE t.barcode = :BarCode";
  19125. paras = new OracleParameter[]{
  19126. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19127. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19128. };
  19129. int resultRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  19130. // SAP同步后再成品交接撤销的,记录撤销标识
  19131. string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and rownum=1";
  19132. OracleParameter[] sapparas = new OracleParameter[]{
  19133. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19134. };
  19135. int sapcount = Convert.ToInt32( oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  19136. if (sapcount > 0)
  19137. {
  19138. sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  19139. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19140. }
  19141. sql = @"Update TP_PM_FinishedProduct
  19142. set FHUserID=null,
  19143. FHUserCode=null,
  19144. FHBatchNo=null,
  19145. FHTime=null,
  19146. FHOrderID=null,FINISHEDLOADBATCHNO=null,
  19147. UpdateUserID=:UpdateUserID
  19148. where BarCode=:BarCode";
  19149. resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  19150. if (resultRow == 0)
  19151. {
  19152. oracleTrConn.Rollback();
  19153. oracleTrConn.Disconnect();
  19154. }
  19155. else
  19156. {
  19157. resultEntity.Result = 1;
  19158. oracleTrConn.Commit();
  19159. oracleTrConn.Disconnect();
  19160. }
  19161. #endregion
  19162. return resultEntity;
  19163. }
  19164. catch (Exception ex)
  19165. {
  19166. throw ex;
  19167. }
  19168. }
  19169. /// <summary>
  19170. /// 更改产成品交接订单号
  19171. /// </summary>
  19172. /// <param name="barcode"></param>
  19173. /// <param name="orderid"></param>
  19174. /// <param name="sUserInfo"></param>
  19175. /// <returns></returns>
  19176. public static ServiceResultEntity SaveChangeFinishedHandoverByBarcode(string barcode, int orderid, SUserInfo sUserInfo)
  19177. {
  19178. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19179. try
  19180. {
  19181. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19182. // 1.判断产品是否在产成品表中
  19183. string sql = @"select
  19184. FHUserID,
  19185. FHUserCode,
  19186. GoodsID,
  19187. GoodsCode,
  19188. GoodsName
  19189. from TP_PM_FinishedProduct
  19190. where BarCode=:BarCode";
  19191. OracleParameter[] paras = new OracleParameter[]{
  19192. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19193. };
  19194. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19195. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19196. {
  19197. // 在产成品表中
  19198. #region 是否交接过
  19199. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19200. if (string.IsNullOrEmpty(fhUserCode))
  19201. {
  19202. resultEntity.Result = -1; //未交接,不能撤销
  19203. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19204. return resultEntity;
  19205. }
  19206. #endregion
  19207. }
  19208. else
  19209. {
  19210. resultEntity.Result = -2; //不能产成品,不能撤销
  19211. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19212. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19213. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19214. {
  19215. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19216. }
  19217. else
  19218. {
  19219. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  19220. }
  19221. return resultEntity;
  19222. }
  19223. #region 查询产品相关信息
  19224. sql = @"Update TP_PM_FinishedProduct
  19225. set
  19226. FHOrderID=:FHOrderID,
  19227. UpdateUserID=:UpdateUserID
  19228. where BarCode=:BarCode";
  19229. paras = new OracleParameter[]{
  19230. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19231. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19232. new OracleParameter(":FHOrderID",OracleDbType.Int32,orderid,ParameterDirection.Input),
  19233. };
  19234. int resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  19235. if (resultRow == 0)
  19236. {
  19237. oracleTrConn.Rollback();
  19238. oracleTrConn.Disconnect();
  19239. }
  19240. else
  19241. {
  19242. resultEntity.Result = 1;
  19243. oracleTrConn.Commit();
  19244. oracleTrConn.Disconnect();
  19245. }
  19246. #endregion
  19247. return resultEntity;
  19248. }
  19249. catch (Exception ex)
  19250. {
  19251. throw ex;
  19252. }
  19253. }
  19254. /// <summary>
  19255. /// 回收标准计件
  19256. /// </summary>
  19257. /// <param name="oracleTrConn">数据连接对象</param>
  19258. /// <param name="procedure">工序对象</param>
  19259. /// <param name="barcodeTable">条码信息</param>
  19260. /// <param name="sUserInfo">用户基本信息</param>
  19261. /// <param name="goodsID">返回的产品ID</param>
  19262. /// <param name="goodsCode">返回的产品Code</param>
  19263. /// <param name="goodsName">返回的产品名称</param>
  19264. /// <param name="groutingUserID">返回的注浆者ID</param>
  19265. /// <returns>string</returns>
  19266. /// <remarks>
  19267. /// 王鑫 2017.7.20 新建
  19268. /// </remarks>
  19269. private static string AddRecydingFlagWorkPiece(IDBTransaction oracleTrConn,
  19270. ProcedureEntity procedure,
  19271. DataTable barcodeTable,
  19272. SUserInfo sUserInfo,
  19273. out int goodsID,
  19274. out string goodsCode,
  19275. out string goodsName,
  19276. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  19277. {
  19278. try
  19279. {
  19280. int deleteRow = 0;
  19281. goodsID = Constant.INT_IS_ZERO;
  19282. goodsCode = null;
  19283. goodsName = null;
  19284. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  19285. // 获得账务日期
  19286. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  19287. string errMsg = string.Empty;
  19288. // 本批采集的批次号
  19289. string centralizedBatchNo = System.Guid.NewGuid().ToString();
  19290. // 条码信息
  19291. string logoName_Temp = "";
  19292. string logoCode_Temp = "";
  19293. string groutingdate_Temp = "";
  19294. foreach (DataRow barcodeRow in barcodeTable.Rows)
  19295. {
  19296. // 条码
  19297. string barcode = barcodeRow["Barcode"].ToString();
  19298. if (string.IsNullOrEmpty(barcode))
  19299. {
  19300. throw new Exception("传入的条码号为空");
  19301. }
  19302. // 生产工号
  19303. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  19304. // 生产工号
  19305. string workUserCode = barcodeRow["UserCode"].ToString();
  19306. //#region 校验条码有效性
  19307. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  19308. //if (!string.IsNullOrEmpty(errMsg))
  19309. //{
  19310. // return errMsg;
  19311. //}
  19312. //#endregion
  19313. if (procedure.CollectType == 1)
  19314. {
  19315. #region 校验条码有效性
  19316. errMsg = CheckRecyclingFlagBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  19317. if (!string.IsNullOrEmpty(errMsg))
  19318. {
  19319. logoName = "";
  19320. logoCode = "";
  19321. groutingdate = "";
  19322. return errMsg;
  19323. }
  19324. #endregion
  19325. }
  19326. else
  19327. {
  19328. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  19329. tp_pm_groutingdailydetail.goodscode,
  19330. tp_pm_groutingdailydetail.goodsname,
  19331. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  19332. tp_pm_groutingdailydetail.groutingdate,
  19333. tp_mst_logo.logoid,
  19334. tp_mst_logo.logocode,
  19335. tp_mst_logo.logoname
  19336. from tp_pm_groutingdailydetail
  19337. left join tp_mst_logo
  19338. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  19339. where tp_pm_groutingdailydetail.barcode=:barcode
  19340. ";
  19341. OracleParameter[] paras = new OracleParameter[] {
  19342. new OracleParameter(":barcode",barcode),
  19343. };
  19344. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  19345. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  19346. {
  19347. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  19348. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  19349. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  19350. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  19351. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  19352. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  19353. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  19354. logoName_Temp = logoName;
  19355. logoCode_Temp = logoCode;
  19356. groutingdate_Temp = groutingdate;
  19357. }
  19358. }
  19359. #region 数据处理
  19360. #region 处理废弃数据并转回收数据为在产数据
  19361. //////string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  19362. //////OracleParameter[] queryparas = new OracleParameter[]{
  19363. ////// new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  19364. //////};
  19365. //////DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  19366. //////if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  19367. //////{
  19368. ////// errMsg = "未设定干补等级";
  19369. ////// logoName = "";
  19370. ////// logoCode = "";
  19371. ////// groutingdate = "";
  19372. ////// return errMsg;
  19373. //////}
  19374. //////string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  19375. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  19376. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  19377. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  19378. UpdateUserID=:UpdateUserID
  19379. where BarCode=:barcode
  19380. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  19381. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  19382. */
  19383. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  19384. ////// string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  19385. ////// SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  19386. ////// UpdateUserID=:UpdateUserID
  19387. ////// where BarCode=:barcode
  19388. ////// and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  19389. ////// and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  19390. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set RecyclingFlag=1,
  19391. UpdateUserID=:UpdateUserID,RecyclingUserID=:RecyclingUserID,RecyclingUserCode=:RecyclingUserCode,
  19392. RecyclingTime=sysdate
  19393. where BarCode=:barcode
  19394. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode and ValueFlag=1)
  19395. and ValueFlag=1 ";
  19396. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  19397. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19398. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19399. new OracleParameter(":RecyclingUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19400. new OracleParameter(":RecyclingUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  19401. };
  19402. oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  19403. string sqlUpdateGROUTString = @"update TP_PM_GROUTINGDAILYDETAIL set RecyclingFlag=1,
  19404. UpdateUserID=:UpdateUserID
  19405. where BarCode=:barcode ";
  19406. OracleParameter[] GROUTparas = new OracleParameter[]{
  19407. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19408. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19409. };
  19410. oracleTrConn.ExecuteNonQuery(sqlUpdateGROUTString, GROUTparas);
  19411. //modify wangx 20150623
  19412. //////OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  19413. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19414. //////};
  19415. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  19416. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  19417. //////string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  19418. //////oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  19419. //modify wangx 20150623 end
  19420. #region
  19421. //第五步,插入回收工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  19422. // 查询新插入的生产数据ID
  19423. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  19424. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  19425. int productionDataID = 0;
  19426. if (!string.IsNullOrEmpty(idStr))
  19427. {
  19428. productionDataID = int.Parse(idStr);
  19429. }
  19430. else
  19431. {
  19432. logoName = "";
  19433. logoCode = "";
  19434. groutingdate = "";
  19435. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19436. }
  19437. int? ClassesSettingID = null;//班次配置ID
  19438. #region 第五步 添加生产者数据
  19439. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  19440. if (!string.IsNullOrEmpty(errMsg))
  19441. {
  19442. logoName = "";
  19443. logoCode = "";
  19444. groutingdate = "";
  19445. return errMsg;
  19446. }
  19447. #endregion
  19448. ProductionDataEntity productionData = new ProductionDataEntity();
  19449. #region 属性赋值
  19450. productionData.ClassesSettingID = ClassesSettingID;
  19451. productionData.ProductionDataID = Convert.ToInt32(idStr);
  19452. productionData.Barcode = barcode;
  19453. productionData.CentralizedBatchNo = centralizedBatchNo;
  19454. productionData.ProductionLineID = procedure.ProductionLineID;
  19455. productionData.ProductionLineCode = procedure.ProductionlineCode;
  19456. productionData.ProductionLineName = procedure.ProductionlineName;
  19457. productionData.CompleteProcedureID = procedure.ProcedureID;
  19458. productionData.ProcedureCode = procedure.ProcedureCode;
  19459. productionData.ProcedureName = procedure.ProcedureName;
  19460. productionData.ProcedureModel = procedure.ProcedureModel;
  19461. productionData.ModelType = procedure.ModelType;
  19462. productionData.NodeType = procedure.NodeType;
  19463. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  19464. productionData.ReworkProcedureID = null;
  19465. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  19466. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  19467. //设置干补标识,产品分级类别=9干补
  19468. ////productionData.GoodsLevelTypeID = 9;
  19469. //productionData.GoodsLevelID = int.Parse(goodsLevelID);
  19470. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  19471. productionData.OrganizationID = procedure.OrganizationID;
  19472. productionData.GoodsID = goodsID;
  19473. productionData.GoodsCode = goodsCode;
  19474. productionData.GoodsName = goodsName;
  19475. productionData.UserID = workUserID;
  19476. productionData.UserCode = barcodeRow["UserCode"].ToString();
  19477. productionData.UserName = barcodeRow["UserName"].ToString();
  19478. productionData.PieceType = procedure.PieceType;
  19479. if (barcodeRow["LogoID"].ToString() != "")
  19480. {
  19481. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  19482. }
  19483. string sqlReFire = @"select
  19484. isrefire,
  19485. logoid,GoodsLevelID,GoodsLevelTypeID
  19486. from tp_pm_inproduction where barcode=:barcode
  19487. union
  19488. select
  19489. isrefire,
  19490. logoid,GoodsLevelID,GoodsLevelTypeID
  19491. from TP_PM_InProductionTrash where barcode=:barcode
  19492. union
  19493. select
  19494. isrefire,
  19495. logoid,GoodsLevelID,GoodsLevelTypeID
  19496. from TP_PM_FinishedProduct where barcode=:barcode ";
  19497. OracleParameter[] ReFireparas = new OracleParameter[] {
  19498. new OracleParameter(":barcode",barcode),
  19499. };
  19500. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  19501. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  19502. {
  19503. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  19504. {
  19505. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  19506. }
  19507. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  19508. {
  19509. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  19510. }
  19511. if (dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"].ToString() != string.Empty)
  19512. {
  19513. productionData.GoodsLevelTypeID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  19514. productionData.GoodsLevelID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelID"]);
  19515. }
  19516. }
  19517. #endregion 属性赋值
  19518. productionData.SpecialRepairflag = 0;
  19519. string OutSpecialRepairflag = "0";// 没有什么特殊的,同干补保存生产数据共用同一个方法
  19520. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  19521. if (!string.IsNullOrEmpty(errMsg))
  19522. {
  19523. logoName = "";
  19524. logoCode = "";
  19525. groutingdate = "";
  19526. return errMsg;
  19527. }
  19528. #endregion
  19529. //第二步,回收站中数据回到在产中,设置干补标识。
  19530. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  19531. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  19532. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  19533. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  19534. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  19535. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  19536. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  19537. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  19538. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  19539. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  19540. KILNID, KILNCODE, KILNNAME, KILNCARID,
  19541. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  19542. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  19543. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  19544. :PROCEDUREMODEL, :MODELTYPE, null,
  19545. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  19546. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  19547. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  19548. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  19549. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  19550. CREATEUSERID, UPDATETIME, :UpdateUserID,
  19551. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, 1,
  19552. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  19553. KILNID, KILNCODE, KILNNAME, KILNCARID,
  19554. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,:ProcedureID ,--FlowProcedureID
  19555. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  19556. from TP_PM_InProductionTrash where barcode=:barcode ";
  19557. OracleParameter[] InProductparas = new OracleParameter[]{
  19558. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  19559. ////new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  19560. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  19561. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  19562. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  19563. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  19564. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  19565. };
  19566. //第三步,删除回收站中的条码
  19567. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  19568. OracleParameter[] TrashProductparas = new OracleParameter[]{
  19569. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  19570. };
  19571. //第四步,更新注浆表干补标识
  19572. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  19573. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  19574. // where barcode=:barcode)";
  19575. ////// string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  19576. ////// where barcode=:barcode";
  19577. ////// OracleParameter[] GroutingProductparas = new OracleParameter[]{
  19578. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  19579. ////// };
  19580. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  19581. // where barcode=:barcode ";
  19582. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  19583. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  19584. // };
  19585. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  19586. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  19587. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  19588. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  19589. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  19590. // 失败
  19591. if (deleteRow == Constant.INT_IS_ZERO)
  19592. {
  19593. logoName = "";
  19594. logoCode = "";
  19595. groutingdate = "";
  19596. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  19597. }
  19598. #endregion
  19599. //#region 第五步 添加生产者数据
  19600. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  19601. //if (!string.IsNullOrEmpty(errMsg))
  19602. //{
  19603. // return errMsg;
  19604. //}
  19605. //#endregion
  19606. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  19607. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  19608. OracleParameter[] Paras = new OracleParameter[] {
  19609. new OracleParameter(":barcode",OracleDbType.Varchar2,
  19610. barcode,ParameterDirection.Input)
  19611. };
  19612. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  19613. if (ds.Tables[0].Rows.Count == 0)
  19614. {
  19615. // 2 生产数据恢复到在产生产数据
  19616. sql = @"insert into tp_pm_productiondatain
  19617. (
  19618. ProductionDataID,
  19619. BarCode,
  19620. CentralizedBatchNo,
  19621. ProductionLineID,
  19622. ProductionLineCode,
  19623. ProductionLineName,
  19624. ProcedureID,
  19625. ProcedureCode,
  19626. ProcedureName,
  19627. ProcedureModel,
  19628. ModelType,
  19629. PieceType,
  19630. IsReworked,
  19631. NodeType,
  19632. IsPublicBody,
  19633. IsReFire,
  19634. GoodsLevelID,
  19635. GoodsLevelTypeID,
  19636. SpecialRepairFlag,
  19637. OrganizationID,
  19638. GoodsID,
  19639. GoodsCode,
  19640. GoodsName,
  19641. UserID,
  19642. UserCode,
  19643. UserName,
  19644. ClassesSettingID,
  19645. KilnID,
  19646. KilnCode,
  19647. KilnName,
  19648. KilnCarID,
  19649. KilnCarCode,
  19650. KilnCarName,
  19651. KilnCarBatchNo,
  19652. KilnCarPosition,
  19653. ReworkProcedureID,
  19654. ReworkProcedureCode,
  19655. ReworkProcedureName,
  19656. GroutingDailyID,
  19657. GroutingDailyDetailID,
  19658. GroutingLineID,
  19659. GroutingLineCode,
  19660. GroutingLineName,
  19661. GMouldTypeID,
  19662. CanManyTimes,
  19663. GroutingLineDetailID,
  19664. GroutingDate,
  19665. GroutingMouldCode,
  19666. MouldCode,
  19667. GroutingUserID,
  19668. GroutingUserCode,
  19669. GroutingNum,
  19670. Remarks,
  19671. AccountDate,
  19672. SettlementFlag,
  19673. AccountID,
  19674. ValueFlag,
  19675. CreateTime,
  19676. CreateUserID,
  19677. UpdateTime,
  19678. UpdateUserID,
  19679. OPTimeStamp,
  19680. TriggerFlag,
  19681. logoid,
  19682. BackOutTime,BackOutUserID,BackOutUserCode
  19683. )
  19684. select
  19685. ProductionDataID,
  19686. BarCode,
  19687. CentralizedBatchNo,
  19688. ProductionLineID,
  19689. ProductionLineCode,
  19690. ProductionLineName,
  19691. ProcedureID,
  19692. ProcedureCode,
  19693. ProcedureName,
  19694. ProcedureModel,
  19695. ModelType,
  19696. PieceType,
  19697. IsReworked,
  19698. NodeType,
  19699. IsPublicBody,
  19700. IsReFire,
  19701. GoodsLevelID,
  19702. GoodsLevelTypeID,
  19703. SpecialRepairFlag,
  19704. OrganizationID,
  19705. GoodsID,
  19706. GoodsCode,
  19707. GoodsName,
  19708. UserID,
  19709. UserCode,
  19710. UserName,
  19711. ClassesSettingID,
  19712. KilnID,
  19713. KilnCode,
  19714. KilnName,
  19715. KilnCarID,
  19716. KilnCarCode,
  19717. KilnCarName,
  19718. KilnCarBatchNo,
  19719. KilnCarPosition,
  19720. ReworkProcedureID,
  19721. ReworkProcedureCode,
  19722. ReworkProcedureName,
  19723. GroutingDailyID,
  19724. GroutingDailyDetailID,
  19725. GroutingLineID,
  19726. GroutingLineCode,
  19727. GroutingLineName,
  19728. GMouldTypeID,
  19729. CanManyTimes,
  19730. GroutingLineDetailID,
  19731. GroutingDate,
  19732. GroutingMouldCode,
  19733. MouldCode,
  19734. GroutingUserID,
  19735. GroutingUserCode,
  19736. GroutingNum,
  19737. Remarks,
  19738. AccountDate,
  19739. SettlementFlag,
  19740. AccountID,
  19741. ValueFlag,
  19742. CreateTime,
  19743. CreateUserID,
  19744. UpdateTime,
  19745. UpdateUserID,
  19746. OPTimeStamp,
  19747. 1,
  19748. logoid,
  19749. BackOutTime,BackOutUserID,BackOutUserCode
  19750. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  19751. ";
  19752. oracleTrConn.ExecuteNonQuery(sql, Paras);
  19753. }
  19754. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  19755. #endregion 数据处理
  19756. }
  19757. logoName = logoName_Temp;
  19758. logoCode = logoCode_Temp;
  19759. groutingdate = groutingdate_Temp;
  19760. return errMsg;
  19761. }
  19762. catch (Exception ex)
  19763. {
  19764. throw ex;
  19765. }
  19766. }
  19767. /// <summary>
  19768. /// 校验回收条码有效
  19769. /// </summary>
  19770. /// <param name="oracleTrConn">连接对象</param>
  19771. /// <param name="procedureID">工序ID</param>
  19772. /// <param name="barcode">条码</param>
  19773. /// <param name="goodsID">返回的产品ID</param>
  19774. /// <param name="goodsCode">返回的产品Code</param>
  19775. /// <param name="goodsName">返回的产品名称</param>
  19776. /// <param name="groutingUserID">返回的注浆者ID</param>
  19777. /// <returns>string</returns>
  19778. /// <remarks>
  19779. /// 王鑫 2017.7.20 新建
  19780. /// </remarks>
  19781. private static string CheckRecyclingFlagBarcode(IDBTransaction oracleTrConn,
  19782. int procedureID,
  19783. string barcode,
  19784. out int goodsID,
  19785. out string goodsCode,
  19786. out string goodsName,
  19787. out string groutingUserCode,
  19788. SUserInfo sUserInfo
  19789. )
  19790. {
  19791. try
  19792. {
  19793. //OracleParameter[] paras = new OracleParameter[]{
  19794. // new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  19795. // new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  19796. // new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  19797. // new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  19798. // new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  19799. // new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  19800. // new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  19801. //};
  19802. //oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  19803. //if (!"null".Equals(paras[3].Value + ""))
  19804. //{
  19805. // goodsID = Convert.ToInt32(paras[3].Value + "");
  19806. //}
  19807. //else
  19808. //{
  19809. // goodsID = 0;
  19810. //}
  19811. //goodsCode = paras[4].Value + "";
  19812. //goodsName = paras[5].Value + "";
  19813. //if (!"null".Equals(paras[6].Value + ""))
  19814. //{
  19815. // groutingUserCode = paras[6].Value + "";
  19816. //}
  19817. //else
  19818. //{
  19819. // groutingUserCode = null;
  19820. //}
  19821. //if ("null".Equals(paras[2].Value + ""))
  19822. //{
  19823. // return null;
  19824. //}
  19825. //return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  19826. string errorMessage = string.Empty;
  19827. goodsID = 0; goodsCode = string.Empty; goodsName = string.Empty; groutingUserCode = string.Empty;
  19828. string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting
  19829. where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')";
  19830. OracleParameter[] paras = new OracleParameter[]{
  19831. new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  19832. };
  19833. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  19834. #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收)
  19835. int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0;
  19836. if (ds != null && ds.Tables[0].Rows.Count > 0)
  19837. {
  19838. foreach (DataRow r in ds.Tables[0].Rows)
  19839. {
  19840. if (r["settingcode"].ToString() == "S_PM_017")
  19841. {
  19842. S_PM_017_Value = Convert.ToInt32(r["settingvalue"]);
  19843. }
  19844. else if (r["settingcode"].ToString() == "S_PM_018")
  19845. {
  19846. S_PM_018_Value = Convert.ToInt32(r["settingvalue"]);
  19847. }
  19848. else if (r["settingcode"].ToString() == "S_PM_019")
  19849. {
  19850. S_PM_019_Value = Convert.ToInt32(r["settingvalue"]);
  19851. }
  19852. else if (r["settingcode"].ToString() == "S_PM_020")
  19853. {
  19854. S_PM_020_Value = Convert.ToInt32(r["settingvalue"]);
  19855. }
  19856. }
  19857. }
  19858. #endregion
  19859. #region 第1步 查当前工序在系统是否存在
  19860. sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1";
  19861. paras = new OracleParameter[]{
  19862. new OracleParameter(":procedureid",procedureID),
  19863. };
  19864. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  19865. if (ds == null || ds.Tables[0].Rows.Count == 0)
  19866. {
  19867. errorMessage = "当前工序在系统中不存在";
  19868. return errorMessage;
  19869. }
  19870. #endregion
  19871. #region 第2步 查产品是否有效
  19872. sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag
  19873. from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 ";
  19874. paras = new OracleParameter[]{
  19875. new OracleParameter(":barCode",barcode),
  19876. };
  19877. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  19878. if (ds == null || ds.Tables[0].Rows.Count == 0)
  19879. {
  19880. // 是否被替换
  19881. string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode";
  19882. OracleParameter[] paras2 = new OracleParameter[]{
  19883. new OracleParameter(":barCode",barcode) };
  19884. DataSet ds2 = oracleTrConn.GetSqlResultToDs(sql, paras2);
  19885. if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0)
  19886. {
  19887. // 无效条件
  19888. errorMessage = "无效条码[" + barcode + "]";
  19889. }
  19890. else
  19891. {
  19892. errorMessage = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换";
  19893. }
  19894. }
  19895. else
  19896. {
  19897. if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1)
  19898. {
  19899. errorMessage = "条码[" + barcode + "]未交坯,不能回收";
  19900. }
  19901. else
  19902. {
  19903. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  19904. goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString();
  19905. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  19906. groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString();
  19907. }
  19908. }
  19909. if (!string.IsNullOrEmpty(errorMessage))
  19910. {
  19911. return errorMessage;
  19912. }
  19913. #endregion
  19914. #region 第3步 查产品是否在当前工序配置
  19915. sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  19916. paras = new OracleParameter[]{
  19917. new OracleParameter(":GoodsID",goodsID),
  19918. new OracleParameter(":ProcedureID",procedureID),
  19919. };
  19920. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  19921. if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1)
  19922. {
  19923. errorMessage =
  19924. @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置";
  19925. }
  19926. if (!string.IsNullOrEmpty(errorMessage))
  19927. {
  19928. return errorMessage;
  19929. }
  19930. #endregion
  19931. #region 第4步,校验在产产品不能回收
  19932. string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode";
  19933. OracleParameter[] parasNew = new OracleParameter[]{
  19934. new OracleParameter(":barcode",barcode) };
  19935. DataSet dsNew = oracleTrConn.GetSqlResultToDs(sqlString2, parasNew);
  19936. if (dsNew != null && dsNew.Tables[0].Rows.Count > 0)
  19937. {
  19938. if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1)
  19939. {
  19940. errorMessage = "报损待审产品不能回收";
  19941. }
  19942. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1)
  19943. {
  19944. errorMessage = "半检返工中不能回收";
  19945. }
  19946. else
  19947. {
  19948. errorMessage = "在产产品不能回收";
  19949. }
  19950. }
  19951. if (!string.IsNullOrEmpty(errorMessage))
  19952. {
  19953. return errorMessage;
  19954. }
  19955. #endregion
  19956. #region 第4步,校验报损表数据是否可以回收
  19957. sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode
  19958. and ValueFlag=1 and CreateTime=
  19959. (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode
  19960. and ValueFlag=1 )";
  19961. paras = new OracleParameter[]{
  19962. new OracleParameter(":barcode",barcode),
  19963. };
  19964. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  19965. if (ds == null || ds.Tables[0].Rows.Count == 0)
  19966. {
  19967. errorMessage = "不存在回收数据,不能回收";
  19968. }
  19969. else
  19970. {
  19971. if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 &&
  19972. Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 &&
  19973. Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0)
  19974. {
  19975. // 可回收
  19976. string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode";
  19977. OracleParameter[] parasNewt = new OracleParameter[]{
  19978. new OracleParameter(":barcode",barcode) };
  19979. DataSet dsNewt = oracleTrConn.GetSqlResultToDs(sqlString3, parasNewt);
  19980. if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0)
  19981. {
  19982. errorMessage = "报损数据被清除,不能回收";
  19983. }
  19984. }
  19985. else
  19986. {
  19987. errorMessage = "不存在回收数据,不能回收";
  19988. }
  19989. if (!string.IsNullOrEmpty(errorMessage))
  19990. {
  19991. if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0)
  19992. {
  19993. // 损坯
  19994. if (S_PM_017_Value == 0)
  19995. {
  19996. errorMessage = "系统参数产品回收-报损未启用";
  19997. }
  19998. }
  19999. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1)
  20000. {
  20001. // 成检
  20002. if (S_PM_020_Value == 0)
  20003. {
  20004. errorMessage = "系统参数产品回收-次品未启用";
  20005. }
  20006. }
  20007. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2)
  20008. {
  20009. // 半检
  20010. if (S_PM_018_Value == 0)
  20011. {
  20012. errorMessage = "系统参数产品回收-半检不合格未启用";
  20013. }
  20014. }
  20015. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3)
  20016. {
  20017. // 复检
  20018. if (S_PM_019_Value == 0)
  20019. {
  20020. errorMessage = "系统参数产品回收-复检不合格未启用";
  20021. }
  20022. }
  20023. }
  20024. }
  20025. #endregion
  20026. return errorMessage;
  20027. }
  20028. catch (Exception ex)
  20029. {
  20030. throw ex;
  20031. }
  20032. }
  20033. }
  20034. }