FinishedCheckLogic.cs 1.3 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987
  1. 
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.IO;
  7. using System.Net;
  8. using System.Text;
  9. using Dongke.IBOSS.PRD.Basics.BaseResources;
  10. using Dongke.IBOSS.PRD.Basics.DataAccess;
  11. using Dongke.IBOSS.PRD.Basics.Library;
  12. using Dongke.IBOSS.PRD.Service.CMNModuleService;
  13. using Dongke.IBOSS.PRD.Service.DataModels;
  14. using Dongke.IBOSS.PRD.Service.SAPHegiiDataService;
  15. using Dongke.IBOSS.PRD.Service.WMSDataService;
  16. using Dongke.IBOSS.PRD.WCF.DataModels;
  17. using Dongke.IBOSS.PRD.WCF.DataModels.PMModule;
  18. using Newtonsoft.Json;
  19. using Newtonsoft.Json.Linq;
  20. using Oracle.ManagedDataAccess.Client;
  21. using static Dongke.IBOSS.PRD.Service.SAPHegiiDataService.SAPDataLogic;
  22. namespace Dongke.IBOSS.PRD.Service.PCModuleService
  23. {
  24. public static class FinishedCheckLogic
  25. {
  26. #region 生产管理
  27. #region 计件
  28. /// <summary>
  29. /// 添加生产计件
  30. /// </summary>
  31. /// <param name="procedureID">工序ID</param>
  32. /// <param name="barcodeTable">条码信息</param>
  33. /// <param name="sUserInfo">用户基本信息</param>
  34. /// <returns>DataTable null:添加成功 不为空:错误消息</returns>
  35. /// <remarks>
  36. /// 陈冰 2014.09.18 新建
  37. /// </remarks>
  38. public static DataTable AddWorkPiece(int procedureID, DataTable barcodeTable, SUserInfo sUserInfo, out ProcedureEntity procedureInfo)
  39. {
  40. procedureInfo = null;
  41. if (barcodeTable == null || barcodeTable.Rows.Count == 0)
  42. {
  43. return null;
  44. }
  45. // 实例返回的Talbe
  46. DataTable dtBarCode = CreateBarCodeResultTable();
  47. DataRow dr = dtBarCode.NewRow();
  48. string errMsg = "";
  49. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  50. oracleTrConn.IgnoreCase = false;
  51. try
  52. {
  53. DataSet dsReturnSinglePoint = null;
  54. oracleTrConn.Connect();
  55. int goodsID = Constant.INT_IS_ZERO;
  56. string goodsCode = null;
  57. string goodsName = null;
  58. string groutingUserCode = string.Empty;
  59. string logoCode = string.Empty;
  60. string logoName = string.Empty;
  61. string groutingdate = string.Empty;
  62. #region 查询工序信息
  63. ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  64. procedureInfo = procedure;
  65. #endregion
  66. if (barcodeTable.Columns.Contains("IsPDA"))
  67. {
  68. if (procedure.ModelType != (int)Constant.ProcedureModelType.DeliverMud)
  69. {
  70. if (barcodeTable.Columns.Contains("IsPublicBody"))
  71. {
  72. barcodeTable.Columns.Remove("IsPublicBody");
  73. barcodeTable.Columns.Remove("IsPDA");
  74. }
  75. }
  76. }
  77. #region 防止多次重复提交,导致数据重复
  78. // 通过锁定表tp_pm_usedbarcode中的条码,防止多次重复提交,导致数据重复
  79. // TODO PDA还没有修改,暂时注释。PDA(集中采集画面)点击保存时如果不成功提示消息后,清除了当前画面中的数据。应该不清空数据,可以继续保存。
  80. //string barcodes = null;
  81. //foreach (DataRow item in barcodeTable.Rows)
  82. //{
  83. // if (barcodes != null)
  84. // {
  85. // barcodes += ",";
  86. // }
  87. // barcodes += item["Barcode"].ToString();
  88. //}
  89. //if (barcodes != null)
  90. //{
  91. // string sql = "select uc.barcode from tp_pm_usedbarcode uc where uc.barcode in (" + barcodes + ") for update nowait";
  92. // try
  93. // {
  94. // oracleTrConn.GetSqlResultToDt(sql);
  95. // }
  96. // catch (Exception ex)
  97. // {
  98. // // 判断异常类型
  99. // if (ex.Message.IndexOf("ORA-00054") > -1)
  100. // {
  101. // dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码正在被处理中,请稍后再操作。";
  102. // dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = "0";
  103. // dtBarCode.Rows.Add(dr);
  104. // return dtBarCode;
  105. // }
  106. // throw ex;
  107. // }
  108. //}
  109. #endregion
  110. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  111. //xuwei fix 2019-09-26 按原条理判定首节点得到正确的返回结果
  112. // 2019-1016
  113. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  114. {
  115. int nodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, barcodeTable.Rows[0]["Barcode"].ToString());
  116. if (nodeBegin == 1)
  117. {
  118. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  119. }
  120. else if (nodeBegin == 0)
  121. {
  122. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  123. }
  124. }
  125. //if (nodeBegin == -1) errMsg = "条码不正确,请检查!";
  126. #region 标准计件和坯库
  127. if (procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  128. || procedure.ModelType == (int)Constant.ProcedureModelType.AdobeStock
  129. //xuwei add 2020-06-11 冷补更改窑车批车
  130. || procedure.ModelType == (int)Constant.ProcedureModelType.ColdPatch)
  131. {
  132. if (procedure.CollectType == 1)
  133. {
  134. #region 集中采集
  135. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  136. out goodsID, out goodsCode, out goodsName, out groutingUserCode);
  137. #endregion
  138. }
  139. else
  140. {
  141. #region 单点采集
  142. int? GroutingDailyDetailID = null;
  143. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  144. {
  145. dsReturnSinglePoint = CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  146. }
  147. else
  148. {
  149. dsReturnSinglePoint = CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  150. }
  151. if (dsReturnSinglePoint != null)
  152. {
  153. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  154. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  155. {
  156. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  157. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  158. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  159. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  160. barcodeTable.Rows[0]["barcode"] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  161. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  162. goodsID, goodsCode, goodsName, groutingUserCode, null);
  163. }
  164. }
  165. #endregion
  166. }
  167. }
  168. #endregion
  169. #region 交坯
  170. else if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)
  171. {
  172. if (procedure.CollectType == 1)
  173. {
  174. #region 集中采集
  175. //xuwei fix begin 2019-09-17
  176. //加入最后一个参数 true,识别为交坏
  177. errMsg = AddNormalWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  178. out goodsID, out goodsCode, out goodsName, out groutingUserCode, true);
  179. //xuwei end
  180. #endregion
  181. }
  182. else
  183. {
  184. #region 单点采集
  185. int? GroutingDailyDetailID = null;
  186. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  187. {
  188. dsReturnSinglePoint = CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  189. }
  190. else
  191. {
  192. dsReturnSinglePoint = CheckBarcodeSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo);
  193. }
  194. //dsReturnSinglePoint = PMModuleLogic.CheckBarcodeDeliverMudSinglePoint(procedureID, barcodeTable.Rows[0]["barcode"].ToString(), sUserInfo, ref GroutingDailyDetailID);
  195. if (dsReturnSinglePoint != null)
  196. {
  197. //if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  198. //{
  199. // dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  200. //}
  201. //else
  202. //{
  203. if (dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()].ToString() == ""
  204. && dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()].ToString() == "0")
  205. {
  206. if (procedure.DeliverType == 0) //手动模式
  207. {
  208. if (barcodeTable.Rows[0]["UserCode"].ToString() != dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString())
  209. {
  210. if (barcodeTable.Rows[0]["IsPublicBody"].ToString() != "1")
  211. {
  212. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "成型工号与交坯工号不一致,不允许交坯";
  213. }
  214. else
  215. {
  216. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  217. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  218. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  219. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  220. //xuwei fix begin 2019-09-17
  221. //加入最后一个参数 true,识别为交坏
  222. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  223. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  224. if (!string.IsNullOrEmpty(errMsg))
  225. {
  226. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  227. }
  228. // wangx 2016-10-10 是否设置过期未交坯
  229. else
  230. {
  231. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  232. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  233. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  234. if (sqlSettingValue != "0")
  235. {
  236. ServiceResultEntity resultEntity = BarcodeAllowCancel(
  237. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  238. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  239. if (Convert.ToInt32(resultEntity.Result) < 0)
  240. {
  241. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  242. errMsg = resultEntity.Message;
  243. }
  244. }
  245. // wangx end
  246. }
  247. }
  248. }
  249. else
  250. {
  251. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  252. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  253. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  254. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  255. //xuwei fix begin 2019-09-17
  256. //加入最后一个参数 true,识别为交坏
  257. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  258. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  259. if (!string.IsNullOrEmpty(errMsg))
  260. {
  261. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  262. }
  263. // wangx 2016-10-10 是否设置过期未交坯
  264. else
  265. {
  266. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  267. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  268. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  269. if (sqlSettingValue != "0")
  270. {
  271. ServiceResultEntity resultEntity = BarcodeAllowCancel(
  272. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  273. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  274. if (Convert.ToInt32(resultEntity.Result) < 0)
  275. {
  276. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  277. errMsg = resultEntity.Message;
  278. }
  279. }
  280. // wangx end
  281. }
  282. }
  283. }
  284. else //2016-07-05
  285. {
  286. // 自动模式 .查出型工号,单点采集前台并没有传值,更新barcodeTable表对应的字段
  287. string sql = @"select tp_mst_user.userid,tp_mst_user.usercode,tp_mst_user.username from TP_PM_GroutingDailyDetail
  288. left join tp_mst_user
  289. on TP_PM_GroutingDailyDetail.userid=tp_mst_user.userid
  290. where TP_PM_GroutingDailyDetail.barcode='" + barcodeTable.Rows[0]["barcode"].ToString() + "'";
  291. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  292. if (ds != null && ds.Tables[0].Rows.Count > 0)
  293. {
  294. barcodeTable.Rows[0]["UserCode"] = ds.Tables[0].Rows[0]["UserCode"];
  295. barcodeTable.Rows[0]["UserID"] = ds.Tables[0].Rows[0]["UserID"];
  296. barcodeTable.Rows[0]["UserName"] = ds.Tables[0].Rows[0]["UserName"];
  297. }
  298. goodsID = Convert.ToInt32(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()].ToString());
  299. goodsCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()].ToString();
  300. goodsName = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()].ToString();
  301. groutingUserCode = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()].ToString();
  302. //xuwei fix begin 2019-09-17
  303. //加入最后一个参数 true,识别为交坏
  304. errMsg = AddNormalWorkPieceSinglePoint(oracleTrConn, procedure, barcodeTable, sUserInfo,
  305. goodsID, goodsCode, goodsName, groutingUserCode, GroutingDailyDetailID, true);
  306. if (!string.IsNullOrEmpty(errMsg))
  307. {
  308. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  309. }
  310. // wangx 2016-10-10 是否设置过期未交坯
  311. else
  312. {
  313. // string sqlNew = "select settingvalue from TP_MST_SystemSetting where settingcode='" + Constant.SettingType.S_PM_002.ToString() + "' and accountid=" + sUserInfo.AccountID;
  314. string sqlNew = "select deliverlimitCycle from TP_MST_Goods where goodsid=" + goodsID;
  315. string sqlSettingValue = oracleTrConn.GetSqlResultToStr(sqlNew);
  316. if (sqlSettingValue != "0")
  317. {
  318. ServiceResultEntity resultEntity = BarcodeAllowCancel(
  319. Convert.ToDateTime(dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()]),
  320. Convert.ToInt32(sqlSettingValue), Constant.SettingType.S_PM_002.ToString(), sUserInfo);
  321. if (Convert.ToInt32(resultEntity.Result) < 0)
  322. {
  323. dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = resultEntity.Message;
  324. errMsg = resultEntity.Message;
  325. }
  326. }
  327. // wangx end
  328. }
  329. //
  330. }
  331. //}
  332. }
  333. }
  334. #endregion
  335. }
  336. }
  337. #endregion
  338. #region 装窑车
  339. else if (procedure.ModelType == (int)Constant.ProcedureModelType.LoadCar)
  340. {
  341. errMsg = AddLoadKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  342. out goodsID, out goodsCode, out goodsName);
  343. }
  344. #endregion
  345. #region 窑车补件
  346. else if (procedure.ModelType == (int)Constant.ProcedureModelType.CarAdd)
  347. {
  348. errMsg = AddKilnCarSupplement(oracleTrConn, procedure, barcodeTable, sUserInfo,
  349. out goodsID, out goodsCode, out goodsName);
  350. }
  351. #endregion
  352. #region 入窑
  353. else if (procedure.ModelType == (int)Constant.ProcedureModelType.IntoKiln)
  354. {
  355. // PDA传入的窑车号。没有传入条码信息 需要转换
  356. /* modify by chenxy 2016-04-05 begin
  357. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  358. * 入窑时窑车上的产品需要重新获取。
  359. */
  360. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  361. // modify by chenxy 2016-04-05 end
  362. {
  363. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  364. }
  365. errMsg = AddIntoKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  366. out goodsID, out goodsCode, out goodsName);
  367. }
  368. #endregion
  369. #region 出窑
  370. else if (procedure.ModelType == (int)Constant.ProcedureModelType.OutKiln)
  371. {
  372. // PDA传入的窑车号。没有传入条码信息 需要转换
  373. /* modify by chenxy 2016-04-05 begin
  374. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  375. * 入窑时窑车上的产品需要重新获取。
  376. */
  377. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  378. // modify by chenxy 2016-04-05 end
  379. {
  380. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  381. }
  382. errMsg = AddOutKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  383. out goodsID, out goodsCode, out goodsName);
  384. }
  385. #endregion
  386. #region 卸窑车
  387. else if (procedure.ModelType == (int)Constant.ProcedureModelType.UnloadCar)
  388. {
  389. // PDA传入的窑车号。没有传入条码信息 需要转换
  390. /* modify by chenxy 2016-04-05 begin
  391. * 入窑画面显示条码后,登窑画面再做撤销登车,入窑再保存时,撤销的产品也到了入窑工序。
  392. * 入窑时窑车上的产品需要重新获取。
  393. */
  394. //if (barcodeTable.Columns.Contains("IsPDAFlag"))
  395. // modify by chenxy 2016-04-05 end
  396. {
  397. barcodeTable = CarNoInfoConvertToTable(oracleTrConn, barcodeTable, sUserInfo);
  398. }
  399. errMsg = AddUnloadingKilnCar(oracleTrConn, procedure, barcodeTable, sUserInfo,
  400. out goodsID, out goodsCode, out goodsName);
  401. }
  402. #endregion
  403. #region 干补
  404. else if (procedure.ModelType == (int)Constant.ProcedureModelType.SpecialRepair)
  405. {
  406. errMsg = AddDryRepairWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  407. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  408. }
  409. #endregion
  410. #region 回收
  411. else if (procedure.ModelType == (int)Constant.ProcedureModelType.Recovery)
  412. {
  413. errMsg = AddRecydingFlagWorkPiece(oracleTrConn, procedure, barcodeTable, sUserInfo,
  414. out goodsID, out goodsCode, out goodsName, out groutingUserCode, out logoCode, out logoName, out groutingdate);
  415. }
  416. #endregion
  417. #region 构造返回的DataTable
  418. if (
  419. (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud
  420. || procedure.ModelType == (int)Constant.ProcedureModelType.Normal
  421. || procedure.ModelType == (int)Constant.ProcedureModelType.ColdPatch) && procedure.CollectType == 2
  422. )
  423. {
  424. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()];
  425. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsID.ToString()];
  426. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsCode.ToString()];
  427. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_goodsName.ToString()];
  428. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()];
  429. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_missFlag.ToString()];
  430. //新添加的
  431. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  432. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  433. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  434. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  435. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  436. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  437. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  438. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  439. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  440. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  441. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_barcode.ToString()];
  442. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()];
  443. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()];
  444. }
  445. else
  446. {
  447. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = (errMsg == null ? "" : errMsg);
  448. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID;
  449. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode;
  450. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName;
  451. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode;
  452. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = logoCode;
  453. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = logoName;
  454. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = groutingdate;
  455. //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingNum.ToString()];
  456. //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_mouldCode.ToString()];
  457. //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()];
  458. //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()];
  459. //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_groutingdate.ToString()];
  460. //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()];
  461. //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_isReFire.ToString()];
  462. //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoID.ToString()];
  463. //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoCode.ToString()];
  464. //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = dsReturnSinglePoint.Tables[0].Rows[0][Constant.BarCodeResultTableColumns.out_logoName.ToString()];
  465. }
  466. dtBarCode.Rows.Add(dr);
  467. #endregion
  468. // 工序保存有错误时,不进行后续PLC操作 add by chenxy 2020-09-18
  469. if (string.IsNullOrEmpty(errMsg))
  470. {
  471. errMsg = dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] + "";
  472. }
  473. // 工序保存有错误时,不进行后续PLC操作
  474. if (!string.IsNullOrEmpty(errMsg))
  475. {
  476. // 如果是3#刮蹬,调用PLC接口 2020-09-07 fubin
  477. if (procedure.ProcedureID == 99)
  478. {
  479. string sql =
  480. "select t.flowprocedureid from tp_pm_inproduction t where t.barcode ='" + barcodeTable.Rows[0]["Barcode"] + "'";
  481. object flowprocedureid = oracleTrConn.GetSqlResultToObj(sql);
  482. if (flowprocedureid + "" == "99")
  483. {
  484. Hashtable plcPara = new Hashtable();
  485. plcPara.Add("finishflag", 1);
  486. string errMsg1 = PLCModuleLogic.PlcWrite2(3201, plcPara).Message;
  487. if (string.IsNullOrEmpty(errMsg1))
  488. {
  489. errMsg1 = System.Environment.NewLine + "【PLC】线体可以放行";
  490. }
  491. else
  492. {
  493. errMsg1 = System.Environment.NewLine + "【PLC】" + errMsg1;
  494. }
  495. dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg + errMsg1;
  496. }
  497. }
  498. // errMsg 有值,dtBarCode中无值时,要写入dtBarCode中,将错误信息返回给前台
  499. //string mm = dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] + "";
  500. //if (mm != errMsg)
  501. {
  502. dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  503. }
  504. return dtBarCode;
  505. }
  506. // 如果是3#包装,更新三车间包装标识
  507. if (procedure.ProcedureID == 107)
  508. {
  509. string sql = string.Empty;
  510. int r = 0;
  511. foreach (DataRow row in barcodeTable.Rows)
  512. {
  513. sql =
  514. "UPDATE tp_pm_groutingdailydetail gdd\n" +
  515. " SET gdd.packingby3 = '1'\n" +
  516. " WHERE gdd.barcode = '" + row["Barcode"] + "'";
  517. r += oracleTrConn.ExecuteNonQuery(sql);
  518. }
  519. }
  520. // 如果是3#上水,调用PLC接口 2020-09-03 fubin
  521. if (procedure.ProcedureID == 94)
  522. {
  523. /* 暂时不对接,上水机械臂暂停 2020-10-24 chenxy
  524. string sql =
  525. "SELECT g.seatcovercode\n" +
  526. " FROM tp_pm_groutingdailydetail p\n" +
  527. " LEFT JOIN tp_mst_goods g\n" +
  528. " ON g.goodsid = p.goodsid\n" +
  529. " WHERE p.valueflag = '1'\n" +
  530. " AND p.barcode = '" + barcodeTable.Rows[0]["Barcode"] + "'";
  531. object goodsModel = oracleTrConn.GetSqlResultToObj(sql);
  532. Hashtable plcPara = new Hashtable();
  533. if (goodsModel.ToInt32() != 0)
  534. {
  535. plcPara.Add("goodsmodel", goodsModel);
  536. plcPara.Add("finishflag", 1);
  537. plcPara.Add("errorflag", 0);
  538. }
  539. else
  540. {
  541. plcPara.Add("goodsmodel", 0);
  542. plcPara.Add("finishflag", 1);
  543. plcPara.Add("errorflag", 1);
  544. }
  545. errMsg = PLCModuleLogic.PlcWrite2(3320, plcPara, sUserInfo.UserCode).Message;
  546. */
  547. }
  548. // 如果是3#刮蹬,调用PLC接口 2020-09-07 fubin
  549. if (procedure.ProcedureID == 99)
  550. {
  551. Hashtable plcPara = new Hashtable();
  552. plcPara.Add("finishflag", 1);
  553. //xuwei modify 2021-12-24 按打卡工号识别线号
  554. errMsg = PLCModuleLogic.PlcWrite2(3201, plcPara, sUserInfo.UserCode).Message;
  555. }
  556. // 没有错误 提交事务
  557. if (string.IsNullOrEmpty(errMsg))
  558. {
  559. oracleTrConn.Commit();
  560. }
  561. else
  562. {
  563. dtBarCode.Rows[0][Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errMsg;
  564. }
  565. }
  566. catch (Exception ex)
  567. {
  568. oracleTrConn.Rollback();
  569. throw ex;
  570. }
  571. finally
  572. {
  573. // 释放资源
  574. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  575. {
  576. oracleTrConn.Disconnect();
  577. }
  578. }
  579. return dtBarCode;
  580. }
  581. #region 是否公坯
  582. /// <summary>
  583. /// 是否公坯
  584. /// </summary>
  585. /// <param name="barcode">产品条码</param>
  586. /// <returns>int</returns>
  587. public static int IsPubilcByBarCode(IDBTransaction oracleTrConn, string barcode)
  588. {
  589. int isPubilcBody = 0;
  590. try
  591. {
  592. string sqlString = @"
  593. select
  594. ispublicbody
  595. from tp_pm_inproduction where barcode=:barcode
  596. union
  597. select
  598. ispublicbody
  599. from TP_PM_InProductionTrash where barcode=:barcode
  600. ";
  601. OracleParameter[] paras = new OracleParameter[]{
  602. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  603. };
  604. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  605. if (ds != null && ds.Tables[0].Rows.Count > 0)
  606. {
  607. isPubilcBody = Convert.ToInt32(ds.Tables[0].Rows[0]["ispublicbody"]);
  608. }
  609. return isPubilcBody;
  610. }
  611. catch (Exception ex)
  612. {
  613. throw ex;
  614. }
  615. }
  616. #endregion
  617. /// <summary>
  618. /// 标准计件
  619. /// </summary>
  620. /// <param name="oracleTrConn">数据连接对象</param>
  621. /// <param name="procedure">工序对象</param>
  622. /// <param name="barcodeTable">条码信息</param>
  623. /// <param name="sUserInfo">用户基本信息</param>
  624. /// <param name="goodsID">返回的产品ID</param>
  625. /// <param name="goodsCode">返回的产品Code</param>
  626. /// <param name="goodsName">返回的产品名称</param>
  627. /// <param name="groutingUserID">返回的注浆者ID</param>
  628. /// <returns>string</returns>
  629. /// <remarks>
  630. /// 陈冰 2014.09.18 新建
  631. /// </remarks>
  632. private static string AddNormalWorkPiece(IDBTransaction oracleTrConn,
  633. ProcedureEntity procedure,
  634. DataTable barcodeTable,
  635. SUserInfo sUserInfo,
  636. out int goodsID,
  637. out string goodsCode,
  638. out string goodsName,
  639. out string groutingUserCode,
  640. bool isSendBody = false
  641. )
  642. {
  643. try
  644. {
  645. goodsID = Constant.INT_IS_ZERO;
  646. goodsCode = null;
  647. goodsName = null;
  648. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  649. // 获得账务日期
  650. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  651. string errMsg = string.Empty;
  652. // 本批采集的批次号
  653. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  654. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  655. // 条码信息
  656. foreach (DataRow barcodeRow in barcodeTable.Rows)
  657. {
  658. // 条码
  659. string barcode = barcodeRow["Barcode"].ToString();
  660. if (string.IsNullOrEmpty(barcode))
  661. {
  662. throw new Exception("传入的条码号为空");
  663. }
  664. // 生产工号
  665. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  666. // 生产工号
  667. string workUserCode = barcodeRow["UserCode"].ToString();
  668. int? GroutingDailyDetailID = null;//注浆明细ID
  669. if (procedure.CollectType == 1)
  670. {
  671. #region 集中采集 校验条码
  672. // ccc todo
  673. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  674. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  675. {
  676. #region 校验条码有效性
  677. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  678. if (!string.IsNullOrEmpty(errMsg))
  679. {
  680. return errMsg;
  681. }
  682. #endregion
  683. }
  684. else
  685. {
  686. #region 校验条码有效性
  687. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  688. if (!string.IsNullOrEmpty(errMsg))
  689. {
  690. return errMsg;
  691. }
  692. #endregion
  693. }
  694. #endregion
  695. }
  696. else
  697. {
  698. #region 单点采集 获取注浆日报明细
  699. string sqlGroutingInfo = "";
  700. sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  701. tp_pm_groutingdailydetail.goodscode,
  702. tp_pm_groutingdailydetail.goodsname,
  703. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  704. tp_pm_groutingdailydetail.GroutingDailyDetailID
  705. from tp_pm_groutingdailydetail where barcode = :barcode";
  706. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  707. //(select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)";
  708. OracleParameter[] ReFireparas = new OracleParameter[] {
  709. new OracleParameter(":barcode",barcode),
  710. };
  711. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  712. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  713. {
  714. GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  715. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  716. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  717. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  718. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  719. }
  720. #endregion
  721. }
  722. int? ClassesSettingID = null;//班次配置ID
  723. #region 添加生产者数据
  724. //生产数据ID
  725. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  726. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  727. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  728. {
  729. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  730. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  731. {
  732. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  733. }
  734. else
  735. {
  736. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  737. }
  738. }
  739. else
  740. {
  741. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  742. }
  743. if (!string.IsNullOrEmpty(errMsg))
  744. {
  745. return errMsg;
  746. }
  747. #endregion
  748. //xuwei fix 2019-09-23 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  749. //xuwei fix 2019-09-26 使用通用方法判定
  750. //if (IsNodeBegin<IDBTransaction>(oracleTrConn, barcode) == 1)
  751. // procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  752. #region 添加生产数据
  753. ProductionDataEntity productionData = new ProductionDataEntity();
  754. #region 属性赋值
  755. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  756. productionData.ClassesSettingID = ClassesSettingID;
  757. productionData.ProductionDataID = productionDataID;
  758. productionData.Barcode = barcode;
  759. productionData.CentralizedBatchNo = centralizedBatchNo;
  760. productionData.ProductionLineID = procedure.ProductionLineID;
  761. productionData.ProductionLineCode = procedure.ProductionlineCode;
  762. productionData.ProductionLineName = procedure.ProductionlineName;
  763. productionData.CompleteProcedureID = procedure.ProcedureID;
  764. productionData.ProcedureCode = procedure.ProcedureCode;
  765. productionData.ProcedureName = procedure.ProcedureName;
  766. productionData.ProcedureModel = procedure.ProcedureModel;
  767. productionData.ModelType = procedure.ModelType;
  768. productionData.NodeType = procedure.NodeType;
  769. productionData.PieceType = procedure.PieceType;
  770. //xuwei add 2020-06-11 冷补更新窑车批车号
  771. if (procedure.ProcedureID == 135) productionData.KilnCarBatchNo = centralizedBatchNo;
  772. if (barcodeRow["LogoID"].ToString() != "")
  773. {
  774. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  775. }
  776. if (procedure.IsSpecialRework == 0)
  777. {
  778. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  779. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  780. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  781. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  782. {
  783. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  784. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  785. }
  786. ////// else
  787. ////// {
  788. ////// string sqlReFire = @"select
  789. ////// isrefire
  790. ////// from tp_pm_inproduction where barcode=:barcode
  791. ////// ";
  792. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  793. ////// new OracleParameter(":barcode",barcode),
  794. ////// };
  795. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  796. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  797. ////// {
  798. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  799. ////// {
  800. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  801. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  802. ////// //{
  803. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  804. ////// //}
  805. ////// }
  806. ////// }
  807. ////// }
  808. }
  809. else if (procedure.IsSpecialRework == 2)
  810. {
  811. productionData.IsLengBu = 1;
  812. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  813. }
  814. else
  815. {
  816. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  817. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  818. }
  819. productionData.ReworkProcedureID = null;
  820. #region 交坯判断
  821. // 交坯节点
  822. if (barcodeTable.Columns.Contains("IsPublicBody"))
  823. {
  824. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  825. }
  826. // 非交坯节点
  827. else
  828. {
  829. // 正常坯
  830. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  831. }
  832. #endregion
  833. productionData.OrganizationID = procedure.OrganizationID;
  834. productionData.GoodsID = goodsID;
  835. productionData.GoodsCode = goodsCode;
  836. productionData.GoodsName = goodsName;
  837. productionData.UserID = workUserID;
  838. productionData.UserCode = barcodeRow["UserCode"].ToString();
  839. productionData.UserName = barcodeRow["UserName"].ToString();
  840. #endregion
  841. string OutSpecialRepairflag = "0";//干补标识
  842. DataSet outDataSet = null;
  843. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  844. {
  845. //添加首节点数据 (在产生产数据)
  846. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  847. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet, isSendBody);
  848. }
  849. else
  850. {
  851. //添加非首节点数据
  852. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  853. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, isSendBody);
  854. }
  855. if (!string.IsNullOrEmpty(errMsg))
  856. {
  857. return errMsg;
  858. }
  859. #endregion
  860. #region 开始节点
  861. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  862. {
  863. #region 添加在产产品数据
  864. InProductionEntity addInProductionEntity = new InProductionEntity();
  865. addInProductionEntity.BarCode = barcode;
  866. //流程工序ID
  867. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  868. // 当前工序
  869. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  870. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  871. // 工序模型
  872. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  873. // 工序类别
  874. addInProductionEntity.ModelType = procedure.ModelType;
  875. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  876. addInProductionEntity.ProductionDataID = productionDataID;
  877. //xuwei add 2020-06-11 冷补更新窑车批车号
  878. if (procedure.ProcedureID == 135) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  879. #region 交坯判断
  880. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  881. #endregion
  882. // 生产工号
  883. addInProductionEntity.UserID = workUserID;
  884. // 执行添加
  885. //xuwei fix 2019-09-17 添加最后一个可选参数isSendBody识别交坯
  886. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet, isSendBody);
  887. // 执行失败
  888. if (!string.IsNullOrEmpty(errMsg))
  889. {
  890. return errMsg;
  891. }
  892. #endregion
  893. }
  894. #endregion
  895. #region 中间节点
  896. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  897. {
  898. #region 修改在产产品数据的当前工序,清空返工工序字段
  899. InProductionEntity addInProductionEntity = new InProductionEntity();
  900. addInProductionEntity.BarCode = barcode;
  901. //流程工序ID
  902. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  903. // 当前工序
  904. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  905. //当前生产数据ID
  906. addInProductionEntity.ProductionDataID = productionDataID;
  907. // 工序模型
  908. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  909. // 工序类别
  910. addInProductionEntity.ModelType = procedure.ModelType;
  911. //xuwei add 2020-06-11 冷补更新窑车批车号
  912. if (procedure.ProcedureID == 135) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  913. // 生产工号
  914. addInProductionEntity.UserID = workUserID;
  915. addInProductionEntity.LogoID = productionData.LogoID;
  916. // 缺陷标识
  917. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  918. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  919. if (procedure.IsSpecialRework == 0)
  920. {
  921. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  922. }
  923. // 2是冷补
  924. else if (procedure.IsSpecialRework == 2)
  925. {
  926. addInProductionEntity.IsLengBu = 1;
  927. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  928. }
  929. else
  930. {
  931. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  932. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  933. }
  934. #region 交坯判断
  935. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  936. #endregion
  937. // 执行修改
  938. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  939. // 执行失败
  940. if (!string.IsNullOrEmpty(errMsg))
  941. {
  942. return errMsg;
  943. }
  944. #endregion
  945. }
  946. #endregion
  947. #region 结束节点
  948. else
  949. {
  950. #region 添加成品数据 删除在产产品数据
  951. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  952. finishedProduct.BarCode = barcode;
  953. finishedProduct.LogoID = productionData.LogoID;
  954. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  955. if (!string.IsNullOrEmpty(errMsg))
  956. {
  957. return errMsg;
  958. }
  959. InProductionEntity delInProductionEntity = new InProductionEntity();
  960. delInProductionEntity.BarCode = barcode;
  961. // 执行删除 在产数据
  962. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  963. // 执行失败
  964. if (!string.IsNullOrEmpty(errMsg))
  965. {
  966. return errMsg;
  967. }
  968. #endregion
  969. }
  970. #endregion
  971. #region 更新注浆明细上的冷补标识
  972. if (productionData.IsLengBu == 1)
  973. {
  974. oracleTrConn.ExecuteNonQuery(@"
  975. UPDATE tp_pm_groutingdailydetail SET ISLENGBU = '1'
  976. WHERE BARCODE = :BARCODE ",
  977. new OracleParameter[] {
  978. new OracleParameter(":BARCODE", productionData.Barcode)
  979. });
  980. }
  981. #endregion
  982. }
  983. return errMsg;
  984. }
  985. catch (Exception ex)
  986. {
  987. throw ex;
  988. }
  989. }
  990. /// <summary>
  991. /// 添加生产者(交坯单独调用,特殊)
  992. /// </summary>
  993. /// <param name="oracleTrConn">连接对象</param>
  994. /// <param name="accountDate">账务日期</param>
  995. /// <param name="productionDataID">生产数据ID</param>
  996. /// <param name="workUserID">生产工号ID</param>
  997. /// <param name="workUserCode">生产工号Code</param>
  998. /// <param name="sUserInfo">用户基本信息</param>
  999. /// <returns>string</returns>
  1000. private static string AddProducerDeliverAdobe(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo)
  1001. {
  1002. // 参数
  1003. OracleParameter[] paras;
  1004. #region 将班次配置表中的数据插入生产者表中
  1005. string sql = "insert into tp_pm_producer"
  1006. + " (productiondataid,"
  1007. + " staffid,"
  1008. + " userid,"
  1009. + " usercode,"
  1010. + " UJobsID,"
  1011. + " staffstatus,"
  1012. + " SJobsID"
  1013. + " )"
  1014. + " select distinct :productiondataid,"
  1015. + " staffid,"
  1016. + " userid,"
  1017. + " usercode,"
  1018. + " UJobsID,"
  1019. + " staffstatus,"
  1020. + " SJobsID"
  1021. + " "
  1022. + " from TP_PM_GroutingProducer"
  1023. + " where UserID = :userID";
  1024. paras = new OracleParameter[] {
  1025. new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  1026. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  1027. };
  1028. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  1029. // 失败
  1030. if (resultCount == Constant.INT_IS_ZERO)
  1031. {
  1032. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1033. }
  1034. #endregion
  1035. return null;
  1036. }
  1037. /// <summary>
  1038. /// 装车后,更新所有以前操作的工序窑车信息
  1039. /// </summary>
  1040. /// <param name="oracleTrConn">连接对象</param>
  1041. /// <param name="barcode">条码</param>
  1042. /// <param name="kilnCarID">窑车号</param>
  1043. /// <param name="goodsID">产品ID</param>
  1044. /// <param name="KilnCarPosition">窑车位置</param>
  1045. /// <param name="kilnCarBatchNo">装车批次</param>
  1046. /// <param name="sUserInfo">用户基本信息</param>
  1047. /// <returns>string</returns>
  1048. private static string UpdateRefineBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1049. {
  1050. string sql = "update TP_PM_ProductionData set "
  1051. + " IsReFire=:IsReFire"
  1052. + " where barcode=:barcode";
  1053. #region 参数
  1054. OracleParameter[] paras = new OracleParameter[] {
  1055. new OracleParameter(":IsReFire",(int)Constant.GoodsLevelType.ReFire),
  1056. new OracleParameter(":barcode",productionData.Barcode),
  1057. };
  1058. #endregion
  1059. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1060. // 保存失败
  1061. if (result == Constant.INT_IS_ZERO)
  1062. {
  1063. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1064. }
  1065. // 保存成功返回null
  1066. return null;
  1067. }
  1068. /// <summary>
  1069. /// 装窑车计件
  1070. /// </summary>
  1071. /// <param name="oracleTrConn">数据连接对象</param>
  1072. /// <param name="procedure">工序对象</param>
  1073. /// <param name="barcodeTable">条码信息</param>
  1074. /// <param name="sUserInfo">用户基本信息</param>
  1075. /// <param name="goodsID">返回的产品ID</param>
  1076. /// <param name="goodsCode">返回的产品Code</param>
  1077. /// <param name="goodsName">返回的产品名称</param>
  1078. /// <returns>string</returns>
  1079. /// <remarks>
  1080. /// 陈冰 2014.09.18 新建
  1081. /// </remarks>
  1082. private static string AddLoadKilnCar(IDBTransaction oracleTrConn,
  1083. ProcedureEntity procedure,
  1084. DataTable barcodeTable,
  1085. SUserInfo sUserInfo,
  1086. out int goodsID,
  1087. out string goodsCode,
  1088. out string goodsName)
  1089. {
  1090. try
  1091. {
  1092. goodsID = Constant.INT_IS_ZERO;
  1093. goodsCode = null;
  1094. goodsName = null;
  1095. string groutingUserCode = string.Empty;
  1096. // 获得账务日期
  1097. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1098. string errMsg = string.Empty;
  1099. // 生产工号
  1100. int workUserID = Constant.INT_IS_ZERO;
  1101. // 生产工号Code
  1102. string workUserCode = string.Empty;
  1103. // 生产工号Name
  1104. string workUserName = string.Empty;
  1105. // 本批采集的批次号
  1106. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1107. // 窑车批次号
  1108. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1109. // 窑车状态
  1110. string kilnCarStatus = string.Empty;
  1111. //////////////////////////////////////////////////
  1112. DataView dv = barcodeTable.DefaultView;
  1113. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1114. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1115. {
  1116. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1117. // 窑炉ID
  1118. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1119. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1120. // 窑车ID
  1121. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1122. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1123. // 窑车Code
  1124. // string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1125. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1126. #region 校验窑车是否可装车
  1127. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1128. if (!string.IsNullOrEmpty(errMsg))
  1129. {
  1130. return errMsg;
  1131. }
  1132. #endregion
  1133. #region 如果窑车状态为空,需要插入窑车状态表
  1134. if (string.IsNullOrEmpty(kilnCarStatus))
  1135. {
  1136. // 自动生成窑车烧成批次号
  1137. kilnCarBatchNo = GetFiredKilnCarBatchNo(oracleTrConn, kilnCarID);
  1138. // 插入窑车状态表
  1139. errMsg = AddkilnCarStatus(oracleTrConn, procedure, kilnCarID, kilnID, kilnCarBatchNo, sUserInfo);
  1140. if (!string.IsNullOrEmpty(errMsg))
  1141. {
  1142. return errMsg;
  1143. }
  1144. }
  1145. #endregion
  1146. #region 窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  1147. // 查询本次窑车产品的批次号
  1148. else
  1149. {
  1150. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1151. // 更改窑车状态表入窑时间
  1152. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.LoadCar, sUserInfo, procedure, kilnCarBatchNo);
  1153. if (!string.IsNullOrEmpty(errMsg))
  1154. {
  1155. return errMsg;
  1156. }
  1157. }
  1158. #endregion
  1159. // 条码信息
  1160. DataView dvFilter = barcodeTable.DefaultView;
  1161. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1162. DataTable dtNew = dvFilter.ToTable();
  1163. // 条码信息
  1164. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1165. //--------------------------------
  1166. string sqllast = "select max(createtime) as createtime from TP_PM_KilnCarGoods"
  1167. + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  1168. OracleParameter[] paras = new OracleParameter[] {
  1169. new OracleParameter(":KilnCarID",kilnCarID),
  1170. new OracleParameter(":AccountID",sUserInfo.AccountID),
  1171. };
  1172. DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sqllast, paras);
  1173. object lastcreatetime = null;
  1174. if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0 && dsReturn.Tables[0].Rows[0]["CreateTime"].ToString() != "")
  1175. {
  1176. lastcreatetime = Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"]);
  1177. }
  1178. //--------------------------------
  1179. int? maxClassesSettingID = null;
  1180. foreach (DataRow barcodeRow in dtNew.Rows)
  1181. {
  1182. // 条码
  1183. string barcode = barcodeRow["Barcode"].ToString();
  1184. // 生产工号
  1185. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1186. workUserCode = barcodeRow["UserCode"].ToString();
  1187. workUserName = barcodeRow["UserName"].ToString();
  1188. #region 校验条码有效性
  1189. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  1190. if (!string.IsNullOrEmpty(errMsg))
  1191. {
  1192. return errMsg;
  1193. }
  1194. #endregion
  1195. // 查询新插入的生产数据ID
  1196. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1197. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1198. int productionDataID = 0;
  1199. if (!string.IsNullOrEmpty(idStr))
  1200. {
  1201. productionDataID = int.Parse(idStr);
  1202. }
  1203. else
  1204. {
  1205. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1206. }
  1207. int? ClassesSettingID = null;//班次配置ID
  1208. #region 添加生产者数据
  1209. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1210. if (!string.IsNullOrEmpty(errMsg))
  1211. {
  1212. return errMsg;
  1213. }
  1214. #endregion
  1215. maxClassesSettingID = ClassesSettingID;
  1216. #region 添加生产数据
  1217. ProductionDataEntity productionData = new ProductionDataEntity();
  1218. #region 属性赋值
  1219. productionData.ClassesSettingID = ClassesSettingID;
  1220. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1221. productionData.Barcode = barcode;
  1222. productionData.CentralizedBatchNo = centralizedBatchNo;
  1223. productionData.ProductionLineID = procedure.ProductionLineID;
  1224. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1225. productionData.ProductionLineName = procedure.ProductionlineName;
  1226. productionData.CompleteProcedureID = procedure.ProcedureID;
  1227. productionData.ProcedureCode = procedure.ProcedureCode;
  1228. productionData.ProcedureName = procedure.ProcedureName;
  1229. productionData.ProcedureModel = procedure.ProcedureModel;
  1230. productionData.ModelType = procedure.ModelType;
  1231. productionData.NodeType = procedure.NodeType;
  1232. productionData.ReworkProcedureID = null;
  1233. productionData.PieceType = procedure.PieceType;
  1234. //productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  1235. if (procedure.IsSpecialRework == 0)
  1236. {
  1237. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1238. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1239. }
  1240. else
  1241. {
  1242. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1243. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  1244. }
  1245. //productionData.GoodsGrade = (int)Constant.GoodsLevelType.NoDefects;
  1246. //if (lastcreatetime != null)
  1247. //{
  1248. // productionData.CreateTime = Convert.ToDateTime(lastcreatetime);
  1249. //}
  1250. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1251. ////string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1252. ////DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  1253. ////if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1254. ////{
  1255. //// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1256. //// {
  1257. //// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1258. //// }
  1259. ////}
  1260. productionData.OrganizationID = procedure.OrganizationID;
  1261. productionData.GoodsID = goodsID;
  1262. productionData.GoodsCode = goodsCode;
  1263. productionData.GoodsName = goodsName;
  1264. productionData.UserID = workUserID;
  1265. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1266. productionData.UserName = barcodeRow["UserName"].ToString();
  1267. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1268. #region 窑炉窑车属性
  1269. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1270. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1271. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1272. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1273. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1274. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1275. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1276. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1277. #endregion
  1278. #endregion
  1279. string OutSpecialRepairflag = "0";//干补标识
  1280. //if (lastcreatetime == null)
  1281. //{
  1282. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1283. //}
  1284. //else
  1285. //{
  1286. // errMsg = AddProductionDataCreateTime(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1287. //}
  1288. if (!string.IsNullOrEmpty(errMsg))
  1289. {
  1290. return errMsg;
  1291. }
  1292. #endregion
  1293. #region 修改在产产品数据的当前工序,清空返工工序字段
  1294. InProductionEntity addInProductionEntity = new InProductionEntity();
  1295. addInProductionEntity.BarCode = barcode;
  1296. //流程工序
  1297. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1298. // 当前工序
  1299. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1300. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1301. //生产数据ID
  1302. addInProductionEntity.ProductionDataID = productionDataID;
  1303. // 工序模型
  1304. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1305. // 工序类别
  1306. addInProductionEntity.ModelType = procedure.ModelType;
  1307. // 生产工号
  1308. addInProductionEntity.UserID = workUserID;
  1309. // 缺陷标识
  1310. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1311. #region 更新在产表窑车窑炉字段
  1312. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1313. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1314. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1315. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1316. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1317. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1318. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1319. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1320. #endregion
  1321. if (procedure.IsSpecialRework == 0)
  1322. {
  1323. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1324. }
  1325. else
  1326. {
  1327. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  1328. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  1329. }
  1330. // 执行修改
  1331. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1332. // 执行失败
  1333. if (!string.IsNullOrEmpty(errMsg))
  1334. {
  1335. return errMsg;
  1336. }
  1337. #endregion
  1338. //#region 添加生产者数据
  1339. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1340. //if (!string.IsNullOrEmpty(errMsg))
  1341. //{
  1342. // return errMsg;
  1343. //}
  1344. //#endregion
  1345. //errMsg = UpdateKilnCarCreatetimeInfoBybarcode(oracleTrConn, productionData, sUserInfo);
  1346. //if (!string.IsNullOrEmpty(errMsg))
  1347. //{
  1348. // return errMsg;
  1349. //}
  1350. #region 插入窑车产品表
  1351. errMsg = AddKilnCarGoods(oracleTrConn,
  1352. barcode,
  1353. kilnCarID,
  1354. goodsID,
  1355. productionData.KilnCarPosition.Value,
  1356. kilnCarBatchNo,
  1357. workUserID,
  1358. workUserCode,
  1359. workUserName,
  1360. sUserInfo);
  1361. if (!string.IsNullOrEmpty(errMsg))
  1362. {
  1363. return errMsg;
  1364. }
  1365. #endregion
  1366. //#region 装车后,更新所有以前操作的工序窑车信息
  1367. //errMsg = UpdateKilnCarInfoBybarcode(oracleTrConn, productionData);
  1368. //if (!string.IsNullOrEmpty(errMsg))
  1369. //{
  1370. // return errMsg;
  1371. //}
  1372. //#endregion
  1373. }
  1374. #region 窑车生产数据
  1375. #region 插入窑车生产数据表
  1376. if (lastcreatetime == null) //加此判断为的是,在登车时落产品,进行第二些登车时,不插重复数据
  1377. {
  1378. errMsg = AddKilnCarData(oracleTrConn,
  1379. accountDate,
  1380. kilnCarID,
  1381. kilnCarBatchNo,
  1382. workUserID,
  1383. workUserCode,
  1384. workUserName,
  1385. null,
  1386. sUserInfo, maxClassesSettingID);
  1387. #region 窑车生产者
  1388. if (!string.IsNullOrEmpty(errMsg))
  1389. {
  1390. return errMsg;
  1391. }
  1392. #endregion
  1393. }
  1394. #endregion
  1395. #endregion
  1396. }
  1397. return errMsg;
  1398. }
  1399. catch (Exception ex)
  1400. {
  1401. throw ex;
  1402. }
  1403. }
  1404. /// <summary>
  1405. /// 装车后,更新所有以前操作的工序窑车信息
  1406. /// </summary>
  1407. /// <param name="oracleTrConn">连接对象</param>
  1408. /// <param name="barcode">条码</param>
  1409. /// <param name="kilnCarID">窑车号</param>
  1410. /// <param name="goodsID">产品ID</param>
  1411. /// <param name="KilnCarPosition">窑车位置</param>
  1412. /// <param name="kilnCarBatchNo">装车批次</param>
  1413. /// <param name="sUserInfo">用户基本信息</param>
  1414. /// <returns>string</returns>
  1415. private static string UpdateKilnCarInfoBybarcode(IDBTransaction oracleTrConn, ProductionDataEntity productionData)
  1416. {
  1417. string sql = "update TP_PM_ProductionData set "
  1418. + " KilnID=:KilnID,"
  1419. + "KilnCode=:KilnCode,"
  1420. + "KilnName=:KilnName,"
  1421. + "KilnCarID=:KilnCarID,"
  1422. + "KilnCarCode=:KilnCarCode,"
  1423. + "KilnCarName=:KilnCarName,"
  1424. + "KilnCarBatchNo=:KilnCarBatchNo,"
  1425. + "KilnCarPosition=:KilnCarPosition,"
  1426. + "isrefire=:isrefire "
  1427. + " where barcode=:barcode";
  1428. #region 参数
  1429. OracleParameter[] paras = new OracleParameter[] {
  1430. new OracleParameter(":KilnID",productionData.KilnID),
  1431. new OracleParameter(":KilnCode",productionData.KilnCode),
  1432. new OracleParameter(":KilnName",productionData.KilnName),
  1433. new OracleParameter(":KilnCarID",productionData.KilnCarID),
  1434. new OracleParameter(":KilnCarCode",productionData.KilnCarCode),
  1435. new OracleParameter(":KilnCarName",productionData.KilnCarName),
  1436. new OracleParameter(":KilnCarBatchNo",productionData.KilnCarBatchNo),
  1437. new OracleParameter(":KilnCarPosition",productionData.KilnCarPosition),
  1438. new OracleParameter(":isrefire",productionData.IsReFire),
  1439. new OracleParameter(":barcode",productionData.Barcode),
  1440. };
  1441. #endregion
  1442. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  1443. // 保存失败
  1444. if (result == Constant.INT_IS_ZERO)
  1445. {
  1446. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1447. }
  1448. // 保存成功返回null
  1449. return null;
  1450. }
  1451. /// <summary>
  1452. /// 入窑车计件
  1453. /// </summary>
  1454. /// <param name="oracleTrConn">数据连接对象</param>
  1455. /// <param name="procedure">工序对象</param>
  1456. /// <param name="barcodeTable">条码信息</param>
  1457. /// <param name="sUserInfo">基本</param>
  1458. /// <param name="goodsID">返回的产品ID</param>
  1459. /// <param name="goodsCode">返回的产品Code</param>
  1460. /// <param name="goodsName">返回的产品名称</param>
  1461. /// <returns>string</returns>
  1462. /// <remarks>
  1463. /// 张国印 2014.10.04 新建
  1464. /// </remarks>
  1465. private static string AddIntoKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1466. out int goodsID, out string goodsCode, out string goodsName)
  1467. {
  1468. try
  1469. {
  1470. goodsID = Constant.INT_IS_ZERO;
  1471. goodsCode = string.Empty;
  1472. goodsName = string.Empty;
  1473. string groutingUserCode = string.Empty;
  1474. // 获得账务日期
  1475. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1476. string errMsg = string.Empty;
  1477. // 生产工号
  1478. int workUserID = Constant.INT_IS_ZERO;
  1479. // 生产工号Code
  1480. string workUserCode = string.Empty;
  1481. // 生产工号Name
  1482. string workUserName = string.Empty;
  1483. // 本批采集的批次号
  1484. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1485. // 窑车批次号
  1486. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1487. // 窑车状态
  1488. string kilnCarStatus = string.Empty;
  1489. //////////////////////////////////////////////////
  1490. DataView dv = barcodeTable.DefaultView;
  1491. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1492. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1493. {
  1494. ///////////////////////////////////////////////////
  1495. // 窑车Code
  1496. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1497. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1498. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1499. #region 校验窑车是否可入窑炉
  1500. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1501. if (!string.IsNullOrEmpty(errMsg))
  1502. {
  1503. return errMsg;
  1504. }
  1505. #endregion
  1506. // 窑炉ID
  1507. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1508. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1509. // 窑车ID
  1510. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1511. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1512. //备注信息
  1513. string Remarks = dr[0]["Remarks"].ToString();
  1514. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1515. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1516. if (!string.IsNullOrEmpty(errMsg))
  1517. {
  1518. return errMsg;
  1519. }
  1520. // 查询本次窑车产品的批次号
  1521. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1522. #region 窑车表存在,查询本次窑车产品的批次号 并更改入窑车时间
  1523. //更改窑车状态表入窑时间
  1524. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.IntoKiln, sUserInfo, procedure, kilnCarBatchNo);
  1525. if (!string.IsNullOrEmpty(errMsg))
  1526. {
  1527. return errMsg;
  1528. }
  1529. #endregion
  1530. DataView dvFilter = barcodeTable.DefaultView;
  1531. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1532. DataTable dtNew = dvFilter.ToTable();
  1533. int? maxClassesSettingID = null;
  1534. // 条码信息
  1535. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1536. foreach (DataRow barcodeRow in dtNew.Rows)
  1537. {
  1538. // 条码
  1539. string barcode = barcodeRow["Barcode"].ToString();
  1540. // 生产工号
  1541. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1542. workUserCode = barcodeRow["UserCode"].ToString();
  1543. workUserName = barcodeRow["UserName"].ToString();
  1544. // 查询新插入的生产数据ID
  1545. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1546. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1547. int productionDataID = 0;
  1548. if (!string.IsNullOrEmpty(idStr))
  1549. {
  1550. productionDataID = int.Parse(idStr);
  1551. }
  1552. else
  1553. {
  1554. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1555. }
  1556. int? ClassesSettingID = null;//班次配置ID
  1557. #region 添加生产者数据
  1558. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1559. if (!string.IsNullOrEmpty(errMsg))
  1560. {
  1561. return errMsg;
  1562. }
  1563. #endregion
  1564. maxClassesSettingID = ClassesSettingID;
  1565. #region 添加生产数据
  1566. ProductionDataEntity productionData = new ProductionDataEntity();
  1567. #region 属性赋值
  1568. productionData.ClassesSettingID = ClassesSettingID;
  1569. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1570. productionData.Barcode = barcode;
  1571. productionData.CentralizedBatchNo = centralizedBatchNo;
  1572. productionData.ProductionLineID = procedure.ProductionLineID;
  1573. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1574. productionData.ProductionLineName = procedure.ProductionlineName;
  1575. productionData.CompleteProcedureID = procedure.ProcedureID;
  1576. productionData.ProcedureCode = procedure.ProcedureCode;
  1577. productionData.ProcedureName = procedure.ProcedureName;
  1578. productionData.ProcedureModel = procedure.ProcedureModel;
  1579. productionData.ModelType = procedure.ModelType;
  1580. productionData.NodeType = procedure.NodeType;
  1581. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1582. productionData.ReworkProcedureID = null;
  1583. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1584. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1585. productionData.PieceType = procedure.PieceType;
  1586. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1587. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  1588. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  1589. ////// string sqlReFire = @"select
  1590. ////// isrefire
  1591. ////// from tp_pm_inproduction where barcode=:barcode
  1592. ////// ";
  1593. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1594. ////// new OracleParameter(":barcode",barcode),
  1595. ////// };
  1596. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1597. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1598. ////// {
  1599. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1600. ////// {
  1601. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1602. ////// }
  1603. ////// }
  1604. productionData.OrganizationID = procedure.OrganizationID;
  1605. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1606. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1607. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1608. productionData.UserID = workUserID;
  1609. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1610. productionData.UserName = barcodeRow["UserName"].ToString();
  1611. #region 窑炉窑车属性
  1612. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1613. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1614. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1615. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1616. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1617. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1618. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1619. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1620. productionData.Remarks = "";
  1621. #endregion
  1622. #endregion
  1623. string OutSpecialRepairflag = "0";//干补标识
  1624. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1625. if (!string.IsNullOrEmpty(errMsg))
  1626. {
  1627. return errMsg;
  1628. }
  1629. #endregion
  1630. #region 修改在产产品数据的当前工序,清空返工工序字段
  1631. InProductionEntity addInProductionEntity = new InProductionEntity();
  1632. addInProductionEntity.BarCode = barcode;
  1633. //流程工序
  1634. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1635. // 当前工序
  1636. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1637. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1638. //生产数据ID
  1639. addInProductionEntity.ProductionDataID = productionDataID;
  1640. // 工序模型
  1641. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1642. // 工序类别
  1643. addInProductionEntity.ModelType = procedure.ModelType;
  1644. // 生产工号
  1645. addInProductionEntity.UserID = workUserID;
  1646. // 缺陷标识
  1647. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1648. #region 更新在产表窑车窑炉字段
  1649. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1650. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1651. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1652. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1653. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1654. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1655. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1656. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1657. #endregion
  1658. // 执行修改
  1659. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1660. // 执行失败
  1661. if (!string.IsNullOrEmpty(errMsg))
  1662. {
  1663. return errMsg;
  1664. }
  1665. #endregion
  1666. //#region 添加生产者数据
  1667. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1668. //if (!string.IsNullOrEmpty(errMsg))
  1669. //{
  1670. // return errMsg;
  1671. //}
  1672. //#endregion
  1673. }
  1674. #region 插入窑车生产数据表
  1675. errMsg = AddKilnCarData(oracleTrConn,
  1676. accountDate,
  1677. kilnCarID,
  1678. kilnCarBatchNo,
  1679. workUserID,
  1680. workUserCode,
  1681. workUserName,
  1682. Remarks,
  1683. sUserInfo, maxClassesSettingID);
  1684. if (!string.IsNullOrEmpty(errMsg))
  1685. {
  1686. return errMsg;
  1687. }
  1688. #endregion
  1689. //#region 窑车生产者
  1690. //// 查询新插入的生产数据ID
  1691. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1692. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1693. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1694. //if (!string.IsNullOrEmpty(errMsg))
  1695. //{
  1696. // return errMsg;
  1697. //}
  1698. //#endregion
  1699. }
  1700. return errMsg;
  1701. }
  1702. catch (Exception ex)
  1703. {
  1704. throw ex;
  1705. }
  1706. }
  1707. /// <summary>
  1708. /// 校验窑车的工序与当前工序是否可以到达(重烧后,未走重烧入窑)
  1709. /// </summary>
  1710. /// <param name="oracleTrConn">数据连接</param>
  1711. /// <param name="barcode">产品条码</param>
  1712. /// <returns>string</returns>
  1713. private static string GetKilnCarProcedureIDByKilnCarID(IDBTransaction oracleTrConn, int KilnCarID, int ProcedureID)
  1714. {
  1715. string sql = @"select ProcedureID from TP_PM_KilnCarStatus where KilnCarID=:KilnCarID";
  1716. OracleParameter[] paras = new OracleParameter[] {
  1717. new OracleParameter(":KilnCarID", KilnCarID) ,
  1718. };
  1719. int currentProcedureID = 0;
  1720. DataSet result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1721. if (result != null && result.Tables[0].Rows.Count > 0)
  1722. {
  1723. currentProcedureID = Convert.ToInt32(result.Tables[0].Rows[0][0]);
  1724. }
  1725. sql = @"select pro.ProcedureID
  1726. from TP_PC_ProcedureFlow flow
  1727. inner join TP_PC_Procedure pro
  1728. on flow.arriveprocedureid = pro.procedureid
  1729. inner join TP_PC_ProductionLine line
  1730. on pro.ProductionLineID = line.ProductionLineID
  1731. where flow.ProcedureID = :currentProcedureID
  1732. and flow.FlowFlag = 2";
  1733. paras = new OracleParameter[] {
  1734. new OracleParameter(":currentProcedureID", currentProcedureID) ,
  1735. };
  1736. result = oracleTrConn.GetSqlResultToDs(sql, paras);
  1737. int returnProcedureID = 0;
  1738. if (result != null && result.Tables[0].Rows.Count > 0)
  1739. {
  1740. if (result.Tables[0].Select("ProcedureID=" + ProcedureID).Length > 0)
  1741. {
  1742. returnProcedureID = 1;
  1743. }
  1744. }
  1745. // 保存失败
  1746. if (returnProcedureID == 0)
  1747. {
  1748. return string.Format("当前工序不允许进行操作", "条码", "保存");
  1749. }
  1750. return null;
  1751. }
  1752. /// <summary>
  1753. /// 出窑车计件
  1754. /// </summary>
  1755. /// <param name="oracleTrConn">数据连接对象</param>
  1756. /// <param name="procedure">工序对象</param>
  1757. /// <param name="barcodeTable">条码信息</param>
  1758. /// <param name="sUserInfo">用户基本信息</param>
  1759. /// <param name="goodsID">返回的产品ID</param>
  1760. /// <param name="goodsCode">返回的产品Code</param>
  1761. /// <param name="goodsName">返回的产品名称</param>
  1762. /// <returns>string</returns>
  1763. /// <remarks>
  1764. /// 张国印 2014.10.04 新建
  1765. /// </remarks>
  1766. private static string AddOutKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  1767. out int goodsID, out string goodsCode, out string goodsName)
  1768. {
  1769. try
  1770. {
  1771. goodsID = Constant.INT_IS_ZERO;
  1772. goodsCode = string.Empty;
  1773. goodsName = string.Empty;
  1774. string groutingUserCode = string.Empty;
  1775. // 获得账务日期
  1776. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  1777. string errMsg = string.Empty;
  1778. // 生产工号
  1779. int workUserID = Constant.INT_IS_ZERO;
  1780. // 生产工号Code
  1781. string workUserCode = string.Empty;
  1782. // 生产工号Name
  1783. string workUserName = string.Empty;
  1784. // 本批采集的批次号
  1785. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1786. // 窑车批次号
  1787. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  1788. // 窑车状态
  1789. string kilnCarStatus = string.Empty;
  1790. //////////////////////////////////////////////////
  1791. DataView dv = barcodeTable.DefaultView;
  1792. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  1793. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  1794. {
  1795. // 窑车Code
  1796. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  1797. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  1798. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  1799. string Remarks = dr[0]["Remarks"].ToString();
  1800. #region 校验窑车是否可出窑炉
  1801. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  1802. if (!string.IsNullOrEmpty(errMsg))
  1803. {
  1804. return errMsg;
  1805. }
  1806. #endregion
  1807. // 窑炉ID
  1808. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  1809. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  1810. // 窑车ID
  1811. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  1812. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  1813. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  1814. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  1815. if (!string.IsNullOrEmpty(errMsg))
  1816. {
  1817. return errMsg;
  1818. }
  1819. // 查询本次窑车产品的批次号
  1820. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  1821. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  1822. //更改窑车状态表入窑时间
  1823. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.OutKiln, sUserInfo, procedure, kilnCarBatchNo);
  1824. if (!string.IsNullOrEmpty(errMsg))
  1825. {
  1826. return errMsg;
  1827. }
  1828. #endregion
  1829. //// 条码信息
  1830. DataView dvFilter = barcodeTable.DefaultView;
  1831. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  1832. DataTable dtNew = dvFilter.ToTable();
  1833. int? maxClassesSettingID = null;
  1834. // 条码信息
  1835. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  1836. foreach (DataRow barcodeRow in dtNew.Rows)
  1837. {
  1838. // 条码
  1839. string barcode = barcodeRow["Barcode"].ToString();
  1840. // 生产工号
  1841. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  1842. workUserCode = barcodeRow["UserCode"].ToString();
  1843. workUserName = barcodeRow["UserName"].ToString();
  1844. // 查询新插入的生产数据ID
  1845. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  1846. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  1847. int productionDataID = 0;
  1848. if (!string.IsNullOrEmpty(idStr))
  1849. {
  1850. productionDataID = int.Parse(idStr);
  1851. }
  1852. else
  1853. {
  1854. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  1855. }
  1856. int? ClassesSettingID = null;//班次配置ID
  1857. #region 添加生产者数据
  1858. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  1859. if (!string.IsNullOrEmpty(errMsg))
  1860. {
  1861. return errMsg;
  1862. }
  1863. #endregion
  1864. maxClassesSettingID = ClassesSettingID;
  1865. #region 添加生产数据
  1866. ProductionDataEntity productionData = new ProductionDataEntity();
  1867. #region 属性赋值
  1868. productionData.ClassesSettingID = ClassesSettingID;
  1869. productionData.ProductionDataID = Convert.ToInt32(idStr);
  1870. productionData.Barcode = barcode;
  1871. productionData.CentralizedBatchNo = centralizedBatchNo;
  1872. productionData.ProductionLineID = procedure.ProductionLineID;
  1873. productionData.ProductionLineCode = procedure.ProductionlineCode;
  1874. productionData.ProductionLineName = procedure.ProductionlineName;
  1875. productionData.CompleteProcedureID = procedure.ProcedureID;
  1876. productionData.ProcedureCode = procedure.ProcedureCode;
  1877. productionData.ProcedureName = procedure.ProcedureName;
  1878. productionData.ProcedureModel = procedure.ProcedureModel;
  1879. productionData.ModelType = procedure.ModelType;
  1880. productionData.NodeType = procedure.NodeType;
  1881. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  1882. productionData.ReworkProcedureID = null;
  1883. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  1884. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  1885. productionData.PieceType = procedure.PieceType;
  1886. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  1887. ////// string sqlReFire = @"select
  1888. ////// isrefire
  1889. ////// from tp_pm_inproduction where barcode=:barcode
  1890. ////// ";
  1891. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  1892. ////// new OracleParameter(":barcode",barcode),
  1893. ////// };
  1894. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  1895. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  1896. ////// {
  1897. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  1898. ////// {
  1899. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  1900. ////// }
  1901. ////// }
  1902. productionData.OrganizationID = procedure.OrganizationID;
  1903. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  1904. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  1905. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  1906. productionData.UserID = workUserID;
  1907. productionData.UserCode = barcodeRow["UserCode"].ToString();
  1908. productionData.UserName = barcodeRow["UserName"].ToString();
  1909. #region 窑炉窑车属性
  1910. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1911. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  1912. productionData.KilnName = barcodeRow["KilnName"].ToString();
  1913. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1914. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1915. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1916. productionData.KilnCarBatchNo = kilnCarBatchNo;
  1917. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1918. productionData.Remarks = barcodeRow["Remarks"].ToString();
  1919. #endregion
  1920. #endregion
  1921. string OutSpecialRepairflag = "0";//干补标识
  1922. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  1923. if (!string.IsNullOrEmpty(errMsg))
  1924. {
  1925. return errMsg;
  1926. }
  1927. #endregion
  1928. #region 修改在产产品数据的当前工序,清空返工工序字段
  1929. InProductionEntity addInProductionEntity = new InProductionEntity();
  1930. addInProductionEntity.BarCode = barcode;
  1931. //流程工序
  1932. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  1933. // 当前工序
  1934. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  1935. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  1936. // 生产数据ID
  1937. addInProductionEntity.ProductionDataID = productionDataID;
  1938. // 工序模型
  1939. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  1940. // 工序类别
  1941. addInProductionEntity.ModelType = procedure.ModelType;
  1942. // 生产工号
  1943. addInProductionEntity.UserID = workUserID;
  1944. // 缺陷标识
  1945. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  1946. #region 更新在产表窑车窑炉字段
  1947. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  1948. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  1949. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  1950. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  1951. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  1952. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  1953. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  1954. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  1955. #endregion
  1956. // 执行修改
  1957. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  1958. // 执行失败
  1959. if (!string.IsNullOrEmpty(errMsg))
  1960. {
  1961. return errMsg;
  1962. }
  1963. #endregion
  1964. //#region 添加生产者数据
  1965. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  1966. //if (!string.IsNullOrEmpty(errMsg))
  1967. //{
  1968. // return errMsg;
  1969. //}
  1970. //#endregion
  1971. }
  1972. #region 插入窑车生产数据表
  1973. errMsg = AddKilnCarData(oracleTrConn,
  1974. accountDate,
  1975. kilnCarID,
  1976. kilnCarBatchNo,
  1977. workUserID,
  1978. workUserCode,
  1979. workUserName,
  1980. Remarks,
  1981. sUserInfo, maxClassesSettingID);
  1982. if (!string.IsNullOrEmpty(errMsg))
  1983. {
  1984. return errMsg;
  1985. }
  1986. #endregion
  1987. //#region 窑车生产者
  1988. //// 查询新插入的生产数据ID
  1989. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  1990. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  1991. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  1992. //if (!string.IsNullOrEmpty(errMsg))
  1993. //{
  1994. // return errMsg;
  1995. //}
  1996. //#endregion
  1997. }
  1998. return errMsg;
  1999. }
  2000. catch (Exception ex)
  2001. {
  2002. throw ex;
  2003. }
  2004. }
  2005. /// <summary>
  2006. /// 卸窑车计件
  2007. /// </summary>
  2008. /// <param name="oracleTrConn">数据连接对象</param>
  2009. /// <param name="procedure">工序对象</param>
  2010. /// <param name="barcodeTable">条码信息</param>
  2011. /// <param name="sUserInfo">用户基本信息</param>
  2012. /// <param name="goodsID">返回的产品ID</param>
  2013. /// <param name="goodsCode">返回的产品Code</param>
  2014. /// <param name="goodsName">返回的产品名称</param>
  2015. /// <returns>string</returns>
  2016. /// <remarks>
  2017. /// 张国印 2014.10.04 新建
  2018. /// </remarks>
  2019. private static string AddUnloadingKilnCar(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2020. out int goodsID, out string goodsCode, out string goodsName)
  2021. {
  2022. try
  2023. {
  2024. goodsID = Constant.INT_IS_ZERO;
  2025. goodsCode = string.Empty;
  2026. goodsName = string.Empty;
  2027. string groutingUserCode = string.Empty;
  2028. // 获得账务日期
  2029. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2030. string errMsg = string.Empty;
  2031. // 生产工号
  2032. int workUserID = Constant.INT_IS_ZERO;
  2033. // 生产工号Code
  2034. string workUserCode = string.Empty;
  2035. // 生产工号Name
  2036. string workUserName = string.Empty;
  2037. // 本批采集的批次号
  2038. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  2039. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  2040. // 窑车批次号
  2041. string kilnCarBatchNo = null;//System.Guid.NewGuid().ToString().ToUpper();
  2042. // 窑车状态
  2043. string kilnCarStatus = string.Empty;
  2044. DataView dv = barcodeTable.DefaultView;
  2045. DataTable dtNewKiln = dv.ToTable(true, "kilnCarCode");
  2046. for (int i = 0; i < dtNewKiln.Rows.Count; i++)
  2047. {
  2048. // 窑车Code
  2049. //string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2050. DataRow[] dr = barcodeTable.Select("kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'");
  2051. string kilnCarCode = dr[0]["kilnCarCode"].ToString();
  2052. string Remarks = dr[0]["Remarks"].ToString();
  2053. #region 校验窑车是否可出窑炉
  2054. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2055. if (!string.IsNullOrEmpty(errMsg))
  2056. {
  2057. return errMsg;
  2058. }
  2059. #endregion
  2060. // 窑炉ID
  2061. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2062. int kilnID = Convert.ToInt32(dr[0]["kilnID"].ToString());
  2063. // 窑车ID
  2064. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2065. int kilnCarID = Convert.ToInt32(dr[0]["KilnCarID"].ToString());
  2066. // 主要目的防止输入窑车号,当前工序与该操作的工序不匹配,例如重烧入窑,在入窑工序上操作了
  2067. errMsg = GetKilnCarProcedureIDByKilnCarID(oracleTrConn, kilnCarID, Convert.ToInt32(procedure.ProcedureID));
  2068. if (!string.IsNullOrEmpty(errMsg))
  2069. {
  2070. return errMsg;
  2071. }
  2072. // 查询本次窑车产品的批次号
  2073. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2074. #region 窑车表存在,查询本次窑车产品的批次号 并更改出窑车时间
  2075. //更改窑车状态表入窑时间
  2076. errMsg = UpdatekilnCarStatus(oracleTrConn, kilnCarID, Constant.ProcedureModelType.UnloadCar, sUserInfo, procedure, kilnCarBatchNo);
  2077. if (!string.IsNullOrEmpty(errMsg))
  2078. {
  2079. return errMsg;
  2080. }
  2081. #endregion
  2082. // 条码信息
  2083. DataView dvFilter = barcodeTable.DefaultView;
  2084. dvFilter.RowFilter = "kilnCarCode='" + dtNewKiln.Rows[i]["kilnCarCode"].ToString() + "'";
  2085. DataTable dtNew = dvFilter.ToTable();
  2086. int? maxClassesSettingID = null;
  2087. // 条码信息
  2088. //foreach (DataRow barcodeRow in barcodeTable.Rows)
  2089. foreach (DataRow barcodeRow in dtNew.Rows)
  2090. {
  2091. // 条码
  2092. string barcode = barcodeRow["Barcode"].ToString();
  2093. // 生产工号
  2094. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2095. workUserCode = barcodeRow["UserCode"].ToString();
  2096. workUserName = barcodeRow["UserName"].ToString();
  2097. // 查询新插入的生产数据ID
  2098. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2099. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2100. int productionDataID = 0;
  2101. if (!string.IsNullOrEmpty(idStr))
  2102. {
  2103. productionDataID = int.Parse(idStr);
  2104. }
  2105. else
  2106. {
  2107. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2108. }
  2109. int? ClassesSettingID = null;//班次配置ID
  2110. #region 添加生产者数据
  2111. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2112. if (!string.IsNullOrEmpty(errMsg))
  2113. {
  2114. return errMsg;
  2115. }
  2116. #endregion
  2117. maxClassesSettingID = ClassesSettingID;
  2118. #region 添加生产数据
  2119. ProductionDataEntity productionData = new ProductionDataEntity();
  2120. #region 属性赋值
  2121. productionData.ClassesSettingID = ClassesSettingID;
  2122. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2123. productionData.Barcode = barcode;
  2124. productionData.CentralizedBatchNo = centralizedBatchNo;
  2125. productionData.ProductionLineID = procedure.ProductionLineID;
  2126. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2127. productionData.ProductionLineName = procedure.ProductionlineName;
  2128. productionData.CompleteProcedureID = procedure.ProcedureID;
  2129. productionData.ProcedureCode = procedure.ProcedureCode;
  2130. productionData.ProcedureName = procedure.ProcedureName;
  2131. productionData.ProcedureModel = procedure.ProcedureModel;
  2132. productionData.ModelType = procedure.ModelType;
  2133. productionData.NodeType = procedure.NodeType;
  2134. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2135. productionData.ReworkProcedureID = null;
  2136. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2137. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2138. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2139. productionData.PieceType = procedure.PieceType;
  2140. ////// string sqlReFire = @"select
  2141. ////// isrefire
  2142. ////// from tp_pm_inproduction where barcode=:barcode
  2143. ////// ";
  2144. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  2145. ////// new OracleParameter(":barcode",barcode),
  2146. ////// };
  2147. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  2148. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  2149. ////// {
  2150. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  2151. ////// {
  2152. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  2153. ////// }
  2154. ////// }
  2155. productionData.OrganizationID = procedure.OrganizationID;
  2156. productionData.GoodsID = Convert.ToInt32(barcodeRow["GoodsID"]);
  2157. productionData.GoodsCode = barcodeRow["GoodsCode"].ToString();
  2158. productionData.GoodsName = barcodeRow["GoodsName"].ToString();
  2159. productionData.UserID = workUserID;
  2160. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2161. productionData.UserName = barcodeRow["UserName"].ToString();
  2162. #region 窑炉窑车属性
  2163. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2164. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2165. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2166. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2167. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2168. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2169. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2170. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2171. productionData.Remarks = barcodeRow["Remarks"].ToString();
  2172. #endregion
  2173. #endregion
  2174. string OutSpecialRepairflag = "0";//干补标识
  2175. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2176. if (!string.IsNullOrEmpty(errMsg))
  2177. {
  2178. return errMsg;
  2179. }
  2180. #endregion
  2181. if (procedure.NodeType == Constant.ProcedureNodeType.Middle.GetHashCode())
  2182. {
  2183. #region 中间工序 修改在产产品数据的当前工序,清空返工工序字段
  2184. InProductionEntity addInProductionEntity = new InProductionEntity();
  2185. addInProductionEntity.BarCode = barcode;
  2186. //流程工序ID
  2187. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2188. // 当前工序
  2189. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2190. // 生产数据ID
  2191. addInProductionEntity.ProductionDataID = productionDataID;
  2192. // 工序模型
  2193. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2194. // 工序类别
  2195. addInProductionEntity.ModelType = procedure.ModelType;
  2196. // 生产工号
  2197. addInProductionEntity.UserID = workUserID;
  2198. // 缺陷标识
  2199. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2200. #region 更新在产表窑车窑炉字段
  2201. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2202. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2203. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2204. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2205. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2206. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2207. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2208. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2209. #endregion
  2210. // 执行修改
  2211. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2212. // 执行失败
  2213. if (!string.IsNullOrEmpty(errMsg))
  2214. {
  2215. return errMsg;
  2216. }
  2217. #endregion
  2218. }
  2219. else if (procedure.NodeType == Constant.ProcedureNodeType.End.GetHashCode())
  2220. {
  2221. #region 结束工序 添加成品数据 删除在产产品数据
  2222. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  2223. finishedProduct.BarCode = barcode;
  2224. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  2225. if (!string.IsNullOrEmpty(errMsg))
  2226. {
  2227. return errMsg;
  2228. }
  2229. InProductionEntity delInProductionEntity = new InProductionEntity();
  2230. delInProductionEntity.BarCode = barcode;
  2231. // 执行删除 在产数据
  2232. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  2233. // 执行失败
  2234. if (!string.IsNullOrEmpty(errMsg))
  2235. {
  2236. return errMsg;
  2237. }
  2238. #endregion
  2239. }
  2240. //#region 添加生产者数据
  2241. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2242. //if (!string.IsNullOrEmpty(errMsg))
  2243. //{
  2244. // return errMsg;
  2245. //}
  2246. //#endregion
  2247. }
  2248. #region 插入窑车生产数据表
  2249. errMsg = AddKilnCarData(oracleTrConn,
  2250. accountDate,
  2251. kilnCarID,
  2252. kilnCarBatchNo,
  2253. workUserID,
  2254. workUserCode,
  2255. workUserName,
  2256. Remarks,
  2257. sUserInfo, maxClassesSettingID);
  2258. if (!string.IsNullOrEmpty(errMsg))
  2259. {
  2260. return errMsg;
  2261. }
  2262. #endregion
  2263. //#region 窑车生产者
  2264. //// 查询新插入的生产数据ID
  2265. //string sqlKilnCar = "select SEQ_PM_KilnCarData_ID.Currval from dual";
  2266. //string idKilnCar = oracleTrConn.GetSqlResultToStr(sqlKilnCar);
  2267. //errMsg = AddKilnCarProducer(oracleTrConn, accountDate, Convert.ToInt32(idKilnCar), workUserID, sUserInfo);
  2268. //if (!string.IsNullOrEmpty(errMsg))
  2269. //{
  2270. // return errMsg;
  2271. //}
  2272. //#endregion
  2273. #region 删除TP_PM_KilnCarGoods数据 按照窑车ID
  2274. errMsg = DeleteKilnCarGoodsByKilnCarID(oracleTrConn, kilnCarID);
  2275. if (!string.IsNullOrEmpty(errMsg))
  2276. {
  2277. return errMsg;
  2278. }
  2279. #endregion
  2280. }
  2281. return errMsg;
  2282. }
  2283. catch (Exception ex)
  2284. {
  2285. throw ex;
  2286. }
  2287. }
  2288. /// <summary>
  2289. /// 窑车补件计件
  2290. /// </summary>
  2291. /// <param name="oracleTrConn">数据连接对象</param>
  2292. /// <param name="procedure">工序对象</param>
  2293. /// <param name="barcodeTable">条码信息</param>
  2294. /// <param name="sUserInfo">用户基本信息</param>
  2295. /// <param name="goodsID">返回的产品ID</param>
  2296. /// <param name="goodsCode">返回的产品Code</param>
  2297. /// <param name="goodsName">返回的产品名称</param>
  2298. /// <returns>string</returns>
  2299. /// <remarks>
  2300. /// 张国印 2014.10.05 新建
  2301. /// </remarks>
  2302. private static string AddKilnCarSupplement(IDBTransaction oracleTrConn, ProcedureEntity procedure, DataTable barcodeTable, SUserInfo sUserInfo,
  2303. out int goodsID, out string goodsCode, out string goodsName)
  2304. {
  2305. try
  2306. {
  2307. goodsID = Constant.INT_IS_ZERO;
  2308. goodsCode = null;
  2309. goodsName = null;
  2310. string groutingUserCode = string.Empty;
  2311. // 获得账务日期
  2312. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  2313. string errMsg = "";
  2314. // 生产工号
  2315. int workUserID = Constant.INT_IS_ZERO;
  2316. // 生产工号Code
  2317. string workUserCode = string.Empty;
  2318. // 生产工号Name
  2319. string workUserName = string.Empty;
  2320. // 本批采集的批次号
  2321. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  2322. // 窑车Code
  2323. string kilnCarCode = barcodeTable.Rows[0]["kilnCarCode"].ToString();
  2324. // 窑车批次号
  2325. string kilnCarBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  2326. // 窑车状态
  2327. string kilnCarStatus = string.Empty;
  2328. #region 校验窑车是否可装车
  2329. errMsg = CheckKilnCarrStatus(oracleTrConn, procedure.ProcedureID, kilnCarCode, procedure.ModelType, sUserInfo, out kilnCarStatus);
  2330. if (!string.IsNullOrEmpty(errMsg))
  2331. {
  2332. return errMsg;
  2333. }
  2334. #endregion
  2335. // 窑炉ID
  2336. //int kilnID = Convert.ToInt32(barcodeTable.Rows[0]["kilnID"].ToString());
  2337. //// 窑车ID
  2338. //int kilnCarID = Convert.ToInt32(barcodeTable.Rows[0]["KilnCarID"].ToString());
  2339. int kilnID = 0;
  2340. // 窑车ID
  2341. int kilnCarID = 0;
  2342. // 条码信息
  2343. foreach (DataRow barcodeRow in barcodeTable.Rows)
  2344. {
  2345. kilnID = Convert.ToInt32(barcodeRow["kilnID"]);
  2346. kilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2347. //窑车表存在,查询本次窑车产品的批次号 并更改装窑车时间
  2348. kilnCarBatchNo = GetKilnCarBatchNoByKilnCarID(oracleTrConn, kilnCarID);
  2349. // 条码
  2350. string barcode = barcodeRow["Barcode"].ToString();
  2351. // 生产工号
  2352. workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  2353. workUserCode = barcodeRow["UserCode"].ToString();
  2354. workUserName = barcodeRow["UserName"].ToString();
  2355. //#region 校验条码有效性
  2356. //errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2357. //if (!string.IsNullOrEmpty(errMsg))
  2358. //{
  2359. // return errMsg;
  2360. //}
  2361. //#endregion
  2362. if (procedure.CollectType == 1)
  2363. {
  2364. #region 校验条码有效性
  2365. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  2366. if (!string.IsNullOrEmpty(errMsg))
  2367. {
  2368. return errMsg;
  2369. }
  2370. #endregion
  2371. }
  2372. else
  2373. {
  2374. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  2375. tp_pm_groutingdailydetail.goodscode,
  2376. tp_pm_groutingdailydetail.goodsname,
  2377. tp_pm_groutingdailydetail.usercode as groutingUserCode
  2378. from tp_pm_groutingdailydetail where barcode=:barcode
  2379. ";
  2380. OracleParameter[] ReFireparas = new OracleParameter[] {
  2381. new OracleParameter(":barcode",barcode),
  2382. };
  2383. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  2384. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  2385. {
  2386. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  2387. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  2388. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  2389. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  2390. }
  2391. }
  2392. // 查询新插入的生产数据ID
  2393. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  2394. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  2395. int productionDataID = 0;
  2396. if (!string.IsNullOrEmpty(idStr))
  2397. {
  2398. productionDataID = int.Parse(idStr);
  2399. }
  2400. else
  2401. {
  2402. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2403. }
  2404. int? ClassesSettingID = null;//班次配置ID
  2405. #region 添加生产者数据
  2406. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  2407. if (!string.IsNullOrEmpty(errMsg))
  2408. {
  2409. return errMsg;
  2410. }
  2411. #endregion
  2412. #region 添加生产数据
  2413. ProductionDataEntity productionData = new ProductionDataEntity();
  2414. #region 属性赋值
  2415. productionData.ClassesSettingID = ClassesSettingID;
  2416. productionData.ProductionDataID = Convert.ToInt32(idStr);
  2417. productionData.Barcode = barcode;
  2418. productionData.CentralizedBatchNo = centralizedBatchNo;
  2419. productionData.ProductionLineID = procedure.ProductionLineID;
  2420. productionData.ProductionLineCode = procedure.ProductionlineCode;
  2421. productionData.ProductionLineName = procedure.ProductionlineName;
  2422. productionData.CompleteProcedureID = procedure.ProcedureID;
  2423. productionData.ProcedureCode = procedure.ProcedureCode;
  2424. productionData.ProcedureName = procedure.ProcedureName;
  2425. productionData.ProcedureModel = procedure.ProcedureModel;
  2426. productionData.ModelType = procedure.ModelType;
  2427. productionData.NodeType = procedure.NodeType;
  2428. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  2429. productionData.ReworkProcedureID = null;
  2430. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  2431. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  2432. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  2433. productionData.OrganizationID = procedure.OrganizationID;
  2434. productionData.GoodsID = goodsID;
  2435. productionData.GoodsCode = goodsCode;
  2436. productionData.GoodsName = goodsName;
  2437. productionData.UserID = workUserID;
  2438. productionData.UserCode = barcodeRow["UserCode"].ToString();
  2439. productionData.UserName = barcodeRow["UserName"].ToString();
  2440. productionData.PieceType = procedure.PieceType;
  2441. #region 窑炉窑车属性
  2442. productionData.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2443. productionData.KilnCode = barcodeRow["KilnCode"].ToString();
  2444. productionData.KilnName = barcodeRow["KilnName"].ToString();
  2445. productionData.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2446. productionData.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2447. productionData.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2448. productionData.KilnCarBatchNo = kilnCarBatchNo;
  2449. productionData.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2450. #endregion
  2451. #endregion
  2452. string OutSpecialRepairflag = "0";//干补标识
  2453. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  2454. if (!string.IsNullOrEmpty(errMsg))
  2455. {
  2456. return errMsg;
  2457. }
  2458. #endregion
  2459. #region 修改在产产品数据的当前工序,清空返工工序字段
  2460. InProductionEntity addInProductionEntity = new InProductionEntity();
  2461. addInProductionEntity.BarCode = barcode;
  2462. //流程工序
  2463. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  2464. // 当前工序
  2465. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  2466. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  2467. //生产数据ID
  2468. addInProductionEntity.ProductionDataID = productionDataID;
  2469. // 工序模型
  2470. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  2471. // 工序类别
  2472. addInProductionEntity.ModelType = procedure.ModelType;
  2473. // 生产工号
  2474. addInProductionEntity.UserID = workUserID;
  2475. // 缺陷标识
  2476. addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  2477. #region 更新在产表窑车窑炉字段
  2478. addInProductionEntity.KilnID = Convert.ToInt32(barcodeRow["KilnID"].ToString());
  2479. addInProductionEntity.KilnCode = barcodeRow["KilnCode"].ToString();
  2480. addInProductionEntity.KilnName = barcodeRow["KilnName"].ToString();
  2481. addInProductionEntity.KilnCarID = Convert.ToInt32(barcodeRow["KilnCarID"].ToString());
  2482. addInProductionEntity.KilnCarCode = barcodeRow["KilnCarCode"].ToString();
  2483. addInProductionEntity.KilnCarName = barcodeRow["KilnCarName"].ToString();
  2484. addInProductionEntity.KilnCarBatchNo = kilnCarBatchNo;
  2485. addInProductionEntity.KilnCarPosition = Convert.ToInt32(barcodeRow["KilnCarPosition"].ToString());
  2486. #endregion
  2487. // 执行修改
  2488. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  2489. // 执行失败
  2490. if (!string.IsNullOrEmpty(errMsg))
  2491. {
  2492. return errMsg;
  2493. }
  2494. #endregion
  2495. //#region 添加生产者数据
  2496. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  2497. //if (!string.IsNullOrEmpty(errMsg))
  2498. //{
  2499. // return errMsg;
  2500. //}
  2501. //#endregion
  2502. #region 插入窑车产品表
  2503. errMsg = AddKilnCarGoods(oracleTrConn,
  2504. barcode,
  2505. kilnCarID,
  2506. goodsID,
  2507. productionData.KilnCarPosition.Value,
  2508. kilnCarBatchNo,
  2509. workUserID,
  2510. workUserCode,
  2511. workUserName,
  2512. sUserInfo);
  2513. if (!string.IsNullOrEmpty(errMsg))
  2514. {
  2515. return errMsg;
  2516. }
  2517. #endregion
  2518. }
  2519. return errMsg;
  2520. }
  2521. catch (Exception ex)
  2522. {
  2523. throw ex;
  2524. }
  2525. }
  2526. /// <summary>
  2527. /// 插入窑车生产数据表(装车)
  2528. /// </summary>
  2529. /// <param name="oracleTrConn">连接对象</param>
  2530. /// <param name="accountDate">账务日期</param>
  2531. /// <param name="kilnCarID">窑车ID</param>
  2532. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2533. /// <param name="workUserID">生产工号ID</param>
  2534. /// <param name="workUserCode">生产工号Code</param>
  2535. /// <param name="workUserName">生产工号Name</param>
  2536. /// <param name="sUserInfo">用户基本信息</param>
  2537. /// <returns>string</returns>
  2538. private static string AddKilnCarDataCreateTime(IDBTransaction oracleTrConn,
  2539. DateTime accountDate,
  2540. int kilnCarID,
  2541. string kilnCarBatchNo,
  2542. int workUserID,
  2543. string workUserCode,
  2544. string workUserName,
  2545. string remarks,
  2546. DateTime? createtime,
  2547. SUserInfo sUserInfo)
  2548. {
  2549. #region SQL
  2550. string sql = "insert into tp_pm_kilncardata"
  2551. + " (kilncarbatchno,"
  2552. + " kilncarid,"
  2553. + " kilnid,"
  2554. + " productionlineid,"
  2555. + " procedureid,"
  2556. + " procedurecode,"
  2557. + " procedurename,"
  2558. + " proceduremodel,"
  2559. + " modeltype,"
  2560. + " piecetype,"
  2561. + " kilncarstatus,"
  2562. + " UserID,"
  2563. + " UserCode,"
  2564. + " UserName,"
  2565. + " loadingtime,"
  2566. + " intokilntime,"
  2567. + " outkilntime,"
  2568. + " unloadingtime,"
  2569. + " accountdate,"
  2570. + " accountid,"
  2571. + " createuserid,"
  2572. + " updateuserid,"
  2573. + " createtime,"
  2574. + " remarks)"
  2575. + " select "
  2576. + " :pkilncarbatchno,"
  2577. + " kilncarid,"
  2578. + " kilnid,"
  2579. + " productionlineid,"
  2580. + " procedureid,"
  2581. + " procedurecode,"
  2582. + " procedurename,"
  2583. + " proceduremodel,"
  2584. + " modeltype,"
  2585. + " piecetype,"
  2586. + " kilncarstatus,"
  2587. + " :puserID,"
  2588. + " :puserCode,"
  2589. + " :puserName,"
  2590. + " loadingtime,"
  2591. + " intokilntime,"
  2592. + " outkilntime,"
  2593. + " unloadingtime,"
  2594. + " :paccountdate,"
  2595. + " :paccountid,"
  2596. + " :pcreateuserid,"
  2597. + " :pupdateuserid,"
  2598. + " :createtime,"
  2599. + " :remarks"
  2600. + " from tp_pm_kilncarstatus"
  2601. + " where kilncarid = :pkilncarid";
  2602. #endregion
  2603. #region 参数
  2604. OracleParameter[] paras = new OracleParameter[] {
  2605. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2606. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2607. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2608. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2609. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2610. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2611. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2612. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2613. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2614. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2615. new OracleParameter(":createtime",OracleDbType.Date,Convert.ToDateTime(createtime),ParameterDirection.Input),
  2616. };
  2617. #endregion
  2618. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2619. // 保存失败
  2620. if (result != Constant.INT_IS_ONE)
  2621. {
  2622. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2623. }
  2624. // 保存成功返回null
  2625. return null;
  2626. }
  2627. /// <summary>
  2628. /// 插入窑车生产数据表
  2629. /// </summary>
  2630. /// <param name="oracleTrConn">连接对象</param>
  2631. /// <param name="accountDate">账务日期</param>
  2632. /// <param name="kilnCarID">窑车ID</param>
  2633. /// <param name="kilnCarBatchNo">窑车批次号</param>
  2634. /// <param name="workUserID">生产工号ID</param>
  2635. /// <param name="workUserCode">生产工号Code</param>
  2636. /// <param name="workUserName">生产工号Name</param>
  2637. /// <param name="sUserInfo">用户基本信息</param>
  2638. /// <returns>string</returns>
  2639. private static string AddKilnCarData(IDBTransaction oracleTrConn,
  2640. DateTime accountDate,
  2641. int kilnCarID,
  2642. string kilnCarBatchNo,
  2643. int workUserID,
  2644. string workUserCode,
  2645. string workUserName,
  2646. string remarks,
  2647. SUserInfo sUserInfo, int? ClassesSettingID)
  2648. {
  2649. #region SQL
  2650. string sql = "insert into tp_pm_kilncardata"
  2651. + " (kilncarbatchno,"
  2652. + " kilncarid,"
  2653. + " kilnid,"
  2654. + " productionlineid,"
  2655. + " procedureid,"
  2656. + " procedurecode,"
  2657. + " procedurename,"
  2658. + " proceduremodel,"
  2659. + " modeltype,"
  2660. + " piecetype,"
  2661. + " kilncarstatus,"
  2662. + " UserID,"
  2663. + " UserCode,"
  2664. + " UserName,"
  2665. + " loadingtime,"
  2666. + " intokilntime,"
  2667. + " outkilntime,"
  2668. + " unloadingtime,"
  2669. + " accountdate,"
  2670. + " accountid,"
  2671. + " createuserid,"
  2672. + " updateuserid,"
  2673. + " classesSettingID,"
  2674. + " remarks)"
  2675. + " select "
  2676. + " :pkilncarbatchno,"
  2677. + " kilncarid,"
  2678. + " kilnid,"
  2679. + " productionlineid,"
  2680. + " procedureid,"
  2681. + " procedurecode,"
  2682. + " procedurename,"
  2683. + " proceduremodel,"
  2684. + " modeltype,"
  2685. + " piecetype,"
  2686. + " kilncarstatus,"
  2687. + " :puserID,"
  2688. + " :puserCode,"
  2689. + " :puserName,"
  2690. + " loadingtime,"
  2691. + " intokilntime,"
  2692. + " outkilntime,"
  2693. + " unloadingtime,"
  2694. + " :paccountdate,"
  2695. + " :paccountid,"
  2696. + " :pcreateuserid,"
  2697. + " :pupdateuserid,"
  2698. + " :classesSettingID,"
  2699. + " :remarks"
  2700. + " from tp_pm_kilncarstatus"
  2701. + " where kilncarid = :pkilncarid";
  2702. #endregion
  2703. #region 参数
  2704. OracleParameter[] paras = new OracleParameter[] {
  2705. new OracleParameter(":classesSettingID",OracleDbType.Int32,ClassesSettingID,ParameterDirection.Input),
  2706. new OracleParameter(":pkilncarbatchno",OracleDbType.Varchar2,kilnCarBatchNo,ParameterDirection.Input),
  2707. new OracleParameter(":puserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  2708. new OracleParameter(":puserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  2709. new OracleParameter(":puserName",OracleDbType.Varchar2,workUserName,ParameterDirection.Input),
  2710. new OracleParameter(":paccountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  2711. new OracleParameter(":paccountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  2712. new OracleParameter(":pcreateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2713. new OracleParameter(":pupdateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  2714. new OracleParameter(":pkilncarid",OracleDbType.Int32,kilnCarID,ParameterDirection.Input),
  2715. new OracleParameter(":remarks",OracleDbType.Varchar2,remarks,ParameterDirection.Input),
  2716. };
  2717. #endregion
  2718. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2719. // 保存失败
  2720. if (result != Constant.INT_IS_ONE)
  2721. {
  2722. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2723. }
  2724. // 保存成功返回null
  2725. return null;
  2726. }
  2727. /// <summary>
  2728. /// 插入窑车产品表
  2729. /// </summary>
  2730. /// <param name="oracleTrConn">连接对象</param>
  2731. /// <param name="barcode">条码</param>
  2732. /// <param name="kilnCarID">窑车号</param>
  2733. /// <param name="goodsID">产品ID</param>
  2734. /// <param name="KilnCarPosition">窑车位置</param>
  2735. /// <param name="kilnCarBatchNo">装车批次</param>
  2736. /// <param name="sUserInfo">用户基本信息</param>
  2737. /// <returns>string</returns>
  2738. private static string AddKilnCarGoods(IDBTransaction oracleTrConn, string barcode, int kilnCarID, int goodsID, int KilnCarPosition, string kilnCarBatchNo, int workUserID,
  2739. string workUserCode,
  2740. string workUserName, SUserInfo sUserInfo)
  2741. {
  2742. string sqlExist = "select 1 from tp_pm_kilncargoods where barcode=:barcode and accountid=:accountid";
  2743. OracleParameter[] parasExist = new OracleParameter[] {
  2744. new OracleParameter(":barcode",barcode),
  2745. new OracleParameter(":accountid",sUserInfo.AccountID),
  2746. };
  2747. oracleTrConn.ExecuteNonQuery(sqlExist, parasExist);
  2748. DataSet dsExist = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  2749. if (dsExist != null && dsExist.Tables[0].Rows.Count == 0)
  2750. {
  2751. string sql = "insert into tp_pm_kilncargoods"
  2752. + " (barcode,"
  2753. + " kilncarid,"
  2754. + " goodsid,"
  2755. + " kilncarposition,"
  2756. + " kilncarbatchno,"
  2757. + " accountid,"
  2758. + " userid,"
  2759. + " usercode,"
  2760. + " username,"
  2761. + " createuserid,"
  2762. + " updateuserid)"
  2763. + " values"
  2764. + " (:barcode,"
  2765. + " :kilncarid,"
  2766. + " :goodsid,"
  2767. + " :kilncarposition,"
  2768. + " :kilncarbatchno,"
  2769. + " :accountid,"
  2770. + " :userid,"
  2771. + " :usercode,"
  2772. + " :username,"
  2773. + " :createuserid,"
  2774. + " :updateuserid)";
  2775. #region 参数
  2776. OracleParameter[] paras = new OracleParameter[] {
  2777. new OracleParameter(":barcode",barcode),
  2778. new OracleParameter(":kilncarid",kilnCarID),
  2779. new OracleParameter(":goodsid",goodsID),
  2780. new OracleParameter(":kilncarposition",KilnCarPosition),
  2781. new OracleParameter(":kilncarbatchno",kilnCarBatchNo),
  2782. new OracleParameter(":accountid",sUserInfo.AccountID),
  2783. new OracleParameter(":createuserid",sUserInfo.UserID),
  2784. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2785. new OracleParameter(":userid",workUserID),
  2786. new OracleParameter(":usercode",workUserCode),
  2787. new OracleParameter(":username",workUserName),
  2788. };
  2789. #endregion
  2790. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2791. // 保存失败
  2792. if (result != Constant.INT_IS_ONE)
  2793. {
  2794. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2795. }
  2796. }
  2797. // 保存成功返回null
  2798. return null;
  2799. }
  2800. /// <summary>
  2801. /// 查询本次批次号
  2802. /// </summary>
  2803. /// <param name="oracleTrConn">连接对象</param>
  2804. /// <param name="kilnCarID">窑车ID</param>
  2805. /// <returns>string</returns>
  2806. private static string GetKilnCarBatchNoByKilnCarID(IDBTransaction oracleTrConn, int kilnCarID)
  2807. {
  2808. string sql = "SELECT Max(KilnCarBatchNo) FROM TP_PM_KilnCarGoods where KilnCarID = :kilnCarID";
  2809. #region 参数
  2810. OracleParameter[] paras = new OracleParameter[] {
  2811. new OracleParameter(":kilnCarID",kilnCarID),
  2812. };
  2813. #endregion
  2814. string batchNo = oracleTrConn.GetSqlResultToStr(sql, paras);
  2815. if (!string.IsNullOrEmpty(batchNo))
  2816. {
  2817. return batchNo;
  2818. }
  2819. else
  2820. {
  2821. // 自动生成窑车烧成批次号
  2822. //return System.Guid.NewGuid().ToString().ToUpper();
  2823. return GetFiredKilnCarBatchNo(oracleTrConn, kilnCarID);
  2824. }
  2825. }
  2826. /// <summary>
  2827. /// 自动生成窑车烧成批次号
  2828. /// </summary>
  2829. /// <param name="oracleTrConn"></param>
  2830. /// <param name="kilnCarID"></param>
  2831. /// <returns></returns>
  2832. public static string GetFiredKilnCarBatchNo(IDBTransaction oracleTrConn, int kilnCarID)
  2833. {
  2834. DateTime now = DateTime.Now.Date;
  2835. string sqlString = "select k.kilnid, k.kilncode, k.fireddate, k.firedbatchno, kc.kilncarcode, k.sk_date, k.sk_batchno\n" +
  2836. " from TP_MST_Kiln k\n" +
  2837. " inner join tp_mst_kilncar kc\n" +
  2838. " on k.kilnid = kc.kilnid\n" +
  2839. " where kc.kilncarid = :kilncarid\n" +
  2840. //" and k.fireddate = :fireddate"
  2841. " for update";
  2842. OracleParameter[] paras = new OracleParameter[] {
  2843. new OracleParameter(":kilncarid",kilnCarID),
  2844. //new OracleParameter(":fireddate",now),
  2845. };
  2846. DataTable dt = oracleTrConn.GetSqlResultToDt(sqlString, paras);
  2847. if (dt == null || dt.Rows.Count == 0)
  2848. {
  2849. // 窑车、窑炉不存在
  2850. return null;
  2851. }
  2852. int kilnid = Convert.ToInt32(dt.Rows[0]["kilnid"]);
  2853. string kilncode = dt.Rows[0]["kilncode"] + "";
  2854. string kilncarcode = dt.Rows[0]["kilncarcode"] + "";
  2855. int sk_date = Convert.ToInt32(dt.Rows[0]["sk_date"]);
  2856. int sk_batchno = Convert.ToInt32(dt.Rows[0]["sk_batchno"]);
  2857. int firedbatchno = 0;
  2858. if (dt.Rows[0]["fireddate"] == null || dt.Rows[0]["fireddate"] == DBNull.Value)
  2859. {
  2860. firedbatchno = -1;
  2861. }
  2862. else
  2863. {
  2864. DateTime fireddate = Convert.ToDateTime(dt.Rows[0]["fireddate"]);
  2865. if (now > fireddate)
  2866. {
  2867. firedbatchno = -1;
  2868. }
  2869. }
  2870. if (firedbatchno < 0)
  2871. {
  2872. // 当日第一车
  2873. sqlString = "update TP_MST_Kiln k\n" +
  2874. " set k.fireddate = :fireddate, k.firedbatchno = 1\n" +
  2875. " where k.kilnid = :kilnid";
  2876. paras = new OracleParameter[] {
  2877. new OracleParameter(":kilnid",kilnid),
  2878. new OracleParameter(":fireddate",now),
  2879. };
  2880. oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2881. return $"{kilncode}${sk_date}${sk_batchno.ToString("000")}${kilncarcode}${now.ToString("yyyyMMdd")}$001";
  2882. }
  2883. firedbatchno = Convert.ToInt32(dt.Rows[0]["firedbatchno"]) + 1;
  2884. sqlString = "update TP_MST_Kiln k\n" +
  2885. " set k.firedbatchno = k.firedbatchno + 1\n" +
  2886. " where k.kilnid = :kilnid";
  2887. paras = new OracleParameter[] {
  2888. new OracleParameter(":kilnid",kilnid),
  2889. };
  2890. oracleTrConn.ExecuteNonQuery(sqlString, paras);
  2891. return $"{kilncode}${sk_date}${sk_batchno.ToString("000")}${kilncarcode}${now.ToString("yyyyMMdd")}${firedbatchno.ToString("000")}";
  2892. }
  2893. /// <summary>
  2894. /// 插入窑车状态表
  2895. /// </summary>
  2896. /// <param name="oracleTrConn">连接对象</param>
  2897. /// <param name="procedure">工序ID</param>
  2898. /// <param name="kilnCarID">窑车ID</param>
  2899. /// <param name="kilnID">窑炉ID</param>
  2900. /// <param name="sUserInfo">用户基本信息</param>
  2901. /// <returns>string</returns>
  2902. private static string AddkilnCarStatus(IDBTransaction oracleTrConn, ProcedureEntity procedure, int kilnCarID, int kilnID, string kilnCarBatchNo, SUserInfo sUserInfo)
  2903. {
  2904. #region SQL
  2905. string sql = " insert into tp_pm_kilncarstatus "
  2906. + " (kilncarid, "
  2907. + " kilnid, "
  2908. + " productionlineid, "
  2909. + " procedureid, "
  2910. + " procedurecode, "
  2911. + " procedurename, "
  2912. + " proceduremodel, "
  2913. + " modeltype, "
  2914. + " piecetype, "
  2915. + " kilncarstatus, "
  2916. + " loadingtime, "
  2917. + " accountid, "
  2918. + " createuserid, "
  2919. + " updateuserid,kilnCarBatchNo) "
  2920. + " values "
  2921. + " (:kilncarid, "
  2922. + " :kilnid, "
  2923. + " :productionlineid, "
  2924. + " :procedureid, "
  2925. + " :procedurecode, "
  2926. + " :procedurename, "
  2927. + " :proceduremodel, "
  2928. + " :modeltype, "
  2929. + " :piecetype, "
  2930. + " '0', "
  2931. + " sysdate, "
  2932. + " :accountid, "
  2933. + " :createuserid, "
  2934. + " :updateuserid,:kilnCarBatchNo)";
  2935. #endregion
  2936. #region 参数
  2937. OracleParameter[] paras = new OracleParameter[] {
  2938. new OracleParameter(":kilncarid",kilnCarID),
  2939. new OracleParameter(":kilnid",kilnID),
  2940. new OracleParameter(":productionlineid",procedure.ProductionLineID),
  2941. new OracleParameter(":procedureid",procedure.ProcedureID),
  2942. new OracleParameter(":procedurecode",procedure.ProcedureCode),
  2943. new OracleParameter(":procedurename",procedure.ProcedureName),
  2944. new OracleParameter(":proceduremodel",procedure.ProcedureModel),
  2945. new OracleParameter(":modeltype",procedure.ModelType),
  2946. new OracleParameter(":piecetype",procedure.PieceType),
  2947. new OracleParameter(":accountID",sUserInfo.AccountID),
  2948. new OracleParameter(":createuserid",sUserInfo.UserID),
  2949. new OracleParameter(":updateuserid",sUserInfo.UserID),
  2950. new OracleParameter(":kilnCarBatchNo",kilnCarBatchNo),
  2951. };
  2952. #endregion
  2953. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  2954. // 保存失败
  2955. if (result != Constant.INT_IS_ONE)
  2956. {
  2957. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  2958. }
  2959. // 保存成功返回null
  2960. return null;
  2961. }
  2962. /// <summary>
  2963. /// 更新窑车状态表中的对应的时间
  2964. /// </summary>
  2965. /// <param name="oracleTrConn">数据连接</param>
  2966. /// <param name="kilnCarID">窑车ID</param>
  2967. /// <param name="pModelType">操作类型</param>
  2968. /// <param name="sUserInfo">用户基本信息</param>
  2969. /// <returns>
  2970. /// 张国印 2014.10.04 新建
  2971. /// </returns>
  2972. private static string UpdatekilnCarStatus(IDBTransaction oracleTrConn, int kilnCarID, Constant.ProcedureModelType pModelType, SUserInfo sUserInfo, ProcedureEntity procedure, string kilnCarBatchNo)
  2973. {
  2974. if (pModelType == Constant.ProcedureModelType.LoadCar)
  2975. {
  2976. //procedure.ProcedureID,
  2977. //procedure.ProcedureCode,
  2978. //procedure.ProcedureName,
  2979. //procedure.ModelType
  2980. #region 装窑车操作时,更新tp_pm_kilncarstatus的装车时间
  2981. #region SQL语句和参数
  2982. string sql = " Update tp_pm_kilncarstatus Set"
  2983. + " KilnCarStatus = :pKilnCarStatus, "
  2984. + " LoadingTime = sysdate, "
  2985. + " IntoKilnTime = null, "
  2986. + " OutKilnTime = null, "
  2987. + " UnloadingTime = null, "
  2988. + " UpdateUserID = :pUpdateUserID, "
  2989. + " ProcedureID = :ProcedureID, "
  2990. + " ProcedureCode = :ProcedureCode, "
  2991. + " ProcedureName = :ProcedureName, "
  2992. + " ModelType = :ModelType, "
  2993. + " kilnCarBatchNo = :kilnCarBatchNo "
  2994. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  2995. OracleParameter[] paras = new OracleParameter[]
  2996. {
  2997. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  2998. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  2999. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3000. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3001. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3002. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3003. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3004. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3005. new OracleParameter(":kilnCarBatchNo", OracleDbType.Varchar2, kilnCarBatchNo, ParameterDirection.Input),
  3006. };
  3007. #endregion
  3008. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3009. // 保存失败
  3010. if (result != Constant.INT_IS_ONE)
  3011. {
  3012. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3013. }
  3014. #endregion
  3015. }
  3016. else if (pModelType == Constant.ProcedureModelType.IntoKiln)
  3017. {
  3018. #region 入窑操作时,更新tp_pm_kilncarstatus的入窑时间
  3019. #region SQL语句和参数
  3020. string sql = " Update tp_pm_kilncarstatus Set"
  3021. + " KilnCarStatus = :pKilnCarStatus, "
  3022. + " IntoKilnTime = sysdate, "
  3023. + " UpdateUserID = :pUpdateUserID, "
  3024. + " ProcedureID = :ProcedureID, "
  3025. + " ProcedureCode = :ProcedureCode, "
  3026. + " ProcedureName = :ProcedureName, "
  3027. + " ModelType = :ModelType "
  3028. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3029. OracleParameter[] paras = new OracleParameter[]
  3030. {
  3031. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 1, ParameterDirection.Input),
  3032. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3033. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3034. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3035. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3036. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3037. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3038. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3039. };
  3040. #endregion
  3041. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3042. // 保存失败
  3043. if (result != Constant.INT_IS_ONE)
  3044. {
  3045. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3046. }
  3047. #endregion
  3048. }
  3049. else if (pModelType == Constant.ProcedureModelType.OutKiln)
  3050. {
  3051. #region 出窑操作时,更新tp_pm_kilncarstatus的出窑时间
  3052. #region SQL语句和参数
  3053. string sql = " Update tp_pm_kilncarstatus Set"
  3054. + " OutKilnTime = sysdate, "
  3055. + " UpdateUserID = :pUpdateUserID, "
  3056. + " ProcedureID = :ProcedureID, "
  3057. + " ProcedureCode = :ProcedureCode, "
  3058. + " ProcedureName = :ProcedureName, "
  3059. + " ModelType = :ModelType "
  3060. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3061. OracleParameter[] paras = new OracleParameter[]
  3062. {
  3063. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3064. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3065. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3066. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3067. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3068. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3069. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3070. };
  3071. #endregion
  3072. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3073. // 保存失败
  3074. if (result != Constant.INT_IS_ONE)
  3075. {
  3076. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3077. }
  3078. #endregion
  3079. }
  3080. else if (pModelType == Constant.ProcedureModelType.UnloadCar)
  3081. {
  3082. #region 卸窑车操作时,更新tp_pm_kilncarstatus的卸窑车时间
  3083. #region SQL语句和参数
  3084. string sql = " Update tp_pm_kilncarstatus Set"
  3085. + " KilnCarStatus = :pKilnCarStatus, "
  3086. //+ " LoadingTime = null, "
  3087. //+ " IntoKilnTime = null, "
  3088. //+ " OutKilnTime = null, "
  3089. + " UnloadingTime = sysdate, "
  3090. + " UpdateUserID = :pUpdateUserID, "
  3091. + " ProcedureID = :ProcedureID, "
  3092. + " ProcedureCode = :ProcedureCode, "
  3093. + " ProcedureName = :ProcedureName, "
  3094. + " ModelType = :ModelType "
  3095. + " Where KilnCarID = :pKilnCarID And AccountID = :pAccountID";
  3096. OracleParameter[] paras = new OracleParameter[]
  3097. {
  3098. new OracleParameter(":pKilnCarStatus", OracleDbType.Int32, 0, ParameterDirection.Input),
  3099. new OracleParameter(":pUpdateUserID", OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  3100. new OracleParameter(":pKilnCarID", OracleDbType.Int32, kilnCarID, ParameterDirection.Input),
  3101. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input),
  3102. new OracleParameter(":ProcedureID", OracleDbType.Int32, procedure.ProcedureID, ParameterDirection.Input),
  3103. new OracleParameter(":ProcedureCode", OracleDbType.Varchar2, procedure.ProcedureCode, ParameterDirection.Input),
  3104. new OracleParameter(":ProcedureName", OracleDbType.Varchar2, procedure.ProcedureName, ParameterDirection.Input),
  3105. new OracleParameter(":ModelType", OracleDbType.Int32, procedure.ModelType, ParameterDirection.Input),
  3106. };
  3107. #endregion
  3108. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3109. // 保存失败
  3110. if (result != Constant.INT_IS_ONE)
  3111. {
  3112. return string.Format(Messages.MSG_CMN_W001, "窑车状态", "保存");
  3113. }
  3114. #endregion
  3115. }
  3116. // 保存成功返回null
  3117. return string.Empty;
  3118. }
  3119. /// <summary>
  3120. /// 校验窑车是否可用
  3121. /// </summary>
  3122. /// <param name="oracleTrConn">连接对象</param>
  3123. /// <param name="pProcedureId">工序ID</param>
  3124. /// <param name="kilnCarCode">窑车号</param>
  3125. /// <param name="pModelType">操作类型</param>
  3126. /// <param name="sUserInfo">用户基本信息</param>
  3127. /// <param name="kilnCarStatus">窑车状态</param>
  3128. /// <returns>string</returns>
  3129. private static string CheckKilnCarrStatus(IDBTransaction oracleTrConn, int pProcedureId, string kilnCarCode, int pModelType, SUserInfo sUserInfo, out string kilnCarStatus)
  3130. {
  3131. kilnCarStatus = string.Empty;
  3132. OracleParameter[] paras = new OracleParameter[]{
  3133. new OracleParameter("in_accountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  3134. new OracleParameter("in_kilnCarCode",OracleDbType.NVarchar2, kilnCarCode,ParameterDirection.Input),
  3135. new OracleParameter("in_modelType",OracleDbType.Int32, pModelType,ParameterDirection.Input),
  3136. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  3137. new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output),
  3138. new OracleParameter("in_procedureid",OracleDbType.Int32, pProcedureId,ParameterDirection.Input),
  3139. // 验证能否卸窑
  3140. new OracleParameter("in_UserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  3141. };
  3142. DataSet returnDataSet = oracleTrConn.ExecStoredProcedure("PRO_PM_CheckKilnCar", paras);
  3143. string errMsg = paras[3].Value.ToString() == "null" ? string.Empty : paras[3].Value.ToString();
  3144. if (string.IsNullOrEmpty(errMsg))
  3145. {
  3146. if (pModelType == (int)Constant.ProcedureModelType.LoadCar)
  3147. {
  3148. kilnCarStatus = returnDataSet.Tables[0].Rows[0]["KilnCarStatus"].ToString();
  3149. }
  3150. }
  3151. return errMsg;
  3152. }
  3153. /// <summary>
  3154. /// 添加生产者
  3155. /// </summary>
  3156. /// <param name="oracleTrConn">连接对象</param>
  3157. /// <param name="accountDate">账务日期</param>
  3158. /// <param name="productionDataID">生产数据ID</param>
  3159. /// <param name="workUserID">生产工号ID</param>
  3160. /// <param name="workUserCode">生产工号Code</param>
  3161. /// <param name="sUserInfo">用户基本信息</param>
  3162. /// <returns>string</returns>
  3163. private static string AddProducer(IDBTransaction oracleTrConn, DateTime accountDate, int productionDataID, int workUserID, string workUserCode, SUserInfo sUserInfo, ref int? ClassesSettingID)
  3164. {
  3165. // 参数
  3166. OracleParameter[] paras;
  3167. #region 查询班次配置表是否有数据
  3168. string sql = "select max(ClassesSettingID)"
  3169. + " from tp_pc_classessetting"
  3170. + " where Valueflag =1 and AccountID = :accountID"
  3171. + " and UserID = :userID"
  3172. + " and AccountDate = :accountDate";
  3173. paras = new OracleParameter[] {
  3174. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3175. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3176. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3177. };
  3178. string countStr = oracleTrConn.GetSqlResultToStr(sql, paras);
  3179. int classesSettingID = 0;
  3180. #endregion
  3181. #region 没有班次配置数据,将工号所属员工插入班次配置表中
  3182. if (string.IsNullOrEmpty(countStr) || Constant.INT_IS_ZERO == int.Parse(countStr))
  3183. {
  3184. // 查询新插入的班次配置表ID
  3185. sql = "select SEQ_PC_ClassesSetting_ID.nextval from dual";
  3186. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  3187. // 新插入的班次配置表ID
  3188. if (!string.IsNullOrEmpty(idStr))
  3189. {
  3190. classesSettingID = int.Parse(idStr);
  3191. }
  3192. else
  3193. {
  3194. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3195. }
  3196. ClassesSettingID = Convert.ToInt32(classesSettingID);
  3197. #region 班次配置总表
  3198. sql = "insert into tp_pc_classessetting"
  3199. + " (ClassesSettingID,accountdate, "
  3200. + " userid, "
  3201. + " usercode, "
  3202. + " accountid, "
  3203. + " createuserid, "
  3204. + " updateuserid,ORGANIZATIONID)"
  3205. + " select "
  3206. + " :classesSettingID, "
  3207. + " :accountdate, "
  3208. + " USERID, "
  3209. + " UserCode, "
  3210. + " accountid,"
  3211. + " :createuserid,"
  3212. + " :updateuserid,ORGANIZATIONID"
  3213. + " from TP_MST_User"
  3214. + " where UserID = :userID";
  3215. paras = new OracleParameter[] {
  3216. new OracleParameter(":classesSettingID",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3217. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3218. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3219. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3220. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3221. };
  3222. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3223. // 失败
  3224. if (result != Constant.INT_IS_ONE)
  3225. {
  3226. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3227. }
  3228. #endregion
  3229. #region 班次配置明细SQL
  3230. sql = " insert into tp_pc_classesdetail"
  3231. + " (classessettingid,"
  3232. + " accountdate,"
  3233. + " userid,"
  3234. + " usercode,"
  3235. + " UJobsID,"
  3236. + " staffid,"
  3237. + " SJobsID,"
  3238. + " staffstatus,"
  3239. + " accountid,"
  3240. + " createuserid,"
  3241. + " updateuserid,Uorganizationid,Sorganizationid)"
  3242. + " select "
  3243. + " :classessettingid,"
  3244. + " :accountdate,"
  3245. + " userStaff.Userid,"
  3246. + " :usercode,"
  3247. + " userStaff.Ujobsid,"
  3248. + " userStaff.Staffid,"
  3249. + " staff.Jobs,"
  3250. + " staff.staffstatus,"
  3251. + " :accountID,"
  3252. + " :createuserid,"
  3253. + " :updateuserid,user2.organizationid,staff.organizationid"
  3254. + " from TP_MST_UserStaff userStaff"
  3255. + " inner join tp_hr_staff staff on staff.staffid = userStaff.Staffid"
  3256. + " inner join tp_mst_user user2 on userStaff.userid = user2.userid"
  3257. + " where (staff.StaffStatus = 1 or staff.StaffStatus = 2)"
  3258. + " and staff.ValueFlag = 1"
  3259. + " and staff.AccountID = :accountID"
  3260. + " and userStaff.UserID = :userID";
  3261. paras = new OracleParameter[] {
  3262. new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID,ParameterDirection.Input),
  3263. new OracleParameter(":accountdate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3264. new OracleParameter(":usercode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  3265. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3266. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3267. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  3268. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  3269. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3270. };
  3271. result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3272. // 失败
  3273. //if (result == Constant.INT_IS_ZERO)
  3274. //{
  3275. // return string.Format(Messages.MSG_CMN_W007, "生产工号[" + workUserCode + "]没有配置生产员工");
  3276. //}
  3277. #endregion
  3278. }
  3279. else
  3280. {
  3281. ClassesSettingID = int.Parse(countStr);
  3282. }
  3283. #endregion
  3284. //#region 将班次配置表中的数据插入生产者表中
  3285. //sql = "insert into tp_pm_producer"
  3286. // + " (productiondataid,"
  3287. // + " staffid,"
  3288. // + " userid,"
  3289. // + " usercode,"
  3290. // + " UJobsID,"
  3291. // + " staffstatus,"
  3292. // + " SJobsID,"
  3293. // + " classessettingid"
  3294. // + " )"
  3295. // + " select :productiondataid,"
  3296. // + " staffid,"
  3297. // + " userid,"
  3298. // + " usercode,"
  3299. // + " UJobsID,"
  3300. // + " staffstatus,"
  3301. // + " SJobsID,"
  3302. // + " :classessettingid"
  3303. // + " from tp_pc_classesdetail"
  3304. // + " where ValueFlag = 1"
  3305. // + " and classessettingid = (select max(ClassesSettingID)"
  3306. // + " from TP_PC_ClassesSetting"
  3307. // + " where ValueFlag = 1 and AccountDate=:accountDate"
  3308. // + " and UserID = :userID)";
  3309. //paras = new OracleParameter[] {
  3310. // new OracleParameter(":productiondataid",OracleDbType.Int32,productionDataID,ParameterDirection.Input),
  3311. // new OracleParameter(":classessettingid",OracleDbType.Int32,classesSettingID.ToString()=="0"?null:classesSettingID.ToString(),ParameterDirection.Input),
  3312. // new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3313. // new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3314. // };
  3315. //int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3316. //// 失败
  3317. //if (resultCount == Constant.INT_IS_ZERO)
  3318. //{
  3319. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3320. //}
  3321. //#endregion
  3322. return null;
  3323. }
  3324. /// <summary>
  3325. /// 窑车生产者
  3326. /// </summary>
  3327. /// <param name="oracleTrConn">连接对象</param>
  3328. /// <param name="accountDate">账务日期</param>
  3329. /// <param name="kilnCarDataID">窑车生产数据ID</param>
  3330. /// <param name="workUserID">生产工号ID</param>
  3331. /// <param name="sUserInfo">用户基本信息</param>
  3332. /// <returns>string</returns>
  3333. private static string AddKilnCarProducer(IDBTransaction oracleTrConn, DateTime accountDate, int kilnCarDataID, int workUserID, SUserInfo sUserInfo)
  3334. {
  3335. // 参数
  3336. OracleParameter[] paras;
  3337. #region 将班次配置表中的数据插入生产者表中
  3338. string sql = "insert into TP_PM_KilnCarProducer"
  3339. + " (KilnCarDataID,"
  3340. + " staffid,"
  3341. + " userid,"
  3342. + " usercode,"
  3343. + " Ujobsid,"
  3344. + " staffstatus,"
  3345. + " Sjobsid,"
  3346. + " classessettingid"
  3347. + " )"
  3348. + " select :kilnCarDataID,"
  3349. + " staffid,"
  3350. + " userid,"
  3351. + " usercode,"
  3352. + " Ujobsid,"
  3353. + " staffstatus,"
  3354. + " Sjobsid,"
  3355. + " classessettingid"
  3356. + " from tp_pc_classesdetail"
  3357. + " where ValueFlag = 1"
  3358. + " and classessettingid = (select max(ClassesSettingID)"
  3359. + " from TP_PC_ClassesSetting"
  3360. + " where ValueFlag = 1 and AccountDate=:accountDate"
  3361. + " and UserID = :userID)";
  3362. paras = new OracleParameter[] {
  3363. new OracleParameter(":kilnCarDataID",OracleDbType.Int32,kilnCarDataID,ParameterDirection.Input),
  3364. new OracleParameter(":accountDate",OracleDbType.Date,accountDate,ParameterDirection.Input),
  3365. new OracleParameter(":userID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  3366. };
  3367. int resultCount = oracleTrConn.ExecuteNonQuery(sql, paras);
  3368. // 失败
  3369. if (resultCount == Constant.INT_IS_ZERO)
  3370. {
  3371. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3372. }
  3373. #endregion
  3374. return null;
  3375. }
  3376. /// <summary>
  3377. /// 添加生产数据
  3378. /// </summary>
  3379. /// <param name="oracleTrConn">连接对象</param>
  3380. /// <param name="accountDate">账务日期</param>
  3381. /// <param name="productionData">生产数据</param>
  3382. /// <param name="sUserInfo">用户基本信息</param>
  3383. /// <returns>string</returns>
  3384. /// <remarks>
  3385. /// 陈冰 2014.09.18 新建
  3386. /// </remarks>
  3387. private static string AddProductionDataCreateTime(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  3388. {
  3389. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3390. // string selectSql = @"select TP_PM_GroutingProduct.GroutingDate,
  3391. // TP_PM_GroutingProduct.GroutingUserID,
  3392. // TP_PM_GroutingProduct.GroutingUserCode,
  3393. // TP_PM_GroutingProduct.GroutingNum,
  3394. // TP_PM_GroutingProduct.GroutingMouldCode,
  3395. // TP_PM_GroutingProduct.MouldCode,
  3396. // TP_PM_GroutingDaily.GroutingDailyID,
  3397. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  3398. // TP_PM_GroutingDaily.GroutingLineID,
  3399. // TP_PM_GroutingDaily.GroutingLineCode,
  3400. // TP_PM_GroutingDaily.GroutingLineName,
  3401. // TP_PM_GroutingDaily.GMouldTypeID,
  3402. // TP_PM_GroutingDaily.CanManyTimes,
  3403. // TP_PM_GroutingDailyDetail.GroutingLineDetailID
  3404. // from TP_PM_GroutingProduct
  3405. // left join TP_PM_GroutingDaily
  3406. // on TP_PM_GroutingProduct.GroutingDailyID=TP_PM_GroutingDaily.GroutingDailyID
  3407. // left join TP_PM_GroutingDailyDetail
  3408. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  3409. // where TP_PM_GroutingProduct.barcode=:barcode";
  3410. //这地方连了两张表,为了成检的时候,次品在次新增
  3411. string returnVal = "";
  3412. string selectSql = @"select
  3413. GroutingDate,
  3414. GroutingUserID,
  3415. GroutingUserCode,
  3416. GroutingNum,
  3417. GroutingMouldCode,
  3418. MouldCode,
  3419. GroutingDailyID,
  3420. GroutingDailyDetailID,
  3421. GroutingLineID,
  3422. GroutingLineCode,
  3423. GroutingLineName,
  3424. GMouldTypeID,
  3425. CanManyTimes,
  3426. GroutingLineDetailID,
  3427. SpecialRepairflag
  3428. from tp_pm_inproduction where barcode=:barcode
  3429. union
  3430. select
  3431. GroutingDate,
  3432. GroutingUserID,
  3433. GroutingUserCode,
  3434. GroutingNum,
  3435. GroutingMouldCode,
  3436. MouldCode,
  3437. GroutingDailyID,
  3438. GroutingDailyDetailID,
  3439. GroutingLineID,
  3440. GroutingLineCode,
  3441. GroutingLineName,
  3442. GMouldTypeID,
  3443. CanManyTimes,
  3444. GroutingLineDetailID,
  3445. SpecialRepairflag
  3446. from TP_PM_InProductionTrash where barcode=:barcode
  3447. ";
  3448. OracleParameter[] selectparas = new OracleParameter[] {
  3449. new OracleParameter(":barcode",productionData.Barcode),
  3450. };
  3451. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  3452. DateTime GroutingDate = new DateTime();
  3453. int GroutingUserID = 0, SpecialRepairflag = 0;
  3454. string GroutingUserCode = "";
  3455. int GroutingNum = 0;
  3456. string GroutingMouldCode = "";
  3457. string MouldCode = "";
  3458. //注浆日报ID
  3459. int GroutingDailyID = 0;
  3460. //注浆日报明细ID
  3461. int GroutingDailyDetailID = 0;
  3462. //成型生产线ID
  3463. int GroutingLineID = 0;
  3464. //成型生产线编码
  3465. string GroutingLineCode = "";
  3466. // 成型生产线名称
  3467. string GroutingLineName = "";
  3468. //成型线类型ID
  3469. int GMouldTypeID = 0;
  3470. // 能否多次注浆
  3471. int CanManyTimes = 0;
  3472. // 成型生产线明细ID
  3473. int GroutingLineDetailID = 0;
  3474. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3475. {
  3476. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3477. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3478. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3479. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3480. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3481. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3482. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3483. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3484. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3485. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3486. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3487. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3488. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3489. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3490. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3491. returnVal = SpecialRepairflag.ToString();
  3492. }
  3493. #endregion
  3494. #region 更新窑炉窑车属性
  3495. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3496. {
  3497. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3498. if (ds != null)
  3499. {
  3500. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3501. {
  3502. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3503. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3504. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3505. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3506. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3507. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3508. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3509. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3510. }
  3511. }
  3512. }
  3513. #endregion
  3514. //string sql = "select createtime from TP_PM_KilnCarGoods"
  3515. // + " where KilnCarID=:KilnCarID and AccountID=:AccountID";
  3516. //OracleParameter[] paras = new OracleParameter[] {
  3517. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3518. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3519. //};
  3520. //DataSet dsReturn = oracleTrConn.GetSqlResultToDs(sql, paras);
  3521. //if (dsReturn != null && dsReturn.Tables[0].Rows.Count > 0)
  3522. //{
  3523. // sql = "update TP_PM_ProductionData set "
  3524. // + " CreateTime=:CreateTime"
  3525. // + " where barcode=:barcode and ProcedureID=:ProcedureID and KilnCarID=:KilnCarID and AccountID=:AccountID";
  3526. // paras = new OracleParameter[] {
  3527. // new OracleParameter(":CreateTime",Convert.ToDateTime(dsReturn.Tables[0].Rows[0]["CreateTime"])),
  3528. // new OracleParameter(":barcode",productionData.Barcode),
  3529. // new OracleParameter(":ProcedureID",productionData.CompleteProcedureID),
  3530. // new OracleParameter(":KilnCarID",productionData.KilnCarID),
  3531. // new OracleParameter(":AccountID",sUserInfo.AccountID),
  3532. // };
  3533. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3534. //}
  3535. #region SQL
  3536. string sql = "insert into tp_pm_productiondata"
  3537. + " ("
  3538. + " barcode,"
  3539. + " centralizedbatchno,"
  3540. + " productionlineid,"
  3541. + " productionlinecode,"
  3542. + " productionlinename,"
  3543. + " procedureid,"
  3544. + " procedurecode,"
  3545. + " procedurename,"
  3546. + " proceduremodel,"
  3547. + " modeltype,"
  3548. + " piecetype,"
  3549. + " isreworked,"
  3550. + " nodetype,"
  3551. + " ispublicbody,"
  3552. + " isrefire,"
  3553. + " organizationid,"
  3554. + " goodsid,"
  3555. + " goodscode,"
  3556. + " goodsname,"
  3557. + " userid,"
  3558. + " usercode,"
  3559. + " username,"
  3560. + " kilnid,"
  3561. + " kilncode,"
  3562. + " kilnname,"
  3563. + " kilncarid,"
  3564. + " kilncarcode,"
  3565. + " kilncarname,"
  3566. + " kilncarbatchno,"
  3567. + " kilncarposition,"
  3568. + " reworkprocedureid,"
  3569. + " reworkprocedurecode,"
  3570. + " reworkprocedurename,"
  3571. + " remarks,"
  3572. + " accountdate,"
  3573. + " accountid,"
  3574. + " GoodsLevelID,"
  3575. + " GoodsLevelTypeID,"
  3576. + " createuserid,"
  3577. + " updateuserid,"
  3578. + " GroutingDate,"
  3579. + " GroutingUserID,"
  3580. + " GroutingUserCode,"
  3581. + " GroutingNum,"
  3582. + " GroutingMouldCode,"
  3583. + " MouldCode,"
  3584. + "GroutingDailyID,"
  3585. + "GroutingDailyDetailID,"
  3586. + "GroutingLineID,"
  3587. + " GroutingLineCode,"
  3588. + "GroutingLineName,"
  3589. + "GMouldTypeID,"
  3590. + "CanManyTimes,"
  3591. + "GroutingLineDetailID,"
  3592. + "CreateTime,SpecialRepairflag"
  3593. + ")"
  3594. + " values"
  3595. + " ("
  3596. + " :barcode,"
  3597. + " :centralizedbatchno,"
  3598. + " :productionlineid,"
  3599. + " :productionlinecode,"
  3600. + " :productionlinename,"
  3601. + " :procedureid,"
  3602. + " :procedurecode,"
  3603. + " :procedurename,"
  3604. + " :proceduremodel,"
  3605. + " :modeltype,"
  3606. + " :piecetype,"
  3607. + " :isreworked,"
  3608. + " :nodetype,"
  3609. + " :ispublicbody,"
  3610. + " :isrefire,"
  3611. + " :organizationid,"
  3612. + " :goodsid,"
  3613. + " :goodscode,"
  3614. + " :goodsname,"
  3615. + " :userid,"
  3616. + " :usercode,"
  3617. + " :username,"
  3618. + " :kilnid,"
  3619. + " :kilncode,"
  3620. + " :kilnname,"
  3621. + " :kilncarid,"
  3622. + " :kilncarcode,"
  3623. + " :kilncarname,"
  3624. + " :kilncarbatchno,"
  3625. + " :kilncarposition,"
  3626. + " :reworkprocedureid,"
  3627. + " :reworkprocedurecode,"
  3628. + " :reworkprocedurename,"
  3629. + " :remarks,"
  3630. + " :accountdata,"
  3631. + " :accountid,"
  3632. + " :GoodsLevelID,"
  3633. + " :GoodsLevelTypeID,"
  3634. + " :createuserid,"
  3635. + " :updateuserid,"
  3636. + " :groutingdate,"
  3637. + " :groutinguserid,"
  3638. + " :groutingusercode,"
  3639. + " :groutingnum,"
  3640. + " :groutingmouldcode,"
  3641. + " :mouldcode,"
  3642. + ":groutingdailyid,"
  3643. + ":groutingdailydetailid,"
  3644. + ":groutinglineid,"
  3645. + " :groutinglinecode,"
  3646. + ":groutinglinename,"
  3647. + ":gmouldtypeid,"
  3648. + ":canmanytimes,"
  3649. + ":groutinglinedetailid,"
  3650. + ":CreateTime,:SpecialRepairflag"
  3651. + ")";
  3652. #endregion
  3653. #region OracleParameter
  3654. OracleParameter[] paras = new OracleParameter[] {
  3655. new OracleParameter(":barcode",productionData.Barcode),
  3656. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  3657. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  3658. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  3659. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  3660. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  3661. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  3662. new OracleParameter(":procedurename",productionData.ProcedureName),
  3663. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  3664. new OracleParameter(":modeltype",productionData.ModelType),
  3665. new OracleParameter(":piecetype",productionData.PieceType),
  3666. new OracleParameter(":isreworked",productionData.IsReworked),
  3667. new OracleParameter(":nodetype",productionData.NodeType),
  3668. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3669. new OracleParameter(":isrefire",productionData.IsReFire),
  3670. new OracleParameter(":organizationid",productionData.OrganizationID),
  3671. new OracleParameter(":goodsid",productionData.GoodsID),
  3672. new OracleParameter(":goodscode",productionData.GoodsCode),
  3673. new OracleParameter(":goodsname",productionData.GoodsName),
  3674. new OracleParameter(":userid",productionData.UserID),
  3675. new OracleParameter(":usercode",productionData.UserCode),
  3676. new OracleParameter(":username",productionData.UserName),
  3677. new OracleParameter(":kilnid",productionData.KilnID),
  3678. new OracleParameter(":kilncode",productionData.KilnCode),
  3679. new OracleParameter(":kilnname",productionData.KilnName),
  3680. new OracleParameter(":kilncarid",productionData.KilnCarID),
  3681. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  3682. new OracleParameter(":kilncarname",productionData.KilnCarName),
  3683. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  3684. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  3685. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  3686. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  3687. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  3688. new OracleParameter(":remarks",productionData.Remarks),
  3689. new OracleParameter(":accountdata",accountDate),
  3690. new OracleParameter(":accountid",sUserInfo.AccountID),
  3691. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  3692. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  3693. new OracleParameter(":createuserid",sUserInfo.UserID),
  3694. new OracleParameter(":updateuserid",sUserInfo.UserID),
  3695. new OracleParameter(":groutingdate",GroutingDate),
  3696. new OracleParameter(":groutinguserid",GroutingUserID),
  3697. new OracleParameter(":groutingusercode",GroutingUserCode),
  3698. new OracleParameter(":groutingnum",GroutingNum),
  3699. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  3700. new OracleParameter(":mouldcode",MouldCode),
  3701. new OracleParameter(":groutingdailyid",GroutingDailyID),
  3702. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  3703. new OracleParameter(":groutinglineid",GroutingLineID),
  3704. new OracleParameter(":groutinglinecode",GroutingLineCode),
  3705. new OracleParameter(":groutinglinename",GroutingLineName),
  3706. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  3707. new OracleParameter(":canmanytimes",CanManyTimes),
  3708. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  3709. new OracleParameter(":CreateTime",productionData.CreateTime),
  3710. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  3711. };
  3712. #endregion
  3713. foreach (OracleParameter para in paras)
  3714. {
  3715. if (string.IsNullOrEmpty(para.Value + ""))
  3716. {
  3717. para.Value = DBNull.Value;
  3718. }
  3719. }
  3720. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  3721. OutSpecialRepairflag = returnVal;
  3722. // 失败
  3723. if (result != Constant.INT_IS_ONE)
  3724. {
  3725. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  3726. }
  3727. // 成功返回null
  3728. return null;
  3729. }
  3730. /// <summary>
  3731. /// 添加生产数据
  3732. /// </summary>
  3733. /// <param name="oracleTrConn">连接对象</param>
  3734. /// <param name="accountDate">账务日期</param>
  3735. /// <param name="productionData">生产数据</param>
  3736. /// <param name="sUserInfo">用户基本信息</param>
  3737. /// <param name="isSendBody">是否交坯</param>
  3738. /// <returns>string</returns>
  3739. /// <remarks>
  3740. /// 陈冰 2014.09.18 新建
  3741. /// xuwei 2019-09-17 修改
  3742. /// </remarks>
  3743. private static string AddProductionDataDeliverMud(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag
  3744. , out DataSet outGroutingProduct, bool isSendBody = false)
  3745. {
  3746. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  3747. string selectSql = "";
  3748. string returnVal = "";
  3749. //xuwei fix 2019-09-23 修正非交坯时 productionData.GroutingDailyDetailID 为空无法得到结果
  3750. //改用 条码查询
  3751. //selectSql = @"select GroutingDate,
  3752. // ClassesSettingID,
  3753. // UserID as GroutingUserID,
  3754. // UserCode as GroutingUserCode,
  3755. // GroutingCount as GroutingNum,
  3756. // GroutingMouldCode,
  3757. // MouldCode,
  3758. // GroutingDailyID,
  3759. // GroutingDailyDetailID,
  3760. // GroutingLineID,
  3761. // GroutingLineCode,
  3762. // GroutingLineName,
  3763. // GroutingLineDetailID,
  3764. // SpecialRepairflag,
  3765. // goodsid,
  3766. // goodscode,
  3767. // goodsname,
  3768. // GMouldTypeID,
  3769. // CanManyTimes,
  3770. // LogoID
  3771. // from tp_pm_GroutingDailyDetail
  3772. // where tp_pm_GroutingDailyDetail.GroutingDailyDetailID=:GroutingDailyDetailID";
  3773. //OracleParameter[] selectparas1 = new OracleParameter[] {
  3774. // new OracleParameter(":GroutingDailyDetailID",productionData.GroutingDailyDetailID),
  3775. //};
  3776. selectSql = @"select GroutingDate,
  3777. ClassesSettingID,
  3778. UserID as GroutingUserID,
  3779. UserCode as GroutingUserCode,
  3780. GroutingCount as GroutingNum,
  3781. GroutingMouldCode,
  3782. MouldCode,
  3783. GroutingDailyID,
  3784. GroutingDailyDetailID,
  3785. GroutingLineID,
  3786. GroutingLineCode,
  3787. GroutingLineName,
  3788. GroutingLineDetailID,
  3789. SpecialRepairflag,
  3790. goodsid,
  3791. goodscode,
  3792. goodsname,
  3793. GMouldTypeID,
  3794. CanManyTimes,
  3795. LogoID
  3796. from tp_pm_GroutingDailyDetail
  3797. where tp_pm_GroutingDailyDetail.Barcode=:Barcode";
  3798. OracleParameter[] selectparas1 = new OracleParameter[] {
  3799. new OracleParameter(":Barcode",productionData.Barcode),
  3800. };
  3801. //xuwei fix end
  3802. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas1);
  3803. DateTime GroutingDate = new DateTime();
  3804. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  3805. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  3806. int? ClassesSettingID = null;
  3807. int? LogoID = null;
  3808. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  3809. {
  3810. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  3811. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  3812. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  3813. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  3814. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  3815. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  3816. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  3817. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  3818. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  3819. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  3820. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  3821. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  3822. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  3823. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  3824. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  3825. returnVal = SpecialRepairflag.ToString();
  3826. if (productionData.IsPublicBody.ToString() != "1")
  3827. ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  3828. else
  3829. ClassesSettingID = productionData.ClassesSettingID == null ? Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]) : productionData.ClassesSettingID;
  3830. if (dsGroutingProduct.Tables[0].Rows[0]["LogoID"] != DBNull.Value)
  3831. {
  3832. LogoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["LogoID"]);
  3833. }
  3834. //xuwei fix begin
  3835. //2019-09-17
  3836. //更新注浆日报(交坯处理)
  3837. if (isSendBody)
  3838. {
  3839. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  3840. OracleParameter[] paras2 = new OracleParameter[] {
  3841. new OracleParameter(":deliveruserid",productionData.UserID),
  3842. new OracleParameter(":deliverusercode",productionData.UserCode),
  3843. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  3844. };
  3845. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  3846. }
  3847. //更新 注浆日报 在产标识(BEGINNINGFLAG)
  3848. selectSql = "update TP_PM_GroutingDailyDetail set BEGINNINGFLAG = '1' where Barcode='" + productionData.Barcode + "'";
  3849. oracleTrConn.ExecuteNonQuery(selectSql);
  3850. //xuwei end
  3851. }
  3852. outGroutingProduct = dsGroutingProduct;
  3853. #endregion
  3854. #region 更新窑炉窑车属性
  3855. //if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  3856. //{
  3857. // DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  3858. // if (ds != null)
  3859. // {
  3860. // if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  3861. // {
  3862. // productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  3863. // productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  3864. // productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  3865. // productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  3866. // productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  3867. // productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  3868. // productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  3869. // productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  3870. // }
  3871. // }
  3872. //}
  3873. #endregion
  3874. #region SQL
  3875. string sql = "insert into tp_pm_productiondataIn"
  3876. + " (productiondataid,"
  3877. + " barcode,"
  3878. + " centralizedbatchno,"
  3879. + " productionlineid,"
  3880. + " productionlinecode,"
  3881. + " productionlinename,"
  3882. + " procedureid,"
  3883. + " procedurecode,"
  3884. + " procedurename,"
  3885. + " proceduremodel,"
  3886. + " modeltype,"
  3887. + " piecetype,"
  3888. + " isreworked,"
  3889. + " nodetype,"
  3890. + " ispublicbody,"
  3891. + " isrefire,"
  3892. + " organizationid,"
  3893. + " goodsid,"
  3894. + " goodscode,"
  3895. + " goodsname,"
  3896. + " userid,"
  3897. + " usercode,"
  3898. + " username,"
  3899. + " kilnid,"
  3900. + " kilncode,"
  3901. + " kilnname,"
  3902. + " kilncarid,"
  3903. + " kilncarcode,"
  3904. + " kilncarname,"
  3905. + " kilncarbatchno,"
  3906. + " kilncarposition,"
  3907. + " reworkprocedureid,"
  3908. + " reworkprocedurecode,"
  3909. + " reworkprocedurename,"
  3910. + " remarks,"
  3911. + " accountdate,"
  3912. + " accountid,"
  3913. + " GoodsLevelID,"
  3914. + " GoodsLevelTypeID,"
  3915. + " createuserid,"
  3916. + " updateuserid,"
  3917. + " GroutingDate,"
  3918. + " GroutingUserID,"
  3919. + " GroutingUserCode,"
  3920. + " GroutingNum,"
  3921. + " GroutingMouldCode,"
  3922. + " MouldCode,"
  3923. + "GroutingDailyID,"
  3924. + "GroutingDailyDetailID,"
  3925. + "GroutingLineID,"
  3926. + " GroutingLineCode,"
  3927. + "GroutingLineName,"
  3928. + "GMouldTypeID,"
  3929. + "CanManyTimes,"
  3930. + "GroutingLineDetailID,"
  3931. + "SpecialRepairflag,"
  3932. + "ClassesSettingID,"
  3933. + "LogoID"
  3934. + ")"
  3935. + " values"
  3936. + " (:productiondataid,"
  3937. + " :barcode,"
  3938. + " :centralizedbatchno,"
  3939. + " :productionlineid,"
  3940. + " :productionlinecode,"
  3941. + " :productionlinename,"
  3942. + " :procedureid,"
  3943. + " :procedurecode,"
  3944. + " :procedurename,"
  3945. + " :proceduremodel,"
  3946. + " :modeltype,"
  3947. + " :piecetype,"
  3948. + " :isreworked,"
  3949. + " :nodetype,"
  3950. + " :ispublicbody,"
  3951. + " :isrefire,"
  3952. + " :organizationid,"
  3953. + " :goodsid,"
  3954. + " :goodscode,"
  3955. + " :goodsname,"
  3956. + " :userid,"
  3957. + " :usercode,"
  3958. + " :username,"
  3959. + " :kilnid,"
  3960. + " :kilncode,"
  3961. + " :kilnname,"
  3962. + " :kilncarid,"
  3963. + " :kilncarcode,"
  3964. + " :kilncarname,"
  3965. + " :kilncarbatchno,"
  3966. + " :kilncarposition,"
  3967. + " :reworkprocedureid,"
  3968. + " :reworkprocedurecode,"
  3969. + " :reworkprocedurename,"
  3970. + " :remarks,"
  3971. + " :accountdata,"
  3972. + " :accountid,"
  3973. + " :GoodsLevelID,"
  3974. + " :GoodsLevelTypeID,"
  3975. + " :createuserid,"
  3976. + " :updateuserid,"
  3977. + " :groutingdate,"
  3978. + " :groutinguserid,"
  3979. + " :groutingusercode,"
  3980. + " :groutingnum,"
  3981. + " :groutingmouldcode,"
  3982. + " :mouldcode,"
  3983. + ":groutingdailyid,"
  3984. + ":groutingdailydetailid,"
  3985. + ":groutinglineid,"
  3986. + " :groutinglinecode,"
  3987. + ":groutinglinename,"
  3988. + ":gmouldtypeid,"
  3989. + ":canmanytimes,"
  3990. + ":groutinglinedetailid,"
  3991. + ":specialRepairflag,"
  3992. + ":classesSettingID,"
  3993. + ":LogoID"
  3994. + ")";
  3995. #endregion
  3996. #region OracleParameter
  3997. OracleParameter[] paras = new OracleParameter[] {
  3998. new OracleParameter(":classesSettingID",ClassesSettingID),
  3999. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4000. new OracleParameter(":barcode",productionData.Barcode),
  4001. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4002. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4003. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4004. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4005. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4006. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4007. new OracleParameter(":procedurename",productionData.ProcedureName),
  4008. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4009. new OracleParameter(":modeltype",productionData.ModelType),
  4010. new OracleParameter(":piecetype",productionData.PieceType),
  4011. new OracleParameter(":isreworked",productionData.IsReworked),
  4012. new OracleParameter(":nodetype",productionData.NodeType),
  4013. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4014. new OracleParameter(":isrefire",productionData.IsReFire),
  4015. new OracleParameter(":organizationid",productionData.OrganizationID),
  4016. new OracleParameter(":goodsid",productionData.GoodsID),
  4017. new OracleParameter(":goodscode",productionData.GoodsCode),
  4018. new OracleParameter(":goodsname",productionData.GoodsName),
  4019. new OracleParameter(":userid",productionData.UserID),
  4020. new OracleParameter(":usercode",productionData.UserCode),
  4021. new OracleParameter(":username",productionData.UserName),
  4022. new OracleParameter(":kilnid",productionData.KilnID),
  4023. new OracleParameter(":kilncode",productionData.KilnCode),
  4024. new OracleParameter(":kilnname",productionData.KilnName),
  4025. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4026. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4027. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4028. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4029. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4030. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4031. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4032. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4033. new OracleParameter(":remarks",productionData.Remarks),
  4034. new OracleParameter(":accountdata",accountDate),
  4035. new OracleParameter(":accountid",sUserInfo.AccountID),
  4036. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4037. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4038. new OracleParameter(":createuserid",sUserInfo.UserID),
  4039. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4040. new OracleParameter(":groutingdate",GroutingDate),
  4041. new OracleParameter(":groutinguserid",GroutingUserID),
  4042. new OracleParameter(":groutingusercode",GroutingUserCode),
  4043. new OracleParameter(":groutingnum",GroutingNum),
  4044. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4045. new OracleParameter(":mouldcode",MouldCode),
  4046. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4047. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4048. new OracleParameter(":groutinglineid",GroutingLineID),
  4049. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4050. new OracleParameter(":groutinglinename",GroutingLineName),
  4051. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4052. new OracleParameter(":canmanytimes",CanManyTimes),
  4053. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4054. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4055. new OracleParameter(":LogoID",LogoID),
  4056. };
  4057. #endregion
  4058. foreach (OracleParameter para in paras)
  4059. {
  4060. if (string.IsNullOrEmpty(para.Value + ""))
  4061. {
  4062. para.Value = DBNull.Value;
  4063. }
  4064. }
  4065. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4066. OutSpecialRepairflag = returnVal;
  4067. // 失败
  4068. if (result != Constant.INT_IS_ONE)
  4069. {
  4070. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4071. }
  4072. // 成功返回null
  4073. return null;
  4074. }
  4075. /// <summary>
  4076. /// 添加生产数据
  4077. /// </summary>
  4078. /// <param name="oracleTrConn">连接对象</param>
  4079. /// <param name="accountDate">账务日期</param>
  4080. /// <param name="productionData">生产数据</param>
  4081. /// <param name="sUserInfo">用户基本信息</param>
  4082. /// <param name="isSendBody">是否交坯</param>
  4083. /// <returns>string</returns>
  4084. /// <remarks>
  4085. /// 陈冰 2014.09.18 新建
  4086. /// </remarks>
  4087. private static string AddProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag, bool isSendBody = false)
  4088. {
  4089. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4090. string selectSql = "";
  4091. string returnVal = "";
  4092. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4093. {
  4094. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4095. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4096. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4097. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4098. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4099. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4100. // TP_PM_GroutingDailyDetail.MouldCode,
  4101. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4102. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4103. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4104. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4105. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4106. // TP_PM_GroutingDaily.GMouldTypeID,
  4107. // TP_PM_GroutingDaily.CanManyTimes,
  4108. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4109. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4110. // from TP_PM_GroutingDaily
  4111. // inner join TP_PM_GroutingDailyDetail
  4112. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4113. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4114. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4115. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4116. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4117. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4118. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4119. TP_PM_GroutingDailyDetail.MouldCode,
  4120. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4121. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4122. TP_PM_GroutingDailyDetail.GroutingLineID,
  4123. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4124. TP_PM_GroutingDailyDetail.GroutingLineName,
  4125. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4126. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4127. (select GMouldTypeID
  4128. from TP_PM_GroutingDaily
  4129. where TP_PM_GroutingDaily.GroutingDailyID =
  4130. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4131. (select CanManyTimes
  4132. from TP_PM_GroutingDaily
  4133. where TP_PM_GroutingDaily.GroutingDailyID =
  4134. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4135. 0 as IsReFire
  4136. from TP_PM_GroutingDailyDetail
  4137. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4138. }
  4139. else
  4140. {
  4141. //这地方连了两张表,为了成检的时候,次品在次新增
  4142. // selectSql = @"select
  4143. // GroutingDate,
  4144. // GroutingUserID,
  4145. // GroutingUserCode,
  4146. // GroutingNum,
  4147. // GroutingMouldCode,
  4148. // MouldCode,
  4149. // GroutingDailyID,
  4150. // GroutingDailyDetailID,
  4151. // GroutingLineID,
  4152. // GroutingLineCode,
  4153. // GroutingLineName,
  4154. // GMouldTypeID,
  4155. // CanManyTimes,
  4156. // GroutingLineDetailID,
  4157. // SpecialRepairflag,
  4158. // IsReFire
  4159. //
  4160. // from tp_pm_inproduction where barcode=:barcode
  4161. // union
  4162. // select
  4163. // GroutingDate,
  4164. // GroutingUserID,
  4165. // GroutingUserCode,
  4166. // GroutingNum,
  4167. // GroutingMouldCode,
  4168. // MouldCode,
  4169. // GroutingDailyID,
  4170. // GroutingDailyDetailID,
  4171. // GroutingLineID,
  4172. // GroutingLineCode,
  4173. // GroutingLineName,
  4174. // GMouldTypeID,
  4175. // CanManyTimes,
  4176. // GroutingLineDetailID,
  4177. // SpecialRepairflag,
  4178. // IsReFire
  4179. // from TP_PM_InProductionTrash where barcode=:barcode
  4180. // ";
  4181. selectSql = @"select
  4182. ip.GroutingDate,
  4183. ip.GroutingUserID,
  4184. ip.GroutingUserCode,
  4185. ip.GroutingNum,
  4186. ip.GroutingMouldCode,
  4187. ip.MouldCode,
  4188. ip.GroutingDailyID,
  4189. ip.GroutingDailyDetailID,
  4190. ip.GroutingLineID,
  4191. ip.GroutingLineCode,
  4192. ip.GroutingLineName,
  4193. ip.GMouldTypeID,
  4194. ip.CanManyTimes,
  4195. ip.GroutingLineDetailID,
  4196. ip.SpecialRepairflag,
  4197. ip.IsReFire,
  4198. ip.logoid,
  4199. gdd.ClassesSettingID
  4200. from tp_pm_inproduction ip inner join TP_PM_GroutingDailyDetail gdd on ip.GroutingDailyDetailID=gdd.GroutingDailyDetailID
  4201. where ip.barcode=:barcode
  4202. ";
  4203. }
  4204. OracleParameter[] selectparas = new OracleParameter[] {
  4205. new OracleParameter(":barcode",productionData.Barcode),
  4206. };
  4207. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4208. DateTime GroutingDate = new DateTime();
  4209. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4210. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4211. int IsReFire = 0;
  4212. int? logoID = null;
  4213. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4214. {
  4215. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4216. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4217. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4218. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4219. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4220. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4221. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4222. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4223. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4224. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4225. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4226. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4227. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4228. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4229. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4230. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4231. if (IsReFire > 0) //大于零代表重烧过
  4232. {
  4233. productionData.IsReFire = IsReFire;
  4234. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4235. }
  4236. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  4237. {
  4238. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  4239. }
  4240. //if (productionData.LogoID != null) //当前工序有商标
  4241. //{
  4242. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  4243. // {
  4244. // logoID = productionData.LogoID;
  4245. // //根据明细ID.update
  4246. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4247. // OracleParameter[] paras2 = new OracleParameter[] {
  4248. // new OracleParameter(":logoid",productionData.LogoID)
  4249. // };
  4250. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4251. // }
  4252. //}
  4253. //xuwei add begin
  4254. //2019-09-17
  4255. //更新注浆日报(交坯处理)
  4256. if (isSendBody)
  4257. {
  4258. if (productionData.IsPublicBody.ToString() != "1" || productionData.ClassesSettingID == null)
  4259. productionData.ClassesSettingID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["ClassesSettingID"]);
  4260. selectSql = "update TP_PM_GroutingDailyDetail set ispublicbody=:ispublicbody, DELIVERFLAG=1,DELIVERTIME=sysdate,deliveruserid=:deliveruserid,deliverusercode=:deliverusercode where GroutingDailyDetailID=" + GroutingDailyDetailID;
  4261. OracleParameter[] paras2 = new OracleParameter[] {
  4262. new OracleParameter(":deliveruserid",productionData.UserID),
  4263. new OracleParameter(":deliverusercode",productionData.UserCode),
  4264. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4265. };
  4266. oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  4267. }
  4268. returnVal = SpecialRepairflag.ToString();
  4269. }
  4270. #endregion
  4271. #region 更新窑炉窑车属性
  4272. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4273. {
  4274. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4275. if (ds != null)
  4276. {
  4277. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4278. {
  4279. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4280. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4281. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4282. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4283. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4284. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4285. //2022-04-22 modify 冷补不改变窑车批次号
  4286. ////xuwei fix 2020-06-15 冷补修改窑车批次号 不再取原批次号
  4287. //if (productionData.ModelType != 10)
  4288. //end
  4289. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4290. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4291. }
  4292. }
  4293. }
  4294. #endregion
  4295. #region SQL
  4296. string sql = "insert into tp_pm_productiondataIn"
  4297. + " (productiondataid,"
  4298. + " barcode,"
  4299. + " centralizedbatchno,"
  4300. + " productionlineid,"
  4301. + " productionlinecode,"
  4302. + " productionlinename,"
  4303. + " procedureid,"
  4304. + " procedurecode,"
  4305. + " procedurename,"
  4306. + " proceduremodel,"
  4307. + " modeltype,"
  4308. + " piecetype,"
  4309. + " isreworked,"
  4310. + " nodetype,"
  4311. + " ispublicbody,"
  4312. + " isrefire,"
  4313. + " islengbu,"
  4314. + " organizationid,"
  4315. + " goodsid,"
  4316. + " goodscode,"
  4317. + " goodsname,"
  4318. + " userid,"
  4319. + " usercode,"
  4320. + " username,"
  4321. + " kilnid,"
  4322. + " kilncode,"
  4323. + " kilnname,"
  4324. + " kilncarid,"
  4325. + " kilncarcode,"
  4326. + " kilncarname,"
  4327. + " kilncarbatchno,"
  4328. + " kilncarposition,"
  4329. + " reworkprocedureid,"
  4330. + " reworkprocedurecode,"
  4331. + " reworkprocedurename,"
  4332. + " remarks,"
  4333. + " accountdate,"
  4334. + " accountid,"
  4335. + " GoodsLevelID,"
  4336. + " GoodsLevelTypeID,"
  4337. + " createuserid,"
  4338. + " updateuserid,"
  4339. + " GroutingDate,"
  4340. + " GroutingUserID,"
  4341. + " GroutingUserCode,"
  4342. + " GroutingNum,"
  4343. + " GroutingMouldCode,"
  4344. + " MouldCode,"
  4345. + "GroutingDailyID,"
  4346. + "GroutingDailyDetailID,"
  4347. + "GroutingLineID,"
  4348. + " GroutingLineCode,"
  4349. + "GroutingLineName,"
  4350. + "GMouldTypeID,"
  4351. + "CanManyTimes,"
  4352. + "GroutingLineDetailID,"
  4353. + "SpecialRepairflag,"
  4354. + "ClassesSettingID,"
  4355. + "LogoID"
  4356. + ")"
  4357. + " values"
  4358. + " (:productiondataid,"
  4359. + " :barcode,"
  4360. + " :centralizedbatchno,"
  4361. + " :productionlineid,"
  4362. + " :productionlinecode,"
  4363. + " :productionlinename,"
  4364. + " :procedureid,"
  4365. + " :procedurecode,"
  4366. + " :procedurename,"
  4367. + " :proceduremodel,"
  4368. + " :modeltype,"
  4369. + " :piecetype,"
  4370. + " :isreworked,"
  4371. + " :nodetype,"
  4372. + " :ispublicbody,"
  4373. + " :isrefire,"
  4374. + " :islengbu,"
  4375. + " :organizationid,"
  4376. + " :goodsid,"
  4377. + " :goodscode,"
  4378. + " :goodsname,"
  4379. + " :userid,"
  4380. + " :usercode,"
  4381. + " :username,"
  4382. + " :kilnid,"
  4383. + " :kilncode,"
  4384. + " :kilnname,"
  4385. + " :kilncarid,"
  4386. + " :kilncarcode,"
  4387. + " :kilncarname,"
  4388. + " :kilncarbatchno,"
  4389. + " :kilncarposition,"
  4390. + " :reworkprocedureid,"
  4391. + " :reworkprocedurecode,"
  4392. + " :reworkprocedurename,"
  4393. + " :remarks,"
  4394. + " :accountdata,"
  4395. + " :accountid,"
  4396. + " :GoodsLevelID,"
  4397. + " :GoodsLevelTypeID,"
  4398. + " :createuserid,"
  4399. + " :updateuserid,"
  4400. + " :groutingdate,"
  4401. + " :groutinguserid,"
  4402. + " :groutingusercode,"
  4403. + " :groutingnum,"
  4404. + " :groutingmouldcode,"
  4405. + " :mouldcode,"
  4406. + ":groutingdailyid,"
  4407. + ":groutingdailydetailid,"
  4408. + ":groutinglineid,"
  4409. + " :groutinglinecode,"
  4410. + ":groutinglinename,"
  4411. + ":gmouldtypeid,"
  4412. + ":canmanytimes,"
  4413. + ":groutinglinedetailid,"
  4414. + ":specialRepairflag,"
  4415. + ":classesSettingID,"
  4416. + ":logoID"
  4417. + ")";
  4418. #endregion
  4419. #region OracleParameter
  4420. OracleParameter[] paras = new OracleParameter[] {
  4421. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4422. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4423. new OracleParameter(":barcode",productionData.Barcode),
  4424. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4425. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4426. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4427. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4428. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4429. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4430. new OracleParameter(":procedurename",productionData.ProcedureName),
  4431. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4432. new OracleParameter(":modeltype",productionData.ModelType),
  4433. new OracleParameter(":piecetype",productionData.PieceType),
  4434. new OracleParameter(":isreworked",productionData.IsReworked),
  4435. new OracleParameter(":nodetype",productionData.NodeType),
  4436. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4437. new OracleParameter(":isrefire",productionData.IsReFire),
  4438. new OracleParameter(":islengbu",productionData.IsLengBu),
  4439. new OracleParameter(":organizationid",productionData.OrganizationID),
  4440. new OracleParameter(":goodsid",productionData.GoodsID),
  4441. new OracleParameter(":goodscode",productionData.GoodsCode),
  4442. new OracleParameter(":goodsname",productionData.GoodsName),
  4443. new OracleParameter(":userid",productionData.UserID),
  4444. new OracleParameter(":usercode",productionData.UserCode),
  4445. new OracleParameter(":username",productionData.UserName),
  4446. new OracleParameter(":kilnid",productionData.KilnID),
  4447. new OracleParameter(":kilncode",productionData.KilnCode),
  4448. new OracleParameter(":kilnname",productionData.KilnName),
  4449. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4450. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4451. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4452. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4453. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4454. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4455. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4456. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4457. new OracleParameter(":remarks",productionData.Remarks),
  4458. new OracleParameter(":accountdata",accountDate),
  4459. new OracleParameter(":accountid",sUserInfo.AccountID),
  4460. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4461. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4462. new OracleParameter(":createuserid",sUserInfo.UserID),
  4463. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4464. new OracleParameter(":groutingdate",GroutingDate),
  4465. new OracleParameter(":groutinguserid",GroutingUserID),
  4466. new OracleParameter(":groutingusercode",GroutingUserCode),
  4467. new OracleParameter(":groutingnum",GroutingNum),
  4468. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4469. new OracleParameter(":mouldcode",MouldCode),
  4470. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4471. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4472. new OracleParameter(":groutinglineid",GroutingLineID),
  4473. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4474. new OracleParameter(":groutinglinename",GroutingLineName),
  4475. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4476. new OracleParameter(":canmanytimes",CanManyTimes),
  4477. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4478. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4479. new OracleParameter(":logoID",logoID),
  4480. };
  4481. #endregion
  4482. foreach (OracleParameter para in paras)
  4483. {
  4484. if (string.IsNullOrEmpty(para.Value + ""))
  4485. {
  4486. para.Value = DBNull.Value;
  4487. }
  4488. }
  4489. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4490. OutSpecialRepairflag = returnVal;
  4491. // 失败
  4492. if (result != Constant.INT_IS_ONE)
  4493. {
  4494. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4495. }
  4496. // 成功返回null
  4497. return null;
  4498. }
  4499. /// <summary>
  4500. /// 添加生产数据(单独为成检所做,因为成检可以从次品到其它,需要读一标识,别的不需要连接回收站表)
  4501. /// </summary>
  4502. /// <param name="oracleTrConn">连接对象</param>
  4503. /// <param name="accountDate">账务日期</param>
  4504. /// <param name="productionData">生产数据</param>
  4505. /// <param name="sUserInfo">用户基本信息</param>
  4506. /// <returns>string</returns>
  4507. /// <remarks>
  4508. /// 陈冰 2014.09.18 新建
  4509. /// </remarks>
  4510. private static string AddFinishCheckProductionData(int finishedCheckProcedureID,IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  4511. {
  4512. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  4513. string selectSql = "";
  4514. string returnVal = "";
  4515. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  4516. {
  4517. // wangxin 20150409 删除掉TP_PM_GroutingProduct表后,进行的修改
  4518. // selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  4519. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4520. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4521. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4522. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4523. // TP_PM_GroutingDailyDetail.MouldCode,
  4524. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  4525. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4526. // TP_PM_GroutingDailyDetail.GroutingLineID,
  4527. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  4528. // TP_PM_GroutingDailyDetail.GroutingLineName,
  4529. // TP_PM_GroutingDaily.GMouldTypeID,
  4530. // TP_PM_GroutingDaily.CanManyTimes,
  4531. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4532. // TP_PM_GroutingDailyDetail.SpecialRepairflag
  4533. // from TP_PM_GroutingDaily
  4534. // inner join TP_PM_GroutingDailyDetail
  4535. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  4536. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4537. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  4538. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  4539. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  4540. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  4541. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  4542. TP_PM_GroutingDailyDetail.MouldCode,
  4543. TP_PM_GroutingDailyDetail.GroutingDailyID,
  4544. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  4545. TP_PM_GroutingDailyDetail.GroutingLineID,
  4546. TP_PM_GroutingDailyDetail.GroutingLineCode,
  4547. TP_PM_GroutingDailyDetail.GroutingLineName,
  4548. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  4549. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  4550. TP_PM_GroutingDailyDetail.LOGOID,
  4551. (select GMouldTypeID
  4552. from TP_PM_GroutingDaily
  4553. where TP_PM_GroutingDaily.GroutingDailyID =
  4554. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  4555. (select CanManyTimes
  4556. from TP_PM_GroutingDaily
  4557. where TP_PM_GroutingDaily.GroutingDailyID =
  4558. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  4559. 0 as IsReFire
  4560. from TP_PM_GroutingDailyDetail
  4561. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  4562. }
  4563. else
  4564. {
  4565. //这地方连了两张表,为了成检的时候,次品在次新增
  4566. selectSql = @"select
  4567. GroutingDate,
  4568. GroutingUserID,
  4569. GroutingUserCode,
  4570. GroutingNum,
  4571. GroutingMouldCode,
  4572. MouldCode,
  4573. GroutingDailyID,
  4574. GroutingDailyDetailID,
  4575. GroutingLineID,
  4576. GroutingLineCode,
  4577. GroutingLineName,
  4578. GMouldTypeID,
  4579. CanManyTimes,
  4580. GroutingLineDetailID,
  4581. SpecialRepairflag,
  4582. IsReFire,
  4583. Logoid
  4584. from tp_pm_inproduction where barcode=:barcode
  4585. union
  4586. select
  4587. GroutingDate,
  4588. GroutingUserID,
  4589. GroutingUserCode,
  4590. GroutingNum,
  4591. GroutingMouldCode,
  4592. MouldCode,
  4593. GroutingDailyID,
  4594. GroutingDailyDetailID,
  4595. GroutingLineID,
  4596. GroutingLineCode,
  4597. GroutingLineName,
  4598. GMouldTypeID,
  4599. CanManyTimes,
  4600. GroutingLineDetailID,
  4601. SpecialRepairflag,
  4602. IsReFire,
  4603. logoid
  4604. from TP_PM_InProductionTrash where barcode=:barcode
  4605. ";
  4606. }
  4607. OracleParameter[] selectparas = new OracleParameter[] {
  4608. new OracleParameter(":barcode",productionData.Barcode),
  4609. };
  4610. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  4611. DateTime GroutingDate = new DateTime();
  4612. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  4613. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  4614. int IsReFire = 0;
  4615. int? logoid = null;
  4616. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  4617. {
  4618. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  4619. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  4620. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  4621. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  4622. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  4623. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  4624. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  4625. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  4626. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  4627. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  4628. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  4629. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  4630. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  4631. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  4632. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  4633. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  4634. if (dsGroutingProduct.Tables[0].Rows[0]["logoid"].ToString() != "")
  4635. {
  4636. logoid = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoid"]);
  4637. }
  4638. if (IsReFire > 0) //大于零代表重烧过
  4639. {
  4640. productionData.IsReFire = IsReFire;
  4641. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  4642. }
  4643. returnVal = SpecialRepairflag.ToString();
  4644. }
  4645. #endregion
  4646. #region 更新窑炉窑车属性
  4647. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  4648. {
  4649. DataSet ds = GetFinishCheckKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  4650. if (ds != null)
  4651. {
  4652. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  4653. {
  4654. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  4655. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  4656. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  4657. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  4658. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  4659. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  4660. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  4661. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  4662. }
  4663. }
  4664. }
  4665. #endregion
  4666. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 6) //判断重烧必须有返工工序
  4667. {
  4668. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4669. {
  4670. OutSpecialRepairflag = "";
  4671. return string.Format("产品分级【重烧】必须填写返工工序", "条码", "保存");
  4672. }
  4673. }
  4674. if (Convert.ToInt32(productionData.GoodsLevelTypeID) == 16) //判断冷补必须有返工工序
  4675. {
  4676. if (productionData.ReworkProcedureID == null || Convert.ToInt32(productionData.ReworkProcedureID) == 0)
  4677. {
  4678. OutSpecialRepairflag = "";
  4679. return string.Format("产品分级【冷补】必须填写返工工序", "条码", "保存");
  4680. }
  4681. }
  4682. DateTime? checkTime = null;
  4683. if (productionData.IsPDA != null)
  4684. {
  4685. if (productionData.PDACheckTime != null)
  4686. {
  4687. // PDA端
  4688. if (productionData.PDACheckTime.ToString() != string.Empty)
  4689. {
  4690. checkTime = Convert.ToDateTime(productionData.PDACheckTime);
  4691. }
  4692. }
  4693. }
  4694. else
  4695. {
  4696. if (productionData.CheckTime != null)
  4697. {
  4698. // PDA端
  4699. if (productionData.CheckTime.ToString() != string.Empty)
  4700. {
  4701. checkTime = Convert.ToDateTime(productionData.CheckTime);
  4702. }
  4703. }
  4704. }
  4705. #region SQL
  4706. string sql = "insert into tp_pm_productiondataIn"
  4707. + " (productiondataid,"
  4708. + " barcode,"
  4709. + " centralizedbatchno,"
  4710. + " productionlineid,"
  4711. + " productionlinecode,"
  4712. + " productionlinename,"
  4713. + " procedureid,"
  4714. + " procedurecode,"
  4715. + " procedurename,"
  4716. + " proceduremodel,"
  4717. + " modeltype,"
  4718. + " piecetype,"
  4719. + " isreworked,"
  4720. + " nodetype,"
  4721. + " ispublicbody,"
  4722. + " isrefire,"
  4723. + " islengbu,"
  4724. + " organizationid,"
  4725. + " goodsid,"
  4726. + " goodscode,"
  4727. + " goodsname,"
  4728. + " userid,"
  4729. + " usercode,"
  4730. + " username,"
  4731. + " kilnid,"
  4732. + " kilncode,"
  4733. + " kilnname,"
  4734. + " kilncarid,"
  4735. + " kilncarcode,"
  4736. + " kilncarname,"
  4737. + " kilncarbatchno,"
  4738. + " kilncarposition,"
  4739. + " reworkprocedureid,"
  4740. + " reworkprocedurecode,"
  4741. + " reworkprocedurename,"
  4742. + " remarks,"
  4743. + " accountdate,"
  4744. + " accountid,"
  4745. + " GoodsLevelID,"
  4746. + " GoodsLevelTypeID,"
  4747. + " createuserid,"
  4748. + " updateuserid,"
  4749. + " GroutingDate,"
  4750. + " GroutingUserID,"
  4751. + " GroutingUserCode,"
  4752. + " GroutingNum,"
  4753. + " GroutingMouldCode,"
  4754. + " MouldCode,"
  4755. + "GroutingDailyID,"
  4756. + "GroutingDailyDetailID,"
  4757. + "GroutingLineID,"
  4758. + " GroutingLineCode,"
  4759. + "GroutingLineName,"
  4760. + "GMouldTypeID,"
  4761. + "CanManyTimes,"
  4762. + "GroutingLineDetailID,"
  4763. + "SpecialRepairflag,"
  4764. + "ClassesSettingID,"
  4765. + "LogoID,"
  4766. + "CheckTime,"
  4767. + "finishedprocedureid"
  4768. + ")"
  4769. + " values"
  4770. + " (:productiondataid,"
  4771. + " :barcode,"
  4772. + " :centralizedbatchno,"
  4773. + " :productionlineid,"
  4774. + " :productionlinecode,"
  4775. + " :productionlinename,"
  4776. + " :procedureid,"
  4777. + " :procedurecode,"
  4778. + " :procedurename,"
  4779. + " :proceduremodel,"
  4780. + " :modeltype,"
  4781. + " :piecetype,"
  4782. + " :isreworked,"
  4783. + " :nodetype,"
  4784. + " :ispublicbody,"
  4785. + " :isrefire,"
  4786. + " :islengbu,"
  4787. + " :organizationid,"
  4788. + " :goodsid,"
  4789. + " :goodscode,"
  4790. + " :goodsname,"
  4791. + " :userid,"
  4792. + " :usercode,"
  4793. + " :username,"
  4794. + " :kilnid,"
  4795. + " :kilncode,"
  4796. + " :kilnname,"
  4797. + " :kilncarid,"
  4798. + " :kilncarcode,"
  4799. + " :kilncarname,"
  4800. + " :kilncarbatchno,"
  4801. + " :kilncarposition,"
  4802. + " :reworkprocedureid,"
  4803. + " :reworkprocedurecode,"
  4804. + " :reworkprocedurename,"
  4805. + " :remarks,"
  4806. + " :accountdata,"
  4807. + " :accountid,"
  4808. + " :GoodsLevelID,"
  4809. + " :GoodsLevelTypeID,"
  4810. + " :createuserid,"
  4811. + " :updateuserid,"
  4812. + " :groutingdate,"
  4813. + " :groutinguserid,"
  4814. + " :groutingusercode,"
  4815. + " :groutingnum,"
  4816. + " :groutingmouldcode,"
  4817. + " :mouldcode,"
  4818. + ":groutingdailyid,"
  4819. + ":groutingdailydetailid,"
  4820. + ":groutinglineid,"
  4821. + " :groutinglinecode,"
  4822. + ":groutinglinename,"
  4823. + ":gmouldtypeid,"
  4824. + ":canmanytimes,"
  4825. + ":groutinglinedetailid,"
  4826. + ":specialRepairflag,"
  4827. + ":classesSettingID,"
  4828. + ":logoid,";
  4829. if (checkTime == null)
  4830. {
  4831. sql = sql + "sysdate,"
  4832. + ":finishedprocedureid";
  4833. }
  4834. else
  4835. {
  4836. sql = sql + ":checkTime,"
  4837. + ":finishedprocedureid";
  4838. }
  4839. sql = sql + ")";
  4840. #endregion
  4841. #region OracleParameter
  4842. OracleParameter[] paras = null;
  4843. if (checkTime != null)
  4844. {
  4845. paras = new OracleParameter[] {
  4846. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4847. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4848. new OracleParameter(":barcode",productionData.Barcode),
  4849. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4850. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4851. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4852. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4853. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4854. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4855. new OracleParameter(":procedurename",productionData.ProcedureName),
  4856. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4857. new OracleParameter(":modeltype",productionData.ModelType),
  4858. new OracleParameter(":piecetype",productionData.PieceType),
  4859. new OracleParameter(":isreworked",productionData.IsReworked),
  4860. new OracleParameter(":nodetype",productionData.NodeType),
  4861. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4862. new OracleParameter(":isrefire",productionData.IsReFire),
  4863. new OracleParameter(":islengbu",productionData.IsLengBu),
  4864. new OracleParameter(":organizationid",productionData.OrganizationID),
  4865. new OracleParameter(":goodsid",productionData.GoodsID),
  4866. new OracleParameter(":goodscode",productionData.GoodsCode),
  4867. new OracleParameter(":goodsname",productionData.GoodsName),
  4868. new OracleParameter(":userid",productionData.UserID),
  4869. new OracleParameter(":usercode",productionData.UserCode),
  4870. new OracleParameter(":username",productionData.UserName),
  4871. new OracleParameter(":kilnid",productionData.KilnID),
  4872. new OracleParameter(":kilncode",productionData.KilnCode),
  4873. new OracleParameter(":kilnname",productionData.KilnName),
  4874. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4875. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4876. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4877. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4878. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4879. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4880. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4881. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4882. new OracleParameter(":remarks",productionData.Remarks),
  4883. new OracleParameter(":accountdata",accountDate),
  4884. new OracleParameter(":accountid",sUserInfo.AccountID),
  4885. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4886. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4887. new OracleParameter(":createuserid",sUserInfo.UserID),
  4888. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4889. new OracleParameter(":groutingdate",GroutingDate),
  4890. new OracleParameter(":groutinguserid",GroutingUserID),
  4891. new OracleParameter(":groutingusercode",GroutingUserCode),
  4892. new OracleParameter(":groutingnum",GroutingNum),
  4893. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4894. new OracleParameter(":mouldcode",MouldCode),
  4895. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4896. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4897. new OracleParameter(":groutinglineid",GroutingLineID),
  4898. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4899. new OracleParameter(":groutinglinename",GroutingLineName),
  4900. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4901. new OracleParameter(":canmanytimes",CanManyTimes),
  4902. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4903. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4904. new OracleParameter(":logoid",logoid),
  4905. new OracleParameter(":checkTime",checkTime),
  4906. new OracleParameter(":finishedprocedureid",finishedCheckProcedureID),
  4907. };
  4908. }
  4909. else
  4910. {
  4911. paras = new OracleParameter[] {
  4912. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  4913. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  4914. new OracleParameter(":barcode",productionData.Barcode),
  4915. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  4916. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  4917. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  4918. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  4919. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  4920. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  4921. new OracleParameter(":procedurename",productionData.ProcedureName),
  4922. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  4923. new OracleParameter(":modeltype",productionData.ModelType),
  4924. new OracleParameter(":piecetype",productionData.PieceType),
  4925. new OracleParameter(":isreworked",productionData.IsReworked),
  4926. new OracleParameter(":nodetype",productionData.NodeType),
  4927. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  4928. new OracleParameter(":isrefire",productionData.IsReFire),
  4929. new OracleParameter(":islengbu",productionData.IsLengBu),
  4930. new OracleParameter(":organizationid",productionData.OrganizationID),
  4931. new OracleParameter(":goodsid",productionData.GoodsID),
  4932. new OracleParameter(":goodscode",productionData.GoodsCode),
  4933. new OracleParameter(":goodsname",productionData.GoodsName),
  4934. new OracleParameter(":userid",productionData.UserID),
  4935. new OracleParameter(":usercode",productionData.UserCode),
  4936. new OracleParameter(":username",productionData.UserName),
  4937. new OracleParameter(":kilnid",productionData.KilnID),
  4938. new OracleParameter(":kilncode",productionData.KilnCode),
  4939. new OracleParameter(":kilnname",productionData.KilnName),
  4940. new OracleParameter(":kilncarid",productionData.KilnCarID),
  4941. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  4942. new OracleParameter(":kilncarname",productionData.KilnCarName),
  4943. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  4944. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  4945. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  4946. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  4947. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  4948. new OracleParameter(":remarks",productionData.Remarks),
  4949. new OracleParameter(":accountdata",accountDate),
  4950. new OracleParameter(":accountid",sUserInfo.AccountID),
  4951. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  4952. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  4953. new OracleParameter(":createuserid",sUserInfo.UserID),
  4954. new OracleParameter(":updateuserid",sUserInfo.UserID),
  4955. new OracleParameter(":groutingdate",GroutingDate),
  4956. new OracleParameter(":groutinguserid",GroutingUserID),
  4957. new OracleParameter(":groutingusercode",GroutingUserCode),
  4958. new OracleParameter(":groutingnum",GroutingNum),
  4959. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  4960. new OracleParameter(":mouldcode",MouldCode),
  4961. new OracleParameter(":groutingdailyid",GroutingDailyID),
  4962. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  4963. new OracleParameter(":groutinglineid",GroutingLineID),
  4964. new OracleParameter(":groutinglinecode",GroutingLineCode),
  4965. new OracleParameter(":groutinglinename",GroutingLineName),
  4966. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  4967. new OracleParameter(":canmanytimes",CanManyTimes),
  4968. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  4969. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  4970. new OracleParameter(":logoid",logoid),
  4971. new OracleParameter(":finishedprocedureid",finishedCheckProcedureID),
  4972. };
  4973. }
  4974. #endregion
  4975. foreach (OracleParameter para in paras)
  4976. {
  4977. if (string.IsNullOrEmpty(para.Value + ""))
  4978. {
  4979. para.Value = DBNull.Value;
  4980. }
  4981. }
  4982. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  4983. OutSpecialRepairflag = returnVal;
  4984. // 失败
  4985. if (result != Constant.INT_IS_ONE)
  4986. {
  4987. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  4988. }
  4989. // 成功返回null
  4990. return null;
  4991. }
  4992. /// <summary>
  4993. /// 删除在产数据
  4994. /// </summary>
  4995. /// <param name="oracleTrConn">连接对象</param>
  4996. /// <param name="delInProductionEntity">在产数据对象</param>
  4997. /// <returns>string</returns>
  4998. /// <remarks>
  4999. /// 陈冰 2014.09.18 新建
  5000. /// </remarks>
  5001. private static string DeleteInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  5002. {
  5003. OracleParameter[] paras = new OracleParameter[] {
  5004. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5005. };
  5006. int result = 0;
  5007. //删除在产表之前,插入到产品回收表中
  5008. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  5009. {
  5010. OracleParameter[] parasPDA = new OracleParameter[] {
  5011. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5012. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5013. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5014. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  5015. };
  5016. string sqlInsert = @"insert into TP_PM_InProductionTrash
  5017. (
  5018. BarCode,
  5019. ProductionLineID,
  5020. ProductionLineCode,
  5021. ProductionLineName,
  5022. ProcedureModel,
  5023. ModelType,
  5024. DefectFlag,
  5025. ReworkProcedureID,
  5026. IsPublicBody,
  5027. IsReFire,
  5028. GoodsLevelID,
  5029. GoodsLevelTypeID,
  5030. GoodsID,
  5031. GoodsCode,
  5032. GoodsName,
  5033. UserID,
  5034. GroutingDailyID,
  5035. GroutingDailyDetailID,
  5036. GroutingDate,
  5037. GroutingLineID,
  5038. GroutingLineCode,
  5039. GroutingLineName,
  5040. GMouldTypeID,
  5041. CanManyTimes,
  5042. GroutingLineDetailID,
  5043. GroutingMouldCode,
  5044. MouldCode,
  5045. GroutingUserID,
  5046. GroutingUserCode,
  5047. GroutingNum,
  5048. Remarks,
  5049. KilnID,
  5050. KilnCode,
  5051. KilnName,
  5052. KilnCarID,
  5053. KilnCarCode,
  5054. KilnCarName,
  5055. KilnCarBatchNo,
  5056. KilnCarPosition,
  5057. AccountID,
  5058. ValueFlag,
  5059. CreateTime,
  5060. CreateUserID,
  5061. UpdateUserID,
  5062. SpecialRepairflag,
  5063. FlowProcedureID,
  5064. FlowProcedureTime,
  5065. ProcedureID,
  5066. ProcedureTime,
  5067. ProductionDataID,
  5068. logoid, ISREWORKFLAG, SEMICHECKID
  5069. )
  5070. select
  5071. BarCode,
  5072. ProductionLineID,
  5073. ProductionLineCode,
  5074. ProductionLineName,
  5075. ProcedureModel,
  5076. ModelType,
  5077. DefectFlag,
  5078. ReworkProcedureID,
  5079. IsPublicBody,
  5080. IsReFire,
  5081. GoodsLevelID,
  5082. GoodsLevelTypeID,
  5083. GoodsID,
  5084. GoodsCode,
  5085. GoodsName,
  5086. UserID,
  5087. GroutingDailyID,
  5088. GroutingDailyDetailID,
  5089. GroutingDate,
  5090. GroutingLineID,
  5091. GroutingLineCode,
  5092. GroutingLineName,
  5093. GMouldTypeID,
  5094. CanManyTimes,
  5095. GroutingLineDetailID,
  5096. GroutingMouldCode,
  5097. MouldCode,
  5098. GroutingUserID,
  5099. GroutingUserCode,
  5100. GroutingNum,
  5101. Remarks,
  5102. KilnID,
  5103. KilnCode,
  5104. KilnName,
  5105. KilnCarID,
  5106. KilnCarCode,
  5107. KilnCarName,
  5108. KilnCarBatchNo,
  5109. KilnCarPosition,
  5110. AccountID,
  5111. ValueFlag,
  5112. CreateTime,
  5113. :CreateUserID,
  5114. :UpdateUserID,
  5115. SpecialRepairflag,
  5116. :FlowProcedureID,
  5117. FlowProcedureTime,
  5118. :FlowProcedureID,
  5119. ProcedureTime,
  5120. ProductionDataID,
  5121. logoid, ISREWORKFLAG, SEMICHECKID
  5122. from TP_PM_InProduction
  5123. where barcode=:barcode
  5124. ";
  5125. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  5126. }
  5127. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  5128. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  5129. // 删除失败
  5130. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  5131. if (result == Constant.INT_IS_ZERO)
  5132. {
  5133. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5134. }
  5135. // 成功返回null
  5136. return null;
  5137. }
  5138. /// <summary>
  5139. /// 删除在产数据
  5140. /// </summary>
  5141. /// <param name="oracleTrConn">连接对象</param>
  5142. /// <param name="delInProductionEntity">在产数据对象</param>
  5143. /// <returns>string</returns>
  5144. /// <remarks>
  5145. /// 陈冰 2014.09.18 新建
  5146. /// </remarks>
  5147. private static string DeletePDAInProduction(IDBTransaction oracleTrConn, InProductionEntity delInProductionEntity, bool FinishedProduct, SUserInfo sUserInfo)
  5148. {
  5149. OracleParameter[] paras = new OracleParameter[] {
  5150. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5151. };
  5152. int result = 0;
  5153. //删除在产表之前,插入到产品回收表中
  5154. if (!FinishedProduct)//如果不是产成品的时候,就是报废,产成品的时候不添加这个表里,只删除在产数据
  5155. {
  5156. OracleParameter[] parasPDA = new OracleParameter[] {
  5157. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5158. new OracleParameter(":FlowProcedureID",delInProductionEntity.CompleteProcedureID),
  5159. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5160. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  5161. new OracleParameter(":ProductionDataID",OracleDbType.Int32,delInProductionEntity.ProductionDataID,ParameterDirection.Input),
  5162. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,delInProductionEntity.GoodsLevelID,ParameterDirection.Input),
  5163. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,delInProductionEntity.GoodsLevelTypeID,ParameterDirection.Input),
  5164. };
  5165. //删除在产表前,在产表生产数据ID更新下,如不更新这样就不准了,例如,次品到次品 第一次不会影响,因为第一次TP_PM_InProductionTrash表里没有
  5166. // 如果第二次走次品到次品,才有效,下面的sqlInsert则没有效,因为在产表里没有数据插入不到回收表
  5167. string sqlupdate = "update TP_PM_InProductionTrash set ProductionDataID=:ProductionDataID where barcode=:barcode";
  5168. OracleParameter[] parasupdate = new OracleParameter[] {
  5169. new OracleParameter(":barcode",delInProductionEntity.BarCode),
  5170. new OracleParameter(":ProductionDataID",delInProductionEntity.ProductionDataID),
  5171. };
  5172. oracleTrConn.ExecuteNonQuery(sqlupdate, parasupdate);
  5173. string sqlInsert = @"insert into TP_PM_InProductionTrash
  5174. (
  5175. BarCode,
  5176. ProductionLineID,
  5177. ProductionLineCode,
  5178. ProductionLineName,
  5179. ProcedureModel,
  5180. ModelType,
  5181. DefectFlag,
  5182. ReworkProcedureID,
  5183. IsPublicBody,
  5184. IsReFire,
  5185. GoodsLevelID,
  5186. GoodsLevelTypeID,
  5187. GoodsID,
  5188. GoodsCode,
  5189. GoodsName,
  5190. UserID,
  5191. GroutingDailyID,
  5192. GroutingDailyDetailID,
  5193. GroutingDate,
  5194. GroutingLineID,
  5195. GroutingLineCode,
  5196. GroutingLineName,
  5197. GMouldTypeID,
  5198. CanManyTimes,
  5199. GroutingLineDetailID,
  5200. GroutingMouldCode,
  5201. MouldCode,
  5202. GroutingUserID,
  5203. GroutingUserCode,
  5204. GroutingNum,
  5205. Remarks,
  5206. KilnID,
  5207. KilnCode,
  5208. KilnName,
  5209. KilnCarID,
  5210. KilnCarCode,
  5211. KilnCarName,
  5212. KilnCarBatchNo,
  5213. KilnCarPosition,
  5214. AccountID,
  5215. ValueFlag,
  5216. CreateUserID,
  5217. UpdateUserID,
  5218. SpecialRepairflag,
  5219. FlowProcedureID,
  5220. FlowProcedureTime,
  5221. ProcedureID,
  5222. ProcedureTime,
  5223. ProductionDataID,
  5224. logoid, ISREWORKFLAG, SEMICHECKID
  5225. )
  5226. select
  5227. BarCode,
  5228. ProductionLineID,
  5229. ProductionLineCode,
  5230. ProductionLineName,
  5231. ProcedureModel,
  5232. ModelType,
  5233. DefectFlag,
  5234. ReworkProcedureID,
  5235. IsPublicBody,
  5236. IsReFire,
  5237. :GoodsLevelID,
  5238. :GoodsLevelTypeID,
  5239. GoodsID,
  5240. GoodsCode,
  5241. GoodsName,
  5242. UserID,
  5243. GroutingDailyID,
  5244. GroutingDailyDetailID,
  5245. GroutingDate,
  5246. GroutingLineID,
  5247. GroutingLineCode,
  5248. GroutingLineName,
  5249. GMouldTypeID,
  5250. CanManyTimes,
  5251. GroutingLineDetailID,
  5252. GroutingMouldCode,
  5253. MouldCode,
  5254. GroutingUserID,
  5255. GroutingUserCode,
  5256. GroutingNum,
  5257. Remarks,
  5258. KilnID,
  5259. KilnCode,
  5260. KilnName,
  5261. KilnCarID,
  5262. KilnCarCode,
  5263. KilnCarName,
  5264. KilnCarBatchNo,
  5265. KilnCarPosition,
  5266. AccountID,
  5267. ValueFlag,
  5268. :CreateUserID,
  5269. :UpdateUserID,
  5270. SpecialRepairflag,
  5271. :FlowProcedureID,
  5272. FlowProcedureTime,
  5273. :FlowProcedureID,
  5274. ProcedureTime,
  5275. :ProductionDataID,
  5276. logoid, ISREWORKFLAG, SEMICHECKID
  5277. from TP_PM_InProduction
  5278. where barcode=:barcode
  5279. ";
  5280. result = oracleTrConn.ExecuteNonQuery(sqlInsert, parasPDA);
  5281. }
  5282. string sql = "delete tp_pm_inproduction where barcode = :barcode";
  5283. result += oracleTrConn.ExecuteNonQuery(sql, paras);
  5284. // 删除失败
  5285. //if (result != Constant.INT_IS_TWO)//删除在产的同时,应该往产品加收表里插入,这样就是影响行数为2,以前是1
  5286. if (result == Constant.INT_IS_ZERO)
  5287. {
  5288. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5289. }
  5290. // 成功返回null
  5291. return null;
  5292. }
  5293. /// <summary>
  5294. /// 根据窑车ID 删除窑车产品
  5295. /// </summary>
  5296. /// <param name="oracleTrConn">数据连接</param>
  5297. /// <param name="pKilnCarID">窑车ID</param>
  5298. /// <returns>
  5299. /// 张国印 2014.10.04 新建
  5300. /// </returns>
  5301. private static string DeleteKilnCarGoodsByKilnCarID(IDBTransaction oracleTrConn, int pKilnCarID)
  5302. {
  5303. string sql = "delete TP_PM_KilnCarGoods where KilnCarID = :pKilnCarID";
  5304. OracleParameter[] paras = new OracleParameter[] {
  5305. new OracleParameter(":pKilnCarID", OracleDbType.Int32, pKilnCarID, ParameterDirection.Input),
  5306. };
  5307. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5308. // 删除失败
  5309. if (result <= Constant.INT_IS_ZERO)
  5310. {
  5311. return string.Format(Messages.MSG_CMN_W001, "窑车产品", "保存");
  5312. }
  5313. // 成功返回null
  5314. return null;
  5315. }
  5316. /// <summary>
  5317. /// 添加产成品
  5318. /// </summary>
  5319. /// <param name="oracleTrConn">连接对象</param>
  5320. /// <param name="finishedProduct">产成品对象</param>
  5321. /// <param name="sUserInfo">用户基本信息</param>
  5322. /// <returns>string</returns>
  5323. /// <remarks>
  5324. /// 陈冰 2014.09.18 新建
  5325. /// </remarks>
  5326. private static string AddFinishedProduct(IDBTransaction oracleTrConn,
  5327. FinishedProductEntity finishedProduct, SUserInfo sUserInfo
  5328. , string finishedloadbatchno)
  5329. {
  5330. List<OracleParameter> paras = new List<OracleParameter>();
  5331. string sql = "";
  5332. #region
  5333. // add 2015/11/16
  5334. // if (finishedProduct.LogoID != null && Convert.ToInt32(finishedProduct.LogoID) > 0)
  5335. // {
  5336. // #region SQL
  5337. // //废弃
  5338. // sql = " insert into tp_pm_finishedproduct"
  5339. // + " (barcode, "
  5340. // + " productionlineid, "
  5341. // + " productionlinecode, "
  5342. // + " productionlinename, "
  5343. // + " ispublicbody, "
  5344. // + " isrefire, "
  5345. // + " GoodsLevelID, "
  5346. // + " GoodsLevelTypeID, "
  5347. // + " goodsid, "
  5348. // + " goodscode, "
  5349. // + " goodsname, "
  5350. // + " groutingdailyid, "
  5351. // + " groutingdailydetailid, "
  5352. // + " groutingdate, "
  5353. // + " groutinglineid, "
  5354. // + " groutinglinecode, "
  5355. // + " groutinglinename, "
  5356. // + " gmouldtypeid, "
  5357. // + " groutinglinedetailid, "
  5358. // + " groutingmouldcode, "
  5359. // + " mouldcode, "
  5360. // + " accountdate, "
  5361. // + " accountid, "
  5362. // + " createuserid, "
  5363. // + " updateuserid,"
  5364. // + " groutinguserid, "
  5365. // + " groutingusercode, "
  5366. // + " groutingnum, "
  5367. // + " kilnid, "
  5368. // + " kilncode, "
  5369. // + " kilnname, "
  5370. // + " kilncarid, "
  5371. // + " kilncarcode, "
  5372. // + " kilncarname, "
  5373. // + " kilncarbatchno, "
  5374. // + " kilncarposition, "
  5375. // + " specialRepairflag, "
  5376. // + " logoid "
  5377. // + ") "
  5378. // + " select barcode, "
  5379. // + " productionlineid, "
  5380. // + " productionlinecode, "
  5381. // + " productionlinename, "
  5382. // + " ispublicbody, "
  5383. // + " isrefire, ";
  5384. // #region 产品等级
  5385. // //if (finishedProduct.GoodsGrade == null)
  5386. // //{
  5387. // // sql = sql + " goodsgrade,";
  5388. // //}
  5389. // //// 最后一个工序如果是检验工序,可更改产品等级
  5390. // //else
  5391. // //{
  5392. // // sql = sql + " :goodsgrade, ";
  5393. // // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5394. // //}
  5395. // //如果包装时,产成品未走过成检,则直接视为正品
  5396. // int? GoodsLevelTypeID = null;
  5397. // int? GoodsLevelID = null;
  5398. // if (finishedProduct.GoodsLevelID == null)
  5399. // {
  5400. // string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5401. // (
  5402. // select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5403. // ") and AccountID=" + sUserInfo.AccountID;
  5404. // DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5405. // if (ds != null && ds.Tables[0].Rows.Count > 0)
  5406. // {
  5407. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5408. // {
  5409. // if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5410. // {
  5411. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5412. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5413. // }
  5414. // else
  5415. // {
  5416. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5417. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5418. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5419. // {
  5420. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5421. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5422. // }
  5423. // }
  5424. // }
  5425. // }
  5426. // else
  5427. // {
  5428. // string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5429. // ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5430. // if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5431. // {
  5432. // GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5433. // GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5434. // }
  5435. // }
  5436. // }
  5437. // if (finishedProduct.GoodsLevelID == null)
  5438. // {
  5439. // //sql = sql + " GoodsLevelID,";
  5440. // // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5441. // ////// sql = sql + @"
  5442. // ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5443. // ////// (
  5444. // ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5445. // ////// ) and AccountID=:AccountID),";
  5446. // sql = sql + GoodsLevelID.ToString() + " ,";
  5447. // }
  5448. // // 最后一个工序如果是检验工序,可更改产品等级
  5449. // else
  5450. // {
  5451. // sql = sql + " :GoodsLevelID, ";
  5452. // paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5453. // }
  5454. // if (finishedProduct.GoodsLevelTypeID == null)
  5455. // {
  5456. // //sql = sql + " GoodsLevelTypeID,";
  5457. // sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5458. // }
  5459. // // 最后一个工序如果是检验工序,可更改产品等级
  5460. // else
  5461. // {
  5462. // sql = sql + " :GoodsLevelTypeID, ";
  5463. // paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5464. // }
  5465. // #endregion
  5466. // sql = sql + " goodsid, "
  5467. // + " goodscode, "
  5468. // + " goodsname, "
  5469. // + " groutingdailyid, "
  5470. // + " groutingdailydetailid, "
  5471. // + " groutingdate, "
  5472. // + " groutinglineid, "
  5473. // + " groutinglinecode, "
  5474. // + " groutinglinename, "
  5475. // + " gmouldtypeid, "
  5476. // + " groutinglinedetailid, "
  5477. // + " groutingmouldcode, "
  5478. // + " mouldcode, "
  5479. // + " fun_cmn_getaccountdate(accountid), "
  5480. // + " accountid, "
  5481. // + " :createuserid, "
  5482. // + " :updateuserid, "
  5483. // + " groutinguserid, "
  5484. // + " groutingusercode, "
  5485. // + " groutingnum, "
  5486. // + " kilnid, "
  5487. // + " kilncode, "
  5488. // + " kilnname, "
  5489. // + " kilncarid, "
  5490. // + " kilncarcode, "
  5491. // + " kilncarname, "
  5492. // + " kilncarbatchno, "
  5493. // + " kilncarposition, "
  5494. // + " specialRepairflag, "
  5495. // + " :logoid "
  5496. // + " from tp_pm_inproduction "
  5497. // + " where Barcode=:barcode";
  5498. // #endregion
  5499. // paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5500. // paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5501. // paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5502. // paras.Add(new OracleParameter(":logoid", finishedProduct.LogoID));
  5503. // // end 2015/11/16
  5504. // }
  5505. // else
  5506. // {
  5507. #endregion
  5508. #region SQL
  5509. //废弃
  5510. sql = " insert into tp_pm_finishedproduct"
  5511. + " (barcode, "
  5512. + " productionlineid, "
  5513. + " productionlinecode, "
  5514. + " productionlinename, "
  5515. + " ispublicbody, "
  5516. + " isrefire, "
  5517. + " GoodsLevelID, "
  5518. + " GoodsLevelTypeID, "
  5519. + " goodsid, "
  5520. + " goodscode, "
  5521. + " goodsname, "
  5522. + " groutingdailyid, "
  5523. + " groutingdailydetailid, "
  5524. + " groutingdate, "
  5525. + " groutinglineid, "
  5526. + " groutinglinecode, "
  5527. + " groutinglinename, "
  5528. + " gmouldtypeid, "
  5529. + " groutinglinedetailid, "
  5530. + " groutingmouldcode, "
  5531. + " mouldcode, "
  5532. + " accountdate, "
  5533. + " accountid, "
  5534. + " createuserid, "
  5535. + " updateuserid,"
  5536. + " groutinguserid, "
  5537. + " groutingusercode, "
  5538. + " groutingnum, "
  5539. + " kilnid, "
  5540. + " kilncode, "
  5541. + " kilnname, "
  5542. + " kilncarid, "
  5543. + " kilncarcode, "
  5544. + " kilncarname, "
  5545. + " kilncarbatchno, "
  5546. + " kilncarposition, "
  5547. + " specialRepairflag, "
  5548. + " logoid,OnlyCode ,finishedloadbatchno"
  5549. + ") "
  5550. + " select barcode, "
  5551. + " productionlineid, "
  5552. + " productionlinecode, "
  5553. + " productionlinename, "
  5554. + " ispublicbody, "
  5555. + " isrefire, ";
  5556. #region 产品等级
  5557. //if (finishedProduct.GoodsGrade == null)
  5558. //{
  5559. // sql = sql + " goodsgrade,";
  5560. //}
  5561. //// 最后一个工序如果是检验工序,可更改产品等级
  5562. //else
  5563. //{
  5564. // sql = sql + " :goodsgrade, ";
  5565. // paras.Add(new OracleParameter(":goodsgrade", finishedProduct.GoodsGrade));
  5566. //}
  5567. //如果包装时,产成品未走过成检,则直接视为正品
  5568. int? GoodsLevelTypeID = null;
  5569. int? GoodsLevelID = null;
  5570. if (finishedProduct.GoodsLevelID == null)
  5571. {
  5572. string sqlQuery = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5573. (
  5574. select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode='" + finishedProduct.BarCode + "'" +
  5575. ") and AccountID=" + sUserInfo.AccountID;
  5576. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlQuery);
  5577. if (ds != null && ds.Tables[0].Rows.Count > 0)
  5578. {
  5579. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5580. {
  5581. if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 5)//副品
  5582. {
  5583. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5584. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5585. }
  5586. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) == 4)//正品
  5587. {
  5588. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5589. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5590. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5591. {
  5592. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5593. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5594. }
  5595. }
  5596. else
  5597. {
  5598. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5599. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5600. }
  5601. }
  5602. }
  5603. else
  5604. {
  5605. string sqlQuery2 = @"select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where GoodsLevelTypeID=4 and AccountID=" + sUserInfo.AccountID;
  5606. ds = oracleTrConn.GetSqlResultToDs(sqlQuery2);
  5607. if (ds.Tables[0].Rows[0]["GoodsLevelID"].ToString() != "")
  5608. {
  5609. GoodsLevelTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  5610. GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  5611. }
  5612. }
  5613. }
  5614. if (finishedProduct.GoodsLevelID == null)
  5615. {
  5616. //sql = sql + " GoodsLevelID,";
  5617. // 包装后,这个值并没有,这里的值除了在检验的时候会给赋值,其它工序应该没有设置,所以查询了一次
  5618. ////// sql = sql + @"
  5619. ////// (select GoodsLevelID from TP_MST_GoodsLevel where GoodsLevelTypeID=
  5620. ////// (
  5621. ////// select distinct GoodsLevelTypeID from tp_pm_inproduction where Barcode=:barcode
  5622. ////// ) and AccountID=:AccountID),";
  5623. sql = sql + GoodsLevelID.ToString() + " ,";
  5624. }
  5625. // 最后一个工序如果是检验工序,可更改产品等级
  5626. else
  5627. {
  5628. sql = sql + " :GoodsLevelID, ";
  5629. paras.Add(new OracleParameter(":GoodsLevelID", finishedProduct.GoodsLevelID));
  5630. }
  5631. if (finishedProduct.GoodsLevelTypeID == null)
  5632. {
  5633. //sql = sql + " GoodsLevelTypeID,";
  5634. sql = sql + GoodsLevelTypeID.ToString() + " ,";
  5635. }
  5636. // 最后一个工序如果是检验工序,可更改产品等级
  5637. else
  5638. {
  5639. sql = sql + " :GoodsLevelTypeID, ";
  5640. paras.Add(new OracleParameter(":GoodsLevelTypeID", finishedProduct.GoodsLevelTypeID));
  5641. }
  5642. #endregion
  5643. sql = sql + " goodsid, "
  5644. + " goodscode, "
  5645. + " goodsname, "
  5646. + " groutingdailyid, "
  5647. + " groutingdailydetailid, "
  5648. + " groutingdate, "
  5649. + " groutinglineid, "
  5650. + " groutinglinecode, "
  5651. + " groutinglinename, "
  5652. + " gmouldtypeid, "
  5653. + " groutinglinedetailid, "
  5654. + " groutingmouldcode, "
  5655. + " mouldcode, "
  5656. + " fun_cmn_getaccountdate(accountid), "
  5657. + " accountid, "
  5658. + " :createuserid, "
  5659. + " :updateuserid, "
  5660. + " groutinguserid, "
  5661. + " groutingusercode, "
  5662. + " groutingnum, "
  5663. + " kilnid, "
  5664. + " kilncode, "
  5665. + " kilnname, "
  5666. + " kilncarid, "
  5667. + " kilncarcode, "
  5668. + " kilncarname, "
  5669. + " kilncarbatchno, "
  5670. + " kilncarposition, "
  5671. + " specialRepairflag, "
  5672. + " logoid, "
  5673. + " (select OnlyCode from tp_pm_groutingdailydetail where barcode=:barcode), :finishedloadbatchno"
  5674. + " from tp_pm_inproduction "
  5675. + " where Barcode=:barcode";
  5676. #endregion
  5677. paras.Add(new OracleParameter(":createuserid", sUserInfo.UserID));
  5678. paras.Add(new OracleParameter(":updateuserid", sUserInfo.UserID));
  5679. paras.Add(new OracleParameter(":barcode", finishedProduct.BarCode));
  5680. paras.Add(new OracleParameter(":finishedloadbatchno", finishedloadbatchno));
  5681. //}
  5682. //paras.Add(new OracleParameter(":AccountID", sUserInfo.AccountID));
  5683. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  5684. // 保存失败
  5685. if (result != Constant.INT_IS_ONE)
  5686. {
  5687. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5688. }
  5689. // 保存成功返回null
  5690. return null;
  5691. }
  5692. /// <summary>
  5693. /// 添加在产产品数据
  5694. /// </summary>
  5695. /// <param name="oracleTrConn">连接对象</param>
  5696. /// <param name="inProduction">在产产品实体类</param>
  5697. /// <param name="sUserInfo">用户基本信息</param>
  5698. /// <param name="isSendBody">是否交坯</param>
  5699. /// <returns>string</returns>
  5700. /// <remarks>
  5701. /// 陈冰 2014.09.18 新建
  5702. /// </remarks>
  5703. private static string AddInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo, DataSet _dsDataset, bool isSendBody = false)
  5704. {
  5705. #region SQL
  5706. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  5707. OracleParameter[] parasExist = new OracleParameter[] {
  5708. new OracleParameter(":barcode",inProduction.BarCode.Trim()),
  5709. };
  5710. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, parasExist);
  5711. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  5712. {
  5713. // 获取生产线ID,生产线名称,生产编码
  5714. string sql = @"select TP_PC_ProductionLine.ProductionLineID,TP_PC_ProductionLine.ProductionLineCode,TP_PC_ProductionLine.ProductionLineName
  5715. from TP_PC_Procedure inner join TP_PC_ProductionLine
  5716. on TP_PC_Procedure.ProductionLineID=TP_PC_ProductionLine.ProductionLineID
  5717. where TP_PC_Procedure.ProcedureID=:ProcedureID
  5718. ";
  5719. OracleParameter[] paras = new OracleParameter[] {
  5720. new OracleParameter(":ProcedureID",inProduction.FlowProcedureID),
  5721. };
  5722. dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5723. #region 获取生产线信息
  5724. int ProductionLineID = 0;//生产线ID
  5725. string ProductionLineCode = "", ProductionLineName = "";//生产线名称,编码
  5726. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5727. {
  5728. ProductionLineID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["ProductionLineID"]);
  5729. ProductionLineCode = dsresult.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  5730. ProductionLineName = dsresult.Tables[0].Rows[0]["ProductionLineName"].ToString();
  5731. }
  5732. #endregion
  5733. #region 获取注浆信息
  5734. // sql = @"select
  5735. // TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  5736. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  5737. // TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  5738. // TP_PM_GroutingDailyDetail.GroutingMouldCode,
  5739. // TP_PM_GroutingDailyDetail.MouldCode,
  5740. // TP_PM_GroutingDailyDetail.GroutingDailyID,
  5741. // TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  5742. // TP_PM_GroutingDailyDetail.GroutingLineID,
  5743. // TP_PM_GroutingDailyDetail.GroutingLineCode,
  5744. // TP_PM_GroutingDailyDetail.GroutingLineName,
  5745. // TP_PM_GroutingDaily.GMouldTypeID,
  5746. // TP_PM_GroutingDaily.CanManyTimes,
  5747. // TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  5748. // TP_PM_GroutingDailyDetail.SpecialRepairflag,
  5749. // TP_PM_GroutingDailyDetail.GoodsID,
  5750. // TP_PM_GroutingDailyDetail.GoodsCode,
  5751. // TP_PM_GroutingDailyDetail.GoodsName,
  5752. // TP_PM_GroutingDailyDetail.GroutingDate
  5753. // from TP_PM_GroutingDaily
  5754. // inner join TP_PM_GroutingDailyDetail
  5755. // on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  5756. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5757. // sql = @"select
  5758. // UserID as GroutingUserID,
  5759. // UserCode as GroutingUserCode,
  5760. // GroutingCount as GroutingNum,
  5761. // GroutingMouldCode,
  5762. // MouldCode,
  5763. // GroutingDailyID,
  5764. // GroutingDailyDetailID,
  5765. // GroutingLineID,
  5766. // GroutingLineCode,
  5767. // GroutingLineName,
  5768. // GroutingLineDetailID,
  5769. // SpecialRepairflag,
  5770. // GoodsID,
  5771. // GoodsCode,
  5772. // GoodsName,
  5773. // GroutingDate,
  5774. // (select GMouldTypeID
  5775. // from TP_PM_GroutingDaily
  5776. // where TP_PM_GroutingDaily.GroutingDailyID =
  5777. // TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  5778. // (select CanManyTimes
  5779. // from TP_PM_GroutingDaily
  5780. // where TP_PM_GroutingDaily.GroutingDailyID =
  5781. // TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes
  5782. // from TP_PM_GroutingDailyDetail
  5783. // where TP_PM_GroutingDailyDetail.barcode=:barcode";
  5784. // sql = @"select
  5785. // GroutingUserID,
  5786. // GroutingUserCode,
  5787. // GroutingNum,
  5788. // GroutingMouldCode,
  5789. // MouldCode,
  5790. // GroutingDailyID,
  5791. // GroutingDailyDetailID,
  5792. // GroutingLineID,
  5793. // GroutingLineCode,
  5794. // GroutingLineName,
  5795. // GroutingLineDetailID,
  5796. // SpecialRepairflag,
  5797. // GoodsID,
  5798. // GoodsCode,
  5799. // GoodsName,
  5800. // GroutingDate,
  5801. // GMouldTypeID
  5802. // CanManyTimes
  5803. // from tp_pm_productiondata
  5804. // where tp_pm_productiondata.barcode=:barcode";
  5805. // paras = new OracleParameter[] {
  5806. // new OracleParameter(":barcode",inProduction.BarCode),
  5807. // };
  5808. dsresult = _dsDataset;
  5809. //dsresult = oracleTrConn.GetSqlResultToDs(sql, paras);
  5810. // 产品ID, 注浆登记ID, 注浆明细ID, 成型线ID 成型线类型ID 能否多次注浆 成型生产线明细ID
  5811. int goodsid = 0, groutingDailyID = 0, groutingdailydetailid = 0, groutinglineid = 0, gMouldTypeID = 0, canManyTimes = 0, groutingLineDetailID = 0;
  5812. // 产品编码, 产品名称 成型线编码 成型线名称 注浆模具编号 模具编号
  5813. string goodsCode = "", goodsName = "", groutingLineCode = "", groutingLineName = "", groutingmouldcode = "", mouldCode = "";
  5814. DateTime? groutingdate = null; // 注浆日期
  5815. int groutingUserID = 0, groutingNum = 0; //注浆工号ID,注浆次数
  5816. string groutingUserCode = "";//注浆工号
  5817. int? LogoID = null;
  5818. if (dsresult != null && dsresult.Tables[0].Rows.Count > 0)
  5819. {
  5820. goodsid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GoodsID"]);
  5821. groutingDailyID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyID"]);
  5822. groutingdailydetailid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  5823. groutinglineid = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineID"]);
  5824. groutingLineDetailID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingLineDetailID"]);
  5825. groutingdate = Convert.ToDateTime(dsresult.Tables[0].Rows[0]["GroutingDate"]);
  5826. goodsCode = dsresult.Tables[0].Rows[0]["GoodsCode"].ToString();
  5827. goodsName = dsresult.Tables[0].Rows[0]["GoodsName"].ToString();
  5828. groutingLineCode = dsresult.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  5829. groutingLineName = dsresult.Tables[0].Rows[0]["GroutingLineName"].ToString();
  5830. groutingmouldcode = dsresult.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  5831. mouldCode = dsresult.Tables[0].Rows[0]["MouldCode"].ToString();
  5832. groutingUserCode = dsresult.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  5833. groutingUserID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingUserID"]);
  5834. gMouldTypeID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GMouldTypeID"]);
  5835. canManyTimes = Convert.ToInt32(dsresult.Tables[0].Rows[0]["CanManyTimes"]);
  5836. groutingNum = Convert.ToInt32(dsresult.Tables[0].Rows[0]["GroutingNum"]);
  5837. if (dsresult.Tables[0].Rows[0]["logoid"].ToString() != "")
  5838. {
  5839. LogoID = Convert.ToInt32(dsresult.Tables[0].Rows[0]["logoid"]);
  5840. }
  5841. }
  5842. #endregion
  5843. sql = " insert into tp_pm_inproduction"
  5844. + " ( barcode,"
  5845. + " productionlineid,"
  5846. + " productionlinecode,"
  5847. + " productionlinename,"
  5848. + " proceduremodel,"
  5849. + " modeltype,"
  5850. + " ispublicbody,"
  5851. + " goodsid,"
  5852. + " goodscode,"
  5853. + " goodsname,"
  5854. + " userid,"
  5855. + " groutingdailyid,"
  5856. + " groutingdailydetailid,"
  5857. + " groutingdate,"
  5858. + " groutinglineid,"
  5859. + " groutinglinecode,"
  5860. + " groutinglinename,"
  5861. + " gmouldtypeid,"
  5862. + " canmanytimes,"
  5863. + " groutinglinedetailid,"
  5864. + " groutingmouldcode,"
  5865. + " mouldcode,"
  5866. + " accountid,"
  5867. + " createuserid,"
  5868. + " updateuserid,GoodsLevelTypeID,"
  5869. + " GroutingUserID,"
  5870. + " GroutingUserCode,"
  5871. + " GroutingNum,"
  5872. + " SpecialRepairflag,"
  5873. + " FlowProcedureID,"
  5874. + " FlowProcedureTime,"
  5875. + " ProcedureID,"
  5876. + " ProcedureTime,"
  5877. + " ProductionDataID,logoid"
  5878. + " ) values ("
  5879. + " :barcode,"
  5880. + " :productionlineid,"
  5881. + " :productionlinecode,"
  5882. + " :productionlinename,"
  5883. + " :procedureModel,"
  5884. + " :modelType,"
  5885. + " :isPublicBody,"
  5886. + " :goodsid,"
  5887. + " :goodscode,"
  5888. + " :goodsname,"
  5889. + " :userID,"
  5890. + " :groutingdailyid,"
  5891. + " :groutingdailydetailid,"
  5892. + " :groutingdate,"
  5893. + " :groutinglineid,"
  5894. + " :groutinglinecode,"
  5895. + " :groutinglinename,"
  5896. + " :gmouldtypeid,"
  5897. + " :canmanytimes,"
  5898. + " :groutinglinedetailid,"
  5899. + " :groutingmouldcode,"
  5900. + " :mouldcode,"
  5901. + " :accountID,"
  5902. + " :createUserID,"
  5903. + " :updateUserID,"
  5904. + " null,"
  5905. + " :groutinguserid,"
  5906. + " :groutingusercode,"
  5907. + " :groutingnum,"
  5908. + " :specialRepairflag,"
  5909. + " :flowProcedureID,"
  5910. + " sysdate,"
  5911. + " :procedureID,"
  5912. + " sysdate,"
  5913. + " :productionDataID,:logoid"
  5914. + " ) ";
  5915. #endregion
  5916. paras = new OracleParameter[] {
  5917. new OracleParameter(":procedureModel",inProduction.ProcedureModel),
  5918. new OracleParameter(":modelType",inProduction.ModelType),
  5919. new OracleParameter(":isPublicBody",inProduction.IsPublicBody),
  5920. new OracleParameter(":userID",inProduction.UserID),
  5921. new OracleParameter(":accountID",sUserInfo.AccountID),
  5922. new OracleParameter(":createUserID",sUserInfo.UserID),
  5923. new OracleParameter(":updateUserID",sUserInfo.UserID),
  5924. new OracleParameter(":barcode",inProduction.BarCode),
  5925. new OracleParameter(":specialRepairflag",inProduction.SpecialRepairflag),
  5926. new OracleParameter(":productionlineid",ProductionLineID),//---开始赋值
  5927. new OracleParameter(":productionlinecode",ProductionLineCode),
  5928. new OracleParameter(":productionlinename",ProductionLineName),
  5929. new OracleParameter(":goodsid",goodsid),
  5930. new OracleParameter(":goodscode",goodsCode),
  5931. new OracleParameter(":goodsname",goodsName),
  5932. new OracleParameter(":groutingdailyid",groutingDailyID),
  5933. new OracleParameter(":groutingdailydetailid",groutingdailydetailid),
  5934. new OracleParameter(":groutingdate",groutingdate),
  5935. new OracleParameter(":groutinglineid",groutinglineid),
  5936. new OracleParameter(":groutinglinecode",groutingLineCode),
  5937. new OracleParameter(":groutinglinename",groutingLineName),
  5938. new OracleParameter(":gmouldtypeid",gMouldTypeID),
  5939. new OracleParameter(":canmanytimes",canManyTimes),
  5940. new OracleParameter(":groutinglinedetailid",groutingLineDetailID),
  5941. new OracleParameter(":groutingmouldcode",groutingmouldcode),
  5942. new OracleParameter(":mouldcode",mouldCode),
  5943. new OracleParameter(":groutinguserid",groutingUserID),
  5944. new OracleParameter(":groutingusercode",groutingUserCode),
  5945. new OracleParameter(":groutingnum",groutingNum),
  5946. new OracleParameter(":flowProcedureID",inProduction.FlowProcedureID),
  5947. new OracleParameter(":procedureID",inProduction.FlowProcedureID),
  5948. new OracleParameter(":productionDataID",inProduction.ProductionDataID),
  5949. new OracleParameter(":logoid",LogoID),
  5950. };
  5951. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  5952. // 保存失败
  5953. if (result != Constant.INT_IS_ONE)
  5954. {
  5955. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  5956. }
  5957. //xuwei fix begin
  5958. //2019-09-17
  5959. //更新用过条码
  5960. //交坯=4,在产=3
  5961. string barcodeStatus = isSendBody ? "4" : "3";
  5962. string updateUsedBarCode = "update TP_PM_USEDBARCODE set barcodestatus=" + barcodeStatus + " where barcode='" + inProduction.BarCode + "'";
  5963. oracleTrConn.ExecuteNonQuery(updateUsedBarCode);
  5964. //xuwei end
  5965. }
  5966. // 保存成功返回null
  5967. return null;
  5968. }
  5969. /// <summary>
  5970. /// 根据最大生产数据ID,获取窑车窑炉等信息
  5971. /// </summary>
  5972. /// <param name="oracleTrConn"></param>
  5973. /// <param name="barcode"></param>
  5974. /// <param name="sUserInfo"></param>
  5975. /// <returns></returns>
  5976. private static DataSet GetFinishCheckKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  5977. {
  5978. string sql = @"select
  5979. KilnID,
  5980. KilnCode,
  5981. KilnName,
  5982. KilnCarID,
  5983. KilnCarCode,
  5984. KilnCarName,
  5985. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5986. KilnCarPosition
  5987. from tp_pm_inproduction where barcode=:barcode
  5988. union
  5989. select
  5990. KilnID,
  5991. KilnCode,
  5992. KilnName,
  5993. KilnCarID,
  5994. KilnCarCode,
  5995. KilnCarName,
  5996. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  5997. KilnCarPosition
  5998. from TP_PM_InProductionTrash where barcode=:barcode
  5999. ";
  6000. try
  6001. {
  6002. IDataParameter[] paras = new OracleParameter[]
  6003. {
  6004. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  6005. };
  6006. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  6007. if (returnDs != null
  6008. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6009. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6010. {
  6011. return returnDs;
  6012. }
  6013. else
  6014. {
  6015. return null;
  6016. }
  6017. }
  6018. catch (Exception ex)
  6019. {
  6020. throw ex;
  6021. }
  6022. }
  6023. /// <summary>
  6024. /// 根据最大生产数据ID,获取窑车窑炉等信息
  6025. /// </summary>
  6026. /// <param name="oracleTrConn"></param>
  6027. /// <param name="barcode"></param>
  6028. /// <param name="sUserInfo"></param>
  6029. /// <returns></returns>
  6030. private static DataSet GetKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  6031. {
  6032. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  6033. // (
  6034. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  6035. // )";
  6036. // string sql = @"select
  6037. // KilnID,
  6038. // KilnCode,
  6039. // KilnName,
  6040. // KilnCarID,
  6041. // KilnCarCode,
  6042. // KilnCarName,
  6043. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6044. // KilnCarPosition
  6045. // from tp_pm_inproduction where barcode=:barcode
  6046. // union
  6047. // select
  6048. // KilnID,
  6049. // KilnCode,
  6050. // KilnName,
  6051. // KilnCarID,
  6052. // KilnCarCode,
  6053. // KilnCarName,
  6054. // to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6055. // KilnCarPosition
  6056. // from TP_PM_InProductionTrash where barcode=:barcode
  6057. //";
  6058. string sql = @"select
  6059. KilnID,
  6060. KilnCode,
  6061. KilnName,
  6062. KilnCarID,
  6063. KilnCarCode,
  6064. KilnCarName,
  6065. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  6066. KilnCarPosition
  6067. from tp_pm_inproduction where barcode=:barcode
  6068. ";
  6069. try
  6070. {
  6071. IDataParameter[] paras = new OracleParameter[]
  6072. {
  6073. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  6074. };
  6075. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  6076. if (returnDs != null
  6077. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6078. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6079. {
  6080. return returnDs;
  6081. }
  6082. else
  6083. {
  6084. return null;
  6085. }
  6086. }
  6087. catch (Exception ex)
  6088. {
  6089. throw ex;
  6090. }
  6091. }
  6092. /// <summary>
  6093. /// 修改在产数据
  6094. /// </summary>
  6095. /// <param name="oracleTrConn">连接对象</param>
  6096. /// <param name="inProduction">在产数据实体类</param>
  6097. /// <param name="sUserInfo">用户基本信息</param>
  6098. /// <returns>string</returns>
  6099. /// <remarks>
  6100. /// 陈冰 2014.09.18 新建
  6101. /// </remarks>
  6102. private static string UpdateInProductionSpec(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo)
  6103. {
  6104. List<OracleParameter> paras = new List<OracleParameter>();
  6105. //paras.Add(new OracleParameter(":completeProcedureID", inProduction.CompleteProcedureID));
  6106. paras.Add(new OracleParameter(":procedureModel", inProduction.ProcedureModel));
  6107. paras.Add(new OracleParameter(":modelType", inProduction.ModelType));
  6108. paras.Add(new OracleParameter(":defectFlag", inProduction.DefectFlag));
  6109. paras.Add(new OracleParameter(":reworkProcedureID", inProduction.ReworkProcedureID));
  6110. paras.Add(new OracleParameter(":flowprocedureid", inProduction.FlowProcedureID));
  6111. paras.Add(new OracleParameter(":procedureID", inProduction.ProcedureID));
  6112. paras.Add(new OracleParameter(":productionDataID", inProduction.ProductionDataID));
  6113. #region SQL
  6114. string sql = " update TP_PM_InProduction "
  6115. //+ " set CompleteProcedureID = :completeProcedureID,"
  6116. + "set ProcedureModel = :procedureModel,"
  6117. //+ " ModelType = :modelType,"
  6118. + " DefectFlag = :defectFlag,"
  6119. //+ " flowprocedureid = :flowprocedureid,"
  6120. //+ " flowproceduretime = sysdate,"
  6121. //+ " procedureID = :procedureID,"
  6122. //+ " procedureTime = sysdate,"
  6123. + " productionDataID = :productionDataID,"
  6124. // + " GoodsLevelTypeID = :GoodsLevelTypeID,"
  6125. // 扫码后,返修标识清除
  6126. + " isreworkflag = '0',"
  6127. + " ReworkProcedureID = :reworkProcedureID,";
  6128. #region 只有走特定返工工序时才更改重烧字段
  6129. if (inProduction.IsReFire != null)
  6130. {
  6131. sql = sql + " IsReFire = :isReFire,";
  6132. paras.Add(new OracleParameter(":isReFire", inProduction.IsReFire));
  6133. }
  6134. #endregion
  6135. #region 只有走特定返工工序时才更改重烧字段
  6136. if (inProduction.IsLengBu != null)
  6137. {
  6138. sql = sql + " IsLengBu = :isLengBu,";
  6139. paras.Add(new OracleParameter(":isLengBu", inProduction.IsLengBu));
  6140. }
  6141. #endregion
  6142. #region 只有成检时才更新产品分级字段
  6143. //if (inProduction.GoodsGrade != null)
  6144. //{
  6145. // sql = sql + " GoodsGrade = :goodsGrade,";
  6146. // paras.Add(new OracleParameter(":goodsGrade", inProduction.GoodsGrade));
  6147. //}
  6148. if (inProduction.GoodsLevelID != null)
  6149. {
  6150. sql = sql + " GoodsLevelID = :GoodsLevelID,";
  6151. paras.Add(new OracleParameter(":GoodsLevelID", inProduction.GoodsLevelID));
  6152. }
  6153. if (inProduction.GoodsLevelTypeID != null)
  6154. {
  6155. sql = sql + " GoodsLevelTypeID = :GoodsLevelTypeID,";
  6156. paras.Add(new OracleParameter(":GoodsLevelTypeID", inProduction.GoodsLevelTypeID));
  6157. }
  6158. #region 更新窑炉窑车属性
  6159. //xuwei add 2020-06-15 冷补 需要更新窑车号
  6160. if (inProduction.ModelType == 10)
  6161. {
  6162. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6163. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  6164. }
  6165. #endregion
  6166. #endregion
  6167. #region 更新在产商标
  6168. if (inProduction.LogoID != null)
  6169. {
  6170. sql = sql + " LogoID = :LogoID,";
  6171. paras.Add(new OracleParameter(":LogoID", inProduction.LogoID));
  6172. }
  6173. #endregion
  6174. sql = sql + " UserID = :userID,"
  6175. + " UpdateUserID = :updateUserID"
  6176. + " where Barcode = :barCode";
  6177. #endregion
  6178. paras.Add(new OracleParameter(":userID", inProduction.UserID));
  6179. paras.Add(new OracleParameter(":updateUserID", sUserInfo.UserID));
  6180. paras.Add(new OracleParameter(":barCode", inProduction.BarCode));
  6181. foreach (var para in paras)
  6182. {
  6183. if (para.Value + "" == "")
  6184. {
  6185. para.Value = DBNull.Value;
  6186. }
  6187. }
  6188. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  6189. // 保存失败
  6190. if (result != Constant.INT_IS_ONE)
  6191. {
  6192. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6193. }
  6194. // 保存成功返回null
  6195. return null;
  6196. }
  6197. /// <summary>
  6198. /// 修改在产数据
  6199. /// </summary>
  6200. /// <param name="oracleTrConn">连接对象</param>
  6201. /// <param name="inProduction">在产数据实体类</param>
  6202. /// <param name="sUserInfo">用户基本信息</param>
  6203. /// <returns>string</returns>
  6204. /// <remarks>
  6205. /// 陈冰 2014.09.18 新建
  6206. /// </remarks>
  6207. private static string UpdateInProduction(IDBTransaction oracleTrConn, InProductionEntity inProduction, SUserInfo sUserInfo)
  6208. {
  6209. List<OracleParameter> paras = new List<OracleParameter>();
  6210. //paras.Add(new OracleParameter(":completeProcedureID", inProduction.CompleteProcedureID));
  6211. paras.Add(new OracleParameter(":procedureModel", inProduction.ProcedureModel));
  6212. paras.Add(new OracleParameter(":modelType", inProduction.ModelType));
  6213. paras.Add(new OracleParameter(":defectFlag", inProduction.DefectFlag));
  6214. paras.Add(new OracleParameter(":reworkProcedureID", inProduction.ReworkProcedureID));
  6215. paras.Add(new OracleParameter(":flowprocedureid", inProduction.FlowProcedureID));
  6216. paras.Add(new OracleParameter(":procedureID", inProduction.ProcedureID));
  6217. paras.Add(new OracleParameter(":productionDataID", inProduction.ProductionDataID));
  6218. #region SQL
  6219. string sql = " update TP_PM_InProduction "
  6220. //+ " set CompleteProcedureID = :completeProcedureID,"
  6221. + "set ProcedureModel = :procedureModel,"
  6222. + " ModelType = :modelType,"
  6223. + " DefectFlag = :defectFlag,"
  6224. + " flowprocedureid = :flowprocedureid,"
  6225. + " flowproceduretime = sysdate,"
  6226. + " procedureID = :procedureID,"
  6227. + " procedureTime = sysdate,"
  6228. + " productionDataID = :productionDataID,"
  6229. // + " GoodsLevelTypeID = :GoodsLevelTypeID,"
  6230. // 扫码后,返修标识清除
  6231. + " isreworkflag = '0',"
  6232. + " ReworkProcedureID = :reworkProcedureID,";
  6233. #region 只有交坯工序是才传值更改公坯字段
  6234. if (inProduction.IsPublicBody != null)
  6235. {
  6236. sql = sql + " IsPublicBody = :isPublicBody,";
  6237. paras.Add(new OracleParameter(":isPublicBody", inProduction.IsPublicBody));
  6238. }
  6239. #endregion
  6240. #region 只有走特定返工工序时才更改重烧字段
  6241. if (inProduction.IsReFire != null)
  6242. {
  6243. sql = sql + " IsReFire = :isReFire,";
  6244. paras.Add(new OracleParameter(":isReFire", inProduction.IsReFire));
  6245. }
  6246. #endregion
  6247. #region 只有走特定返工工序时才更改重烧字段
  6248. if (inProduction.IsLengBu != null)
  6249. {
  6250. sql = sql + " IsLengBu = :isLengBu,";
  6251. paras.Add(new OracleParameter(":isLengBu", inProduction.IsLengBu));
  6252. }
  6253. #endregion
  6254. #region 只有成检时才更新产品分级字段
  6255. //if (inProduction.GoodsGrade != null)
  6256. //{
  6257. // sql = sql + " GoodsGrade = :goodsGrade,";
  6258. // paras.Add(new OracleParameter(":goodsGrade", inProduction.GoodsGrade));
  6259. //}
  6260. if (inProduction.GoodsLevelID != null)
  6261. {
  6262. sql = sql + " GoodsLevelID = :GoodsLevelID,";
  6263. paras.Add(new OracleParameter(":GoodsLevelID", inProduction.GoodsLevelID));
  6264. }
  6265. if (inProduction.GoodsLevelTypeID != null)
  6266. {
  6267. sql = sql + " GoodsLevelTypeID = :GoodsLevelTypeID,";
  6268. paras.Add(new OracleParameter(":GoodsLevelTypeID", inProduction.GoodsLevelTypeID));
  6269. }
  6270. #region 更新窑炉窑车属性
  6271. if (inProduction.ModelType == 1 || inProduction.ModelType == 2 || inProduction.ModelType == 3 || inProduction.ModelType == 4 || inProduction.ModelType == 6)
  6272. {
  6273. sql = sql + " KilnID = :KilnID,";
  6274. paras.Add(new OracleParameter(":KilnID", inProduction.KilnID));
  6275. sql = sql + " KilnCode = :KilnCode,";
  6276. paras.Add(new OracleParameter(":KilnCode", inProduction.KilnCode));
  6277. sql = sql + " KilnName = :KilnName,";
  6278. paras.Add(new OracleParameter(":KilnName", inProduction.KilnName));
  6279. sql = sql + " KilnCarID = :KilnCarID,";
  6280. paras.Add(new OracleParameter(":KilnCarID", inProduction.KilnCarID));
  6281. sql = sql + " KilnCarCode = :KilnCarCode,";
  6282. paras.Add(new OracleParameter(":KilnCarCode", inProduction.KilnCarCode));
  6283. sql = sql + " KilnCarName = :KilnCarName,";
  6284. paras.Add(new OracleParameter(":KilnCarName", inProduction.KilnCarName));
  6285. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6286. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  6287. sql = sql + " KilnCarPosition = :KilnCarPosition,";
  6288. paras.Add(new OracleParameter(":KilnCarPosition", inProduction.KilnCarPosition));
  6289. }
  6290. //xuwei add 2020-06-15 冷补 需要更新窑车号
  6291. else if (inProduction.ModelType == 10)
  6292. {
  6293. sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6294. paras.Add(new OracleParameter(":KilnCarBatchNo", inProduction.KilnCarBatchNo));
  6295. }
  6296. else
  6297. {
  6298. //
  6299. ////////DataSet ds = GetKilnCarInfo(oracleTrConn, inProduction.BarCode, sUserInfo);
  6300. ////////if (ds != null)
  6301. ////////{
  6302. //////// if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  6303. //////// {
  6304. //////// sql = sql + " KilnID = :KilnID,";
  6305. //////// paras.Add(new OracleParameter(":KilnID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"])));
  6306. //////// sql = sql + " KilnCode = :KilnCode,";
  6307. //////// paras.Add(new OracleParameter(":KilnCode", ds.Tables[0].Rows[0]["KilnCode"].ToString()));
  6308. //////// sql = sql + " KilnName = :KilnName,";
  6309. //////// paras.Add(new OracleParameter(":KilnName", ds.Tables[0].Rows[0]["KilnName"].ToString()));
  6310. //////// sql = sql + " KilnCarID = :KilnCarID,";
  6311. //////// paras.Add(new OracleParameter(":KilnCarID", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"])));
  6312. //////// sql = sql + " KilnCarCode = :KilnCarCode,";
  6313. //////// paras.Add(new OracleParameter(":KilnCarCode", ds.Tables[0].Rows[0]["KilnCarCode"].ToString()));
  6314. //////// sql = sql + " KilnCarName = :KilnCarName,";
  6315. //////// paras.Add(new OracleParameter(":KilnCarName", ds.Tables[0].Rows[0]["KilnCarName"].ToString()));
  6316. //////// sql = sql + " KilnCarBatchNo = :KilnCarBatchNo,";
  6317. //////// paras.Add(new OracleParameter(":KilnCarBatchNo", ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString()));
  6318. //////// sql = sql + " KilnCarPosition = :KilnCarPosition,";
  6319. //////// paras.Add(new OracleParameter(":KilnCarPosition", Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"])));
  6320. //////// }
  6321. ////////}
  6322. }
  6323. #endregion
  6324. #endregion
  6325. #region 更新在产商标
  6326. if (inProduction.LogoID != null)
  6327. {
  6328. sql = sql + " LogoID = :LogoID,";
  6329. paras.Add(new OracleParameter(":LogoID", inProduction.LogoID));
  6330. }
  6331. #endregion
  6332. sql = sql + " UserID = :userID,"
  6333. + " UpdateUserID = :updateUserID"
  6334. + " where Barcode = :barCode";
  6335. #endregion
  6336. paras.Add(new OracleParameter(":userID", inProduction.UserID));
  6337. paras.Add(new OracleParameter(":updateUserID", sUserInfo.UserID));
  6338. paras.Add(new OracleParameter(":barCode", inProduction.BarCode));
  6339. foreach (var para in paras)
  6340. {
  6341. if (para.Value + "" == "")
  6342. {
  6343. para.Value = DBNull.Value;
  6344. }
  6345. }
  6346. int result = oracleTrConn.ExecuteNonQuery(sql, paras.ToArray());
  6347. // 保存失败
  6348. if (result != Constant.INT_IS_ONE)
  6349. {
  6350. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6351. }
  6352. // 保存成功返回null
  6353. return null;
  6354. }
  6355. /// <summary>
  6356. /// 校验条码有效
  6357. /// </summary>
  6358. /// <param name="oracleTrConn">连接对象</param>
  6359. /// <param name="procedureID">工序ID</param>
  6360. /// <param name="barcode">条码</param>
  6361. /// <param name="goodsID">返回的产品ID</param>
  6362. /// <param name="goodsCode">返回的产品Code</param>
  6363. /// <param name="goodsName">返回的产品名称</param>
  6364. /// <param name="groutingUserID">返回的注浆者ID</param>
  6365. /// <returns>string</returns>
  6366. /// <remarks>
  6367. /// 陈冰 2014.09.18 新建
  6368. /// </remarks>
  6369. private static string CheckBarcode(IDBTransaction oracleTrConn,
  6370. int procedureID,
  6371. string barcode,
  6372. out int goodsID,
  6373. out string goodsCode,
  6374. out string goodsName,
  6375. out string groutingUserCode,
  6376. SUserInfo sUserInfo
  6377. )
  6378. {
  6379. try
  6380. {
  6381. OracleParameter[] paras = new OracleParameter[]{
  6382. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  6383. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  6384. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  6385. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  6386. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6387. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6388. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  6389. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  6390. };
  6391. oracleTrConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  6392. if (!"null".Equals(paras[3].Value + ""))
  6393. {
  6394. goodsID = Convert.ToInt32(paras[3].Value + "");
  6395. }
  6396. else
  6397. {
  6398. goodsID = 0;
  6399. }
  6400. goodsCode = paras[4].Value + "";
  6401. goodsName = paras[5].Value + "";
  6402. if (!"null".Equals(paras[6].Value + ""))
  6403. {
  6404. groutingUserCode = paras[6].Value + "";
  6405. }
  6406. else
  6407. {
  6408. groutingUserCode = null;
  6409. }
  6410. if ("null".Equals(paras[2].Value + ""))
  6411. {
  6412. return null;
  6413. }
  6414. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  6415. }
  6416. catch (Exception ex)
  6417. {
  6418. throw ex;
  6419. }
  6420. }
  6421. /// <summary>
  6422. /// 查询工序信息
  6423. /// </summary>
  6424. /// <param name="oracleTrConn">连接对象</param>
  6425. /// <param name="procedureID">工序ID</param>
  6426. /// <returns>工序实体</returns>
  6427. private static ProcedureEntity GetProcedurByID(IDBTransaction oracleTrConn, int procedureID)
  6428. {
  6429. ProcedureEntity procedureEntity = new ProcedureEntity();
  6430. string procsql = "pro_pm_searchProcedurbyID";
  6431. try
  6432. {
  6433. IDataParameter[] paras = new OracleParameter[]
  6434. {
  6435. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  6436. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  6437. };
  6438. DataSet returnDs = oracleTrConn.ExecStoredProcedure(procsql, paras);
  6439. if (returnDs != null
  6440. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  6441. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  6442. {
  6443. DataRow row = returnDs.Tables[0].Rows[0];
  6444. // 转实体
  6445. procedureEntity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  6446. return procedureEntity;
  6447. }
  6448. else
  6449. {
  6450. return null;
  6451. }
  6452. }
  6453. catch (Exception ex)
  6454. {
  6455. throw ex;
  6456. }
  6457. }
  6458. #endregion
  6459. #region 检验
  6460. /// <summary>
  6461. /// 保存条码信息
  6462. /// </summary>
  6463. /// <param name="procedureID">工序ID</param>
  6464. /// <param name="productionDataEntitys">生产数据集</param>
  6465. /// <param name="sUserInfo">用户基本信息</param>
  6466. /// <returns>string</returns>
  6467. public static ServiceResultEntity AddCheckBarcode(int procedureID, ProductionDataEntity[] productionDataEntitys,DataTable bomDetailTable, SUserInfo sUserInfo)
  6468. {
  6469. ServiceResultEntity sre = new ServiceResultEntity();
  6470. string errMsg = "";
  6471. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  6472. try
  6473. {
  6474. oracleTrConn.Connect();
  6475. #region 查询工序信息
  6476. //ProcedureEntity procedure = GetProcedurByID(oracleTrConn, procedureID);
  6477. string sql = @"select
  6478. pt.PROCEDUREID,
  6479. t.PRODUCTIONLINEID,
  6480. t.NODENO,
  6481. pt.PROCEDURECODE,
  6482. pt.PROCEDURENAME,
  6483. t.PROCEDUREMODEL,
  6484. t.MODELTYPE,
  6485. t.NODETYPE,
  6486. t.MUSTFLAG,
  6487. t.COLLECTTYPE,
  6488. t.PIECETYPE,
  6489. t.ISSPECIALREWORK,
  6490. t.ORGANIZATIONID,
  6491. t.REMARKS,
  6492. t.ACCOUNTID,
  6493. t.VALUEFLAG,
  6494. t.CREATETIME,
  6495. t.CREATEUSERID,
  6496. t.UPDATETIME,
  6497. t.UPDATEUSERID,
  6498. t.OPTIMESTAMP,
  6499. t.DeliverType,
  6500. t.BARCODEPRINTCOPIES,
  6501. TP_PC_PRODUCTIONLINE.PRODUCTIONLINECODE,
  6502. TP_PC_PRODUCTIONLINE.PRODUCTIONLINENAME,
  6503. t.PROCEDUREID as finishedcheckprocedureid
  6504. from Tp_PC_Procedure t
  6505. left join TP_PC_PRODUCTIONLINE on TP_PC_PRODUCTIONLINE.PRODUCTIONLINEID = t.PRODUCTIONLINEID
  6506. left join tp_pc_procedure pt on pt.procedureid = t.finishedcheckprocedureid
  6507. where t.procedureid = :procedureID";
  6508. DataTable procedureData = oracleTrConn.GetSqlResultToDt( sql, new OracleParameter[] { new OracleParameter(":procedureID", procedureID) });
  6509. ProcedureEntity procedure = new ProcedureEntity();
  6510. if (procedureData != null && procedureData.Rows.Count > Constant.INT_IS_ZERO)
  6511. {
  6512. DataRow row = procedureData.Rows[0];
  6513. // 转实体
  6514. procedure = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  6515. }
  6516. else
  6517. {
  6518. procedure = null;
  6519. }
  6520. #endregion
  6521. #region 成品检验
  6522. errMsg = AddFinishCheckPDA(oracleTrConn, procedure, productionDataEntitys, bomDetailTable, sUserInfo);
  6523. #endregion
  6524. // 没有错误 提交事务
  6525. if (string.IsNullOrEmpty(errMsg))
  6526. {
  6527. sre.Result = 1;
  6528. oracleTrConn.Commit();
  6529. }
  6530. }
  6531. catch (Exception ex)
  6532. {
  6533. oracleTrConn.Rollback();
  6534. throw ex;
  6535. }
  6536. finally
  6537. {
  6538. // 释放资源
  6539. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  6540. {
  6541. oracleTrConn.Disconnect();
  6542. }
  6543. }
  6544. return sre;
  6545. }
  6546. /// <summary>
  6547. /// 入窑前检验
  6548. /// </summary>
  6549. /// <param name="oracleTrConn">连接对象</param>
  6550. /// <param name="procedure">工序</param>
  6551. /// <param name="productionDataEntitys">生产数据集</param>
  6552. /// <param name="sUserInfo">用户基本信息</param>
  6553. /// <returns>string</returns>
  6554. private static string AddIntoKilnCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6555. {
  6556. string errMsg = "";
  6557. // 获得账务日期
  6558. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6559. // 本批采集的批次号
  6560. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  6561. #region 查询产品分级
  6562. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  6563. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  6564. #endregion
  6565. foreach (ProductionDataEntity productionData in productionDataEntitys)
  6566. {
  6567. if (string.IsNullOrEmpty(productionData.Barcode))
  6568. {
  6569. throw new Exception("传入的条码号为空");
  6570. }
  6571. if (productionData.ProductionDataID != 0)
  6572. {
  6573. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  6574. if (!string.IsNullOrEmpty(errMsg))
  6575. {
  6576. return errMsg;
  6577. }
  6578. // 删除报废条码
  6579. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  6580. where tp_pm_scrapproduct.barcode=:barcode";
  6581. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  6582. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6583. };
  6584. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  6585. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6586. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6587. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6588. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6589. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6590. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6591. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6592. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  6593. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6594. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6595. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6596. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  6597. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  6598. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  6599. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  6600. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  6601. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  6602. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  6603. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  6604. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  6605. CREATEUSERID, UPDATETIME, :UpdateUserID,
  6606. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  6607. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  6608. KILNID, KILNCODE, KILNNAME, KILNCARID,
  6609. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  6610. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  6611. from TP_PM_InProductionTrash where barcode=:barcode ";
  6612. OracleParameter[] InProductparas = new OracleParameter[]{
  6613. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  6614. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  6615. };
  6616. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  6617. //删除回收站中的条码
  6618. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  6619. OracleParameter[] TrashProductparas = new OracleParameter[]{
  6620. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  6621. };
  6622. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  6623. }
  6624. int goodsID = Constant.INT_IS_ZERO;
  6625. string goodsCode = string.Empty;
  6626. string goodsName = string.Empty;
  6627. // 注浆者工号
  6628. string groutingUserCode = string.Empty;
  6629. #region 校验条码有效性
  6630. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6631. if (!string.IsNullOrEmpty(errMsg))
  6632. {
  6633. if (productionData.ProductionDataID == 0)
  6634. return errMsg;
  6635. }
  6636. #endregion
  6637. #region 获得产品分级ID
  6638. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  6639. // 获得产品分级ID
  6640. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  6641. #endregion
  6642. // 查询新插入的生产数据ID
  6643. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  6644. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  6645. int productionDataID = 0;
  6646. if (!string.IsNullOrEmpty(idStr))
  6647. {
  6648. productionDataID = int.Parse(idStr);
  6649. }
  6650. else
  6651. {
  6652. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6653. }
  6654. int? ClassesSettingID = null;//班次配置ID
  6655. #region 添加生产者数据
  6656. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  6657. if (!string.IsNullOrEmpty(errMsg))
  6658. {
  6659. return errMsg;
  6660. }
  6661. #endregion
  6662. #region 添加生产数据
  6663. #region 属性赋值
  6664. productionData.ClassesSettingID = ClassesSettingID;
  6665. productionData.ProductionDataID = Convert.ToInt32(idStr);
  6666. productionData.CentralizedBatchNo = centralizedBatchNo;
  6667. productionData.ProductionLineID = procedure.ProductionLineID;
  6668. productionData.ProductionLineCode = procedure.ProductionlineCode;
  6669. productionData.ProductionLineName = procedure.ProductionlineName;
  6670. productionData.ProcedureID = procedure.ProcedureID;
  6671. productionData.ProcedureCode = procedure.ProcedureCode;
  6672. productionData.ProcedureName = procedure.ProcedureName;
  6673. productionData.ProcedureModel = procedure.ProcedureModel;
  6674. productionData.ModelType = procedure.ModelType;
  6675. productionData.NodeType = procedure.NodeType;
  6676. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  6677. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6678. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  6679. productionData.OrganizationID = procedure.OrganizationID;
  6680. productionData.GoodsID = goodsID;
  6681. productionData.GoodsCode = goodsCode;
  6682. productionData.GoodsName = goodsName;
  6683. productionData.GoodsLevelID = productionData.GoodsLevelID;
  6684. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6685. //如果报废给此产品最状态赋值 wangxin 2015/4/1 因为删除掉了生产数据表中的产品最终状态
  6686. ////if (productionData.ProductionDefects != null)
  6687. ////{
  6688. //// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6689. //// {
  6690. //// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  6691. //// {
  6692. //// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  6693. //// break;
  6694. //// }
  6695. //// }
  6696. ////}
  6697. ////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  6698. ////{
  6699. //// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  6700. ////}
  6701. ////// string sqlReFire = @"select
  6702. ////// isrefire
  6703. ////// from tp_pm_inproduction where barcode=:barcode
  6704. ////// ";
  6705. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  6706. ////// new OracleParameter(":barcode",productionData.Barcode),
  6707. ////// };
  6708. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  6709. ////// //DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6710. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6711. ////// {
  6712. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  6713. ////// {
  6714. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  6715. ////// }
  6716. ////// }
  6717. #endregion
  6718. string OutSpecialRepairflag = "0";//干补标识
  6719. //errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6720. errMsg = AddProductionDataWaster(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  6721. if (!string.IsNullOrEmpty(errMsg))
  6722. {
  6723. return errMsg;
  6724. }
  6725. #endregion
  6726. //#region 添加生产者数据
  6727. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo);
  6728. //if (!string.IsNullOrEmpty(errMsg))
  6729. //{
  6730. // return errMsg;
  6731. //}
  6732. //#endregion
  6733. #region 条码有缺陷
  6734. // 废品标识
  6735. bool scrapFlag = false;
  6736. // 存在缺陷 插入缺陷表
  6737. if (productionData.ProductionDefects != null)
  6738. {
  6739. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  6740. {
  6741. #region 保存缺陷
  6742. productionDefect.ProductionDataID = productionDataID;
  6743. productionDefect.BarCode = productionData.Barcode;
  6744. productionDefect.ProductionLineID = procedure.ProductionLineID;
  6745. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  6746. productionDefect.ProductionLineName = procedure.ProductionlineName;
  6747. productionDefect.ProcedureID = procedure.ProcedureID;
  6748. productionDefect.ProcedureCode = procedure.ProcedureCode;
  6749. productionDefect.ProcedureName = procedure.ProcedureName;
  6750. productionDefect.UserID = productionData.UserID;
  6751. productionDefect.UserCode = productionData.UserCode;
  6752. productionDefect.UserName = productionData.UserName;
  6753. productionDefect.GoodsID = productionData.GoodsID;
  6754. productionDefect.GoodsCode = productionData.GoodsCode;
  6755. productionDefect.GoodsName = productionData.GoodsName;
  6756. productionData.Remarks = productionData.Remarks;
  6757. productionDefect.ScrapResponFlag
  6758. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  6759. // 保存缺陷
  6760. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  6761. if (!string.IsNullOrEmpty(errMsg))
  6762. {
  6763. return errMsg;
  6764. }
  6765. #endregion
  6766. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  6767. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  6768. {
  6769. scrapFlag = true;
  6770. #region 添加废弃产品 删除在产产品数据
  6771. #region 添加废弃产品
  6772. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  6773. #region 属性赋值
  6774. scrapProduct.BarCode = productionData.Barcode;
  6775. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  6776. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  6777. {
  6778. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  6779. }
  6780. else
  6781. {
  6782. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  6783. }
  6784. scrapProduct.ScrapDate = accountDate;
  6785. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  6786. scrapProduct.Remarks = productionDefect.Remarks;
  6787. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  6788. scrapProduct.Auditor = sUserInfo.UserID;
  6789. scrapProduct.AuditlDate = accountDate;
  6790. scrapProduct.AccountDate = accountDate;
  6791. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  6792. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6793. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  6794. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  6795. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6796. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6797. scrapProduct.ScrapType = 1;
  6798. #endregion
  6799. // 保存报废
  6800. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  6801. // 保存失败
  6802. if (!string.IsNullOrEmpty(errMsg))
  6803. {
  6804. return errMsg;
  6805. }
  6806. #endregion
  6807. #region 添加责任工序
  6808. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  6809. //xuwei fix 2019-09-26 使用通用方法判定
  6810. if (IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode) == 1)
  6811. procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  6812. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  6813. {
  6814. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  6815. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  6816. ResponProcedureEntity responProce = new ResponProcedureEntity();
  6817. #region 属性赋值
  6818. responProce.BarCode = productionData.Barcode;
  6819. responProce.ProductionDataID = productionDataID;
  6820. responProce.ProductionLineID = productionDefect.ProductionLineID;
  6821. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  6822. responProce.ProductionLineName = productionDefect.ProductionLineName;
  6823. responProce.ProcedureID = productionDefect.DefectProcedureID;
  6824. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  6825. responProce.ProcedureName = productionDefect.DefectProcedureName;
  6826. responProce.UserID = productionDefect.DefectUserID;
  6827. responProce.UserCode = productionDefect.DefectUserCode;
  6828. responProce.UserName = productionDefect.DefectUserName;
  6829. responProce.Remarks = productionDefect.Remarks;
  6830. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  6831. #endregion
  6832. // 保存责任工序
  6833. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  6834. // 保存失败
  6835. if (!string.IsNullOrEmpty(errMsg))
  6836. {
  6837. return errMsg;
  6838. }
  6839. }
  6840. #endregion
  6841. #region 删除在产产品数据
  6842. InProductionEntity delInProductionEntity = new InProductionEntity();
  6843. delInProductionEntity.BarCode = productionData.Barcode;
  6844. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  6845. // 执行删除 在产数据
  6846. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  6847. // 执行失败
  6848. // if (!string.IsNullOrEmpty(errMsg)) 注释日期2015-12-28
  6849. // {
  6850. // return errMsg;
  6851. // }
  6852. #endregion
  6853. #endregion
  6854. }
  6855. #endregion
  6856. }
  6857. }
  6858. #endregion
  6859. // 条码有缺陷或者报废
  6860. //wangxin 20150414
  6861. //if (scrapFlag || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  6862. //{
  6863. #region 有缺陷 删除条码对应窑车产品
  6864. if (productionData.DefectFlag == Constant.GoodsLevelType.Defect.GetHashCode())
  6865. {
  6866. errMsg = DeleteKilnCarGoods(oracleTrConn, productionData.Barcode);
  6867. if (!string.IsNullOrEmpty(errMsg))
  6868. {
  6869. return errMsg;
  6870. }
  6871. }
  6872. #endregion
  6873. //}
  6874. //wangxin 20150414 end
  6875. // 条码没有报废
  6876. if (!scrapFlag)
  6877. {
  6878. #region 修改在产产品数据的当前工序
  6879. InProductionEntity inProductionEntity = new InProductionEntity();
  6880. inProductionEntity.BarCode = productionData.Barcode;
  6881. //流程工序
  6882. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  6883. // 当前工序
  6884. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  6885. inProductionEntity.ProcedureID = procedure.ProcedureID;
  6886. // 生产数据ID
  6887. inProductionEntity.ProductionDataID = productionDataID;
  6888. // 工序模型
  6889. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  6890. // 工序类别
  6891. inProductionEntity.ModelType = procedure.ModelType;
  6892. // 生产工号
  6893. inProductionEntity.UserID = productionData.UserID;
  6894. // 缺陷标识
  6895. inProductionEntity.DefectFlag = productionData.DefectFlag;
  6896. // 返工工序ID
  6897. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  6898. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  6899. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  6900. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  6901. // 执行修改
  6902. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  6903. // 执行失败
  6904. if (!string.IsNullOrEmpty(errMsg))
  6905. {
  6906. return errMsg;
  6907. }
  6908. #endregion
  6909. }
  6910. }
  6911. return errMsg;
  6912. }
  6913. /// <summary>
  6914. /// 删除窑车产品
  6915. /// </summary>
  6916. /// <param name="oracleTrConn">数据连接</param>
  6917. /// <param name="barcode">产品条码</param>
  6918. /// <returns>string</returns>
  6919. private static string DeleteKilnCarGoods(IDBTransaction oracleTrConn, string barcode)
  6920. {
  6921. string sql = "delete TP_PM_KilnCarGoods where BarCode = :barcode";
  6922. OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":barcode", barcode) };
  6923. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  6924. // 保存失败
  6925. if (result != Constant.INT_IS_ONE)
  6926. {
  6927. //return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  6928. }
  6929. return null;
  6930. }
  6931. /// <summary>
  6932. /// 添加成品编辑
  6933. /// </summary>
  6934. /// <param name="oracleTrConn">数据连接</param>
  6935. /// <param name="procedure">工序对象</param>
  6936. /// <param name="productionDataEntitys">生产数据集</param>
  6937. /// <param name="sUserInfo">用户基本信息</param>
  6938. /// <returns>string</returns>
  6939. //private static string AddFinishCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  6940. //{
  6941. // string errMsg = "";
  6942. // // 获得账务日期
  6943. // DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  6944. // // 本批采集的批次号
  6945. // string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  6946. // foreach (ProductionDataEntity productionData in productionDataEntitys)
  6947. // {
  6948. // if (string.IsNullOrEmpty(productionData.Barcode))
  6949. // {
  6950. // throw new Exception("传入的条码号为空");
  6951. // }
  6952. // int goodsID = Constant.INT_IS_ZERO;
  6953. // string goodsCode = string.Empty;
  6954. // string goodsName = string.Empty;
  6955. // // 注浆者工号
  6956. // string groutingUserCode = string.Empty;
  6957. // // 次品标识
  6958. // bool substandardFlag = false;
  6959. // #region 校验条码有效性
  6960. // errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  6961. // if (!string.IsNullOrEmpty(errMsg))
  6962. // {
  6963. // if (productionData.ProductionDataID == 0)
  6964. // return errMsg;
  6965. // }
  6966. // #endregion
  6967. // #region 添加生产数据
  6968. // #region 属性赋值
  6969. // productionData.CentralizedBatchNo = centralizedBatchNo;
  6970. // productionData.ProductionLineID = procedure.ProductionLineID;
  6971. // productionData.ProductionLineCode = procedure.ProductionlineCode;
  6972. // productionData.ProductionLineName = procedure.ProductionlineName;
  6973. // productionData.CompleteProcedureID = procedure.ProcedureID;
  6974. // productionData.ProcedureCode = procedure.ProcedureCode;
  6975. // productionData.ProcedureName = procedure.ProcedureName;
  6976. // productionData.ProcedureModel = procedure.ProcedureModel;
  6977. // productionData.ModelType = procedure.ModelType;
  6978. // productionData.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  6979. // // 重烧
  6980. // if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  6981. // {
  6982. // //productionData.GoodsLevelID = null;
  6983. // productionData.IsReFire = (int)Constant.ReFireFlag.No;
  6984. // }
  6985. // // 次品
  6986. // else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  6987. // {
  6988. // //productionData.GoodsLevelID = null;
  6989. // substandardFlag = true;
  6990. // }
  6991. // // 查询新插入的生产数据ID
  6992. // if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  6993. // {
  6994. // //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  6995. // //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  6996. // string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  6997. // DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire);
  6998. // if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  6999. // {
  7000. // productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  7001. // }
  7002. // }
  7003. // productionData.OrganizationID = procedure.OrganizationID;
  7004. // productionData.GoodsID = goodsID;
  7005. // productionData.GoodsCode = goodsCode;
  7006. // productionData.GoodsName = goodsName;
  7007. // productionData.GoodsLevelID = productionData.GoodsLevelID;
  7008. // productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7009. // //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  7010. // //{
  7011. // // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  7012. // //}
  7013. // #endregion
  7014. // string OutSpecialRepairflag = "0";//干补标识
  7015. // errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  7016. // if (!string.IsNullOrEmpty(errMsg))
  7017. // {
  7018. // return errMsg;
  7019. // }
  7020. // // 查询新插入的生产数据ID
  7021. // string sql = "select SEQ_PM_ProductionData_ID.Currval from dual";
  7022. // string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7023. // // 新插入的班次配置表ID
  7024. // int productionDataID = 0;
  7025. // if (!string.IsNullOrEmpty(idStr))
  7026. // {
  7027. // productionDataID = int.Parse(idStr);
  7028. // }
  7029. // else
  7030. // {
  7031. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7032. // }
  7033. // #endregion
  7034. // #region 添加生产者数据
  7035. // int? ClassesSettingID = null;//班次配置ID
  7036. // errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  7037. // if (!string.IsNullOrEmpty(errMsg))
  7038. // {
  7039. // return errMsg;
  7040. // }
  7041. // #endregion
  7042. // #region 条码有缺陷
  7043. // #region 是次品 添加废弃产品
  7044. // if (substandardFlag)
  7045. // {
  7046. // #region 添加废弃产品
  7047. // ScrapProductEntity scrapProduct = new ScrapProductEntity();
  7048. // #region 属性赋值
  7049. // scrapProduct.BarCode = productionData.Barcode;
  7050. // scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  7051. // scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  7052. // scrapProduct.ScrapDate = accountDate;
  7053. // scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  7054. // scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  7055. // scrapProduct.Auditor = sUserInfo.UserID;
  7056. // scrapProduct.AuditlDate = accountDate;
  7057. // scrapProduct.AccountDate = accountDate;
  7058. // scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  7059. // scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7060. // #endregion
  7061. // // 保存报废
  7062. // errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  7063. // // 保存失败
  7064. // if (!string.IsNullOrEmpty(errMsg))
  7065. // {
  7066. // return errMsg;
  7067. // }
  7068. // #endregion
  7069. // }
  7070. // #endregion
  7071. // // 存在缺陷 插入缺陷表
  7072. // if (productionData.ProductionDefects != null)
  7073. // {
  7074. // foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7075. // {
  7076. // #region 保存缺陷
  7077. // productionDefect.ProductionDataID = productionDataID;
  7078. // productionDefect.BarCode = productionData.Barcode;
  7079. // productionDefect.ProductionLineID = procedure.ProductionLineID;
  7080. // productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  7081. // productionDefect.ProductionLineName = procedure.ProductionlineName;
  7082. // productionDefect.ProcedureID = procedure.ProcedureID;
  7083. // productionDefect.ProcedureCode = procedure.ProcedureCode;
  7084. // productionDefect.ProcedureName = procedure.ProcedureName;
  7085. // productionDefect.UserID = productionData.UserID;
  7086. // productionDefect.UserCode = productionData.UserCode;
  7087. // productionDefect.UserName = productionData.UserName;
  7088. // productionDefect.GoodsID = productionData.GoodsID;
  7089. // productionDefect.GoodsCode = productionData.GoodsCode;
  7090. // productionDefect.GoodsName = productionData.GoodsName;
  7091. // productionData.Remarks = productionData.Remarks;
  7092. // productionDefect.ScrapResponFlag
  7093. // = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  7094. // // 保存缺陷
  7095. // errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  7096. // if (!string.IsNullOrEmpty(errMsg))
  7097. // {
  7098. // return errMsg;
  7099. // }
  7100. // #endregion
  7101. // #region 是次品 添加废弃责任工序
  7102. // if (substandardFlag)
  7103. // {
  7104. // #region 添加责任工序
  7105. // ResponProcedureEntity responProce = new ResponProcedureEntity();
  7106. // // 查询新插入的废弃ID
  7107. // string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  7108. // string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  7109. // #region 属性赋值
  7110. // responProce.BarCode = productionData.Barcode;
  7111. // responProce.ProductionDataID = productionDataID;
  7112. // responProce.ProductionLineID = productionDefect.ProductionLineID;
  7113. // responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7114. // responProce.ProductionLineName = productionDefect.ProductionLineName;
  7115. // responProce.ProcedureID = productionDefect.DefectProcedureID;
  7116. // responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7117. // responProce.ProcedureName = productionDefect.DefectProcedureName;
  7118. // responProce.UserID = productionDefect.DefectUserID;
  7119. // responProce.UserCode = productionDefect.DefectUserCode;
  7120. // responProce.UserName = productionDefect.DefectUserName;
  7121. // responProce.Remarks = productionDefect.Remarks;
  7122. // responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  7123. // #endregion
  7124. // // 保存责任工序
  7125. // errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7126. // // 保存失败
  7127. // if (!string.IsNullOrEmpty(errMsg))
  7128. // {
  7129. // return errMsg;
  7130. // }
  7131. // #endregion
  7132. // }
  7133. // #endregion
  7134. // }
  7135. // }
  7136. // #endregion
  7137. // #region 条码是次品 删除在产产品数据
  7138. // if (substandardFlag)
  7139. // {
  7140. // #region 删除在产产品数据
  7141. // InProductionEntity delInProductionEntity = new InProductionEntity();
  7142. // delInProductionEntity.BarCode = productionData.Barcode;
  7143. // // 执行删除 在产数据
  7144. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7145. // // 执行失败
  7146. // if (!string.IsNullOrEmpty(errMsg))
  7147. // {
  7148. // return errMsg;
  7149. // }
  7150. // #endregion
  7151. // }
  7152. // #endregion
  7153. // #region 条码不是次品
  7154. // if (!substandardFlag)
  7155. // {
  7156. // #region 中间工序/重烧 修改在产产品数据
  7157. // if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7158. // || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode())
  7159. // {
  7160. // #region 修改在产产品数据的当前工序
  7161. // InProductionEntity inProductionEntity = new InProductionEntity();
  7162. // inProductionEntity.BarCode = productionData.Barcode;
  7163. // // 当前工序
  7164. // inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  7165. // // 工序模型
  7166. // inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7167. // // 工序类别
  7168. // inProductionEntity.ModelType = procedure.ModelType;
  7169. // // 生产工号
  7170. // inProductionEntity.UserID = productionData.UserID;
  7171. // // 重烧
  7172. // inProductionEntity.IsReFire = productionData.IsReFire;
  7173. // // 缺陷
  7174. // inProductionEntity.DefectFlag = productionData.DefectFlag;
  7175. // // 产品分级
  7176. // inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  7177. // // 返工工序ID
  7178. // inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7179. // inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7180. // inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7181. // // 执行修改
  7182. // errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7183. // // 执行失败
  7184. // if (!string.IsNullOrEmpty(errMsg))
  7185. // {
  7186. // return errMsg;
  7187. // }
  7188. // #endregion
  7189. // }
  7190. // #endregion
  7191. // #region 结束工序 添加成品数据 删除在产产品数据
  7192. // else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  7193. // {
  7194. // #region 添加成品数据 删除在产产品数据
  7195. // FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7196. // finishedProduct.BarCode = productionData.Barcode;
  7197. // errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo);
  7198. // if (!string.IsNullOrEmpty(errMsg))
  7199. // {
  7200. // return errMsg;
  7201. // }
  7202. // InProductionEntity delInProductionEntity = new InProductionEntity();
  7203. // delInProductionEntity.BarCode = productionData.Barcode;
  7204. // // 执行删除 在产数据
  7205. // errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7206. // // 执行失败
  7207. // if (!string.IsNullOrEmpty(errMsg))
  7208. // {
  7209. // return errMsg;
  7210. // }
  7211. // #endregion
  7212. // }
  7213. // #endregion
  7214. // }
  7215. // #endregion
  7216. // }
  7217. // return errMsg;
  7218. //}
  7219. /// <summary>
  7220. /// 保存标准检验
  7221. /// </summary>
  7222. /// <param name="oracleTrConn">连接对象</param>
  7223. /// <param name="procedure">工序信息</param>
  7224. /// <param name="productionDataEntitys">生产数据集合</param>
  7225. /// <param name="sUserInfo">用户基本信息</param>
  7226. /// <returns>string</returns>
  7227. private static string AddNormalCheck(IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, SUserInfo sUserInfo)
  7228. {
  7229. string errMsg = "";
  7230. // 获得账务日期
  7231. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  7232. // 本批采集的批次号
  7233. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  7234. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  7235. #region 查询产品分级
  7236. string sqlGoodsLevel = "select GoodsLevelID,GoodsLevelTypeID from TP_MST_GoodsLevel where AccountID=:accountID and ValueFlag=1";
  7237. DataTable goodsLevelTable = oracleTrConn.GetSqlResultToDt(sqlGoodsLevel, new OracleParameter[] { new OracleParameter(":accountID", sUserInfo.AccountID) });
  7238. #endregion
  7239. foreach (ProductionDataEntity productionData in productionDataEntitys)
  7240. {
  7241. if (string.IsNullOrEmpty(productionData.Barcode))
  7242. {
  7243. throw new Exception("传入的条码号为空");
  7244. }
  7245. if (productionData.ProductionDataID != 0)
  7246. {
  7247. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  7248. if (!string.IsNullOrEmpty(errMsg))
  7249. {
  7250. return errMsg;
  7251. }
  7252. // 删除报废条码
  7253. string updateScrapSql = @"update tp_pm_scrapproduct set ValueFlag=0
  7254. where tp_pm_scrapproduct.barcode=:barcode";
  7255. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  7256. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  7257. };
  7258. oracleTrConn.ExecuteNonQuery(updateScrapSql, ScrapProductparas);
  7259. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  7260. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  7261. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  7262. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  7263. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  7264. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  7265. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  7266. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  7267. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  7268. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  7269. KILNID, KILNCODE, KILNNAME, KILNCARID,
  7270. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  7271. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID)
  7272. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  7273. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  7274. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  7275. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  7276. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  7277. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  7278. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  7279. CREATEUSERID, UPDATETIME, :UpdateUserID,
  7280. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  7281. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  7282. KILNID, KILNCODE, KILNNAME, KILNCARID,
  7283. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID ,
  7284. FlowProcedureTime,ProcedureID,sysdate,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  7285. from TP_PM_InProductionTrash where barcode=:barcode ";
  7286. OracleParameter[] InProductparas = new OracleParameter[]{
  7287. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  7288. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input),
  7289. };
  7290. oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  7291. //删除回收站中的条码
  7292. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  7293. OracleParameter[] TrashProductparas = new OracleParameter[]{
  7294. new OracleParameter(":barcode",OracleDbType.Varchar2, productionData.Barcode,ParameterDirection.Input)
  7295. };
  7296. oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  7297. }
  7298. int goodsID = Constant.INT_IS_ZERO;
  7299. string goodsCode = string.Empty;
  7300. string goodsName = string.Empty;
  7301. // 注浆者工号
  7302. string groutingUserCode = string.Empty;
  7303. #region 校验条码有效性
  7304. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  7305. if (!string.IsNullOrEmpty(errMsg))
  7306. {
  7307. if (productionData.ProductionDataID == 0)
  7308. return errMsg;
  7309. }
  7310. #endregion
  7311. // 查询新插入的生产数据ID
  7312. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  7313. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7314. int? ClassesSettingID = null;//班次配置ID
  7315. // 新插入的班次配置表ID
  7316. int productionDataID = 0;
  7317. if (!string.IsNullOrEmpty(idStr))
  7318. {
  7319. productionDataID = int.Parse(idStr);
  7320. }
  7321. else
  7322. {
  7323. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7324. }
  7325. #region 添加生产者数据
  7326. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  7327. if (!string.IsNullOrEmpty(errMsg))
  7328. {
  7329. return errMsg;
  7330. }
  7331. #endregion
  7332. #region 添加生产数据
  7333. #region 属性赋值
  7334. productionData.ClassesSettingID = ClassesSettingID;
  7335. productionData.ProductionDataID = Convert.ToInt32(idStr);
  7336. productionData.CentralizedBatchNo = centralizedBatchNo;
  7337. productionData.ProductionLineID = procedure.ProductionLineID;
  7338. productionData.ProductionLineCode = procedure.ProductionlineCode;
  7339. productionData.ProductionLineName = procedure.ProductionlineName;
  7340. productionData.CompleteProcedureID = procedure.ProcedureID;
  7341. productionData.ProcedureID = procedure.ProcedureID;
  7342. productionData.ProcedureCode = procedure.ProcedureCode;
  7343. productionData.ProcedureName = procedure.ProcedureName;
  7344. productionData.ProcedureModel = procedure.ProcedureModel;
  7345. productionData.ModelType = procedure.ModelType;
  7346. productionData.NodeType = procedure.NodeType;
  7347. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  7348. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  7349. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  7350. productionData.OrganizationID = procedure.OrganizationID;
  7351. productionData.GoodsID = goodsID;
  7352. productionData.GoodsCode = goodsCode;
  7353. productionData.GoodsName = goodsName;
  7354. productionData.GoodsLevelID = productionData.GoodsLevelID;
  7355. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7356. ////////如果报废给此产品最状态赋值
  7357. //////if (productionData.ProductionDefects != null)
  7358. //////{
  7359. ////// foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7360. ////// {
  7361. ////// if ((string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag) == "1")
  7362. ////// {
  7363. ////// productionData.GoodsEnding = productionData.GoodsLevelTypeID.ToString();
  7364. ////// break;
  7365. ////// }
  7366. ////// }
  7367. //////}
  7368. //////if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste)
  7369. //////{
  7370. ////// productionData.GoodsEnding = Constant.GoodsLevelType.Waste.GetHashCode().ToString();
  7371. //////}
  7372. ////// string sqlReFire = @"select
  7373. ////// isrefire
  7374. ////// from tp_pm_inproduction where barcode=:barcode
  7375. ////// ";
  7376. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  7377. ////// new OracleParameter(":barcode",productionData.Barcode),
  7378. ////// };
  7379. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  7380. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  7381. ////// {
  7382. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  7383. ////// {
  7384. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  7385. ////// }
  7386. ////// }
  7387. #endregion
  7388. string OutSpecialRepairflag = "0";//干补标识
  7389. DataSet outDataSet = null;
  7390. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7391. //xuwei fix 2019-09-26 使用通用方法判定
  7392. // 2019-1016
  7393. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7394. {
  7395. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7396. if (isNodeBegin == 0)
  7397. {
  7398. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  7399. }
  7400. }
  7401. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7402. {
  7403. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet);
  7404. }
  7405. else
  7406. {
  7407. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  7408. }
  7409. if (!string.IsNullOrEmpty(errMsg))
  7410. {
  7411. return errMsg;
  7412. }
  7413. if (productionData.ProductionDefects == null || productionData.ProductionDefects.Count == 0)
  7414. {
  7415. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  7416. }
  7417. #endregion
  7418. #region 获得产品分级ID
  7419. DataRow[] dr = goodsLevelTable.Select("GoodsLevelTypeID=" + productionData.GoodsLevelTypeID);
  7420. // 获得产品分级ID
  7421. productionData.GoodsLevelID = Convert.ToInt32(dr[0]["GoodsLevelID"]);
  7422. #endregion
  7423. #region 开始节点
  7424. //xuwei remove 2019-09-26 此处应该是重复判定 移除
  7425. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7426. //xuwei fix 2019-09-26 使用通用方法判定
  7427. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7428. // 2019-1016
  7429. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7430. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7431. {
  7432. #region 添加在产产品数据
  7433. InProductionEntity addInProductionEntity = new InProductionEntity();
  7434. addInProductionEntity.ProductionDataID = productionData.ProductionDataID;
  7435. addInProductionEntity.BarCode = productionData.Barcode;
  7436. //流程工序
  7437. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7438. // 当前工序
  7439. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  7440. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  7441. //生产数据ID
  7442. addInProductionEntity.ProductionDataID = productionDataID;
  7443. // 工序模型
  7444. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7445. // 工序类别
  7446. addInProductionEntity.ModelType = procedure.ModelType;
  7447. // 正常坯
  7448. addInProductionEntity.IsPublicBody = (int)Constant.PublicBodyFlag.No;
  7449. #endregion
  7450. // 生产工号
  7451. addInProductionEntity.UserID = productionData.UserID;
  7452. // 执行添加
  7453. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet);
  7454. // 执行失败
  7455. if (!string.IsNullOrEmpty(errMsg))
  7456. {
  7457. return errMsg;
  7458. }
  7459. }
  7460. #endregion
  7461. #region 条码有缺陷
  7462. // 废品标识
  7463. bool scrapFlag = false;
  7464. // 存在缺陷 插入缺陷表
  7465. if (productionData.ProductionDefects != null)
  7466. {
  7467. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  7468. {
  7469. #region 保存缺陷
  7470. productionDefect.ProductionDataID = productionDataID;
  7471. productionDefect.BarCode = productionData.Barcode;
  7472. productionDefect.ProductionLineID = procedure.ProductionLineID;
  7473. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  7474. productionDefect.ProductionLineName = procedure.ProductionlineName;
  7475. productionDefect.ProcedureID = procedure.ProcedureID;
  7476. productionDefect.ProcedureCode = procedure.ProcedureCode;
  7477. productionDefect.ProcedureName = procedure.ProcedureName;
  7478. productionDefect.UserID = productionData.UserID;
  7479. productionDefect.UserCode = productionData.UserCode;
  7480. productionDefect.UserName = productionData.UserName;
  7481. productionDefect.GoodsID = productionData.GoodsID;
  7482. productionDefect.GoodsCode = productionData.GoodsCode;
  7483. productionDefect.GoodsName = productionData.GoodsName;
  7484. productionDefect.Remarks = productionData.Remarks;
  7485. productionDefect.ScrapResponFlag
  7486. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  7487. // 保存缺陷
  7488. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  7489. if (!string.IsNullOrEmpty(errMsg))
  7490. {
  7491. return errMsg;
  7492. }
  7493. #endregion
  7494. #region 缺陷列表中只有一个报废工序 添加废弃产品 删除在产产品数据
  7495. if (!scrapFlag && productionDefect.ScrapResponFlag == "1")
  7496. {
  7497. scrapFlag = true;
  7498. #region 添加废弃产品 删除在产产品数据
  7499. #region 添加废弃产品
  7500. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  7501. #region 属性赋值
  7502. scrapProduct.BarCode = productionData.Barcode;
  7503. scrapProduct.ScrapType = Constant.ScrapType.Waste.GetHashCode();
  7504. //xuwei remove 2019-09-26 此处是重复判定移除
  7505. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7506. //xuwei fix 2019-09-26 使用通用方法判定
  7507. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7508. // 2019-1016
  7509. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7510. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  7511. {
  7512. scrapProduct.ResponType = Constant.ScrapResponType.NoPerson.GetHashCode();
  7513. }
  7514. else
  7515. {
  7516. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  7517. }
  7518. scrapProduct.ScrapDate = accountDate;
  7519. scrapProduct.Rreason = Constant.SCRAPTYPE_WASTE;
  7520. scrapProduct.Remarks = productionDefect.Remarks;
  7521. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  7522. scrapProduct.Auditor = sUserInfo.UserID;
  7523. scrapProduct.AuditlDate = accountDate;
  7524. scrapProduct.AccountDate = accountDate;
  7525. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  7526. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7527. string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  7528. string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7529. scrapProduct.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7530. scrapProduct.ScrapType = 1;
  7531. scrapProduct.IsQualityStatistics = 1;
  7532. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  7533. #endregion
  7534. // 保存报废
  7535. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  7536. // 保存失败
  7537. if (!string.IsNullOrEmpty(errMsg))
  7538. {
  7539. return errMsg;
  7540. }
  7541. #endregion
  7542. #region 添加责任工序
  7543. //xuwei remove 2019-09-26 此处是重复判定移除
  7544. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7545. //xuwei fix 2019-09-26 使用通用方法判定
  7546. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7547. // 2019-1016
  7548. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7549. // 不是开始工序时。需要添加责任工序
  7550. if (procedure.NodeType != Constant.ProcedureNodeType.Begin.GetHashCode())
  7551. {
  7552. //string sqlScrapProduct = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  7553. //string idStrScrapProduct = oracleTrConn.GetSqlResultToStr(sqlScrapProduct);
  7554. ResponProcedureEntity responProce = new ResponProcedureEntity();
  7555. #region 属性赋值
  7556. responProce.BarCode = productionData.Barcode;
  7557. responProce.ProductionDataID = productionDataID;
  7558. responProce.ProductionLineID = productionDefect.ProductionLineID;
  7559. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  7560. responProce.ProductionLineName = productionDefect.ProductionLineName;
  7561. responProce.ProcedureID = productionDefect.DefectProcedureID;
  7562. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  7563. responProce.ProcedureName = productionDefect.DefectProcedureName;
  7564. responProce.UserID = productionDefect.DefectUserID;
  7565. responProce.UserCode = productionDefect.DefectUserCode;
  7566. responProce.UserName = productionDefect.DefectUserName;
  7567. responProce.Remarks = productionDefect.Remarks;
  7568. responProce.ScrapProductID = Convert.ToInt32(idStrScrapProduct);
  7569. #endregion
  7570. // 保存责任工序
  7571. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  7572. // 保存失败
  7573. if (!string.IsNullOrEmpty(errMsg))
  7574. {
  7575. return errMsg;
  7576. }
  7577. }
  7578. #endregion
  7579. #region 删除在产产品数据
  7580. InProductionEntity delInProductionEntity = new InProductionEntity();
  7581. delInProductionEntity.BarCode = productionData.Barcode;
  7582. delInProductionEntity.CompleteProcedureID = productionData.ProcedureID;
  7583. // 执行删除 在产数据
  7584. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  7585. // 执行失败
  7586. if (!string.IsNullOrEmpty(errMsg))
  7587. {
  7588. return errMsg;
  7589. }
  7590. #endregion
  7591. #endregion
  7592. }
  7593. #endregion
  7594. }
  7595. }
  7596. #endregion
  7597. #region 条码没有报废
  7598. if (!scrapFlag)
  7599. {
  7600. #region 检验出缺陷 并且不是废品 修改在产产品数据
  7601. //xuwei remove 2019-09-26 此处是重复判定移除
  7602. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  7603. //xuwei fix 2019-09-26 使用通用方法判定
  7604. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  7605. // 2019-1016
  7606. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  7607. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  7608. || procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  7609. || productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Defect.GetHashCode())
  7610. {
  7611. #region 修改在产产品数据的当前工序
  7612. InProductionEntity inProductionEntity = new InProductionEntity();
  7613. inProductionEntity.ProductionDataID = Convert.ToInt32(idStr);
  7614. inProductionEntity.BarCode = productionData.Barcode;
  7615. // 当前工序
  7616. inProductionEntity.ProcedureID = procedure.ProcedureID;
  7617. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  7618. // 工序模型
  7619. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  7620. // 工序类别
  7621. inProductionEntity.ModelType = procedure.ModelType;
  7622. // 生产工号
  7623. inProductionEntity.UserID = productionData.UserID;
  7624. // 缺陷标识
  7625. inProductionEntity.DefectFlag = productionData.DefectFlag;
  7626. // 返工工序ID
  7627. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  7628. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  7629. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  7630. // 执行修改
  7631. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  7632. // 执行失败
  7633. if (!string.IsNullOrEmpty(errMsg))
  7634. {
  7635. return errMsg;
  7636. }
  7637. #endregion
  7638. }
  7639. #endregion
  7640. #region 结束工序、没有缺陷 添加成品数据 删除在产产品数据
  7641. //else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7642. // && productionData.DefectFlag == Constant.DefectFlag.No.GetHashCode())
  7643. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End
  7644. && productionData.GoodsLevelTypeID == Constant.GoodsLevelType.NoDefects.GetHashCode())
  7645. {
  7646. #region 添加成品数据 删除在产产品数据
  7647. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  7648. finishedProduct.BarCode = productionData.Barcode;
  7649. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  7650. if (!string.IsNullOrEmpty(errMsg))
  7651. {
  7652. return errMsg;
  7653. }
  7654. InProductionEntity delInProductionEntity = new InProductionEntity();
  7655. delInProductionEntity.BarCode = productionData.Barcode;
  7656. // 执行删除 在产数据
  7657. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  7658. // 执行失败
  7659. if (!string.IsNullOrEmpty(errMsg))
  7660. {
  7661. return errMsg;
  7662. }
  7663. #endregion
  7664. }
  7665. #endregion
  7666. }
  7667. #endregion
  7668. #region 写入检验标识 CheckFlag 用于计件 xuwei 2020-07-29
  7669. oracleTrConn.ExecuteNonQuery(@"
  7670. UPDATE
  7671. TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  7672. WHERE
  7673. PRODUCTIONDATAID = :PRODUCTIONDATAID
  7674. ",
  7675. new OracleParameter[] {
  7676. new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  7677. new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  7678. }
  7679. );
  7680. #endregion
  7681. #region 调用PLC xuwei add 2020-06-29
  7682. //成检交接 调用PLC接口 2020-06-29 xuwei
  7683. if (procedure.ModelType == -4)
  7684. {
  7685. return PLCModuleLogic.DoPLCWorkByUser_HEGII_S3(sUserInfo, productionData.Barcode, productionData.ProcedureID, 0, productionData.PLCWeight).Message;
  7686. }
  7687. #endregion
  7688. }
  7689. return errMsg;
  7690. }
  7691. ///// <summary>
  7692. ///// 报废更新产品数据最终状态
  7693. ///// </summary>
  7694. ///// <param name="oracleTrConn">连接对象</param>
  7695. ///// <param name="barcode">产品条码</param>
  7696. ///// <param name="sUserInfo">用记基本信息</param>
  7697. ///// <returns>string</returns>
  7698. ///// <remarks>
  7699. ///// 王鑫 2015.01.07 新建
  7700. ///// </remarks>
  7701. //private static string UpdateProductionDataGoodsEnding(IDBTransaction oracleTrConn, int productionDataID, int? goodsEnding, SUserInfo sUserInfo)
  7702. //{
  7703. // string sql = "update TP_PM_ProductionData set GoodsEnding=:goodsEnding where ProductionDataID = :productionDataID and AccountID=:accountid";
  7704. // OracleParameter[] paras = new OracleParameter[] {
  7705. // new OracleParameter(":goodsEnding",goodsEnding),
  7706. // new OracleParameter(":productionDataID",productionDataID),
  7707. // new OracleParameter(":accountid",sUserInfo.AccountID),
  7708. // };
  7709. // int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  7710. // // 更新失败
  7711. // if (result <= Constant.INT_IS_ZERO)
  7712. // {
  7713. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7714. // }
  7715. // // 成功返回null
  7716. // return null;
  7717. //}
  7718. /// <summary>
  7719. /// 添加责任工序
  7720. /// </summary>
  7721. /// <param name="oracleTrConn">连接对象</param>
  7722. /// <param name="responProce">责任工序</param>
  7723. /// <param name="productionDefect">缺陷数据</param>
  7724. /// <param name="sUserInfo">用户基本信息</param>
  7725. /// <returns>string</returns>
  7726. private static string AddResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  7727. {
  7728. OracleParameter[] oracleParameters = null;
  7729. string sql = null;
  7730. int result = 0;
  7731. // 查询新插入ID
  7732. if (productionDefect.DefectProcedureID != null)
  7733. {
  7734. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  7735. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7736. if (!string.IsNullOrEmpty(idStr))
  7737. {
  7738. responProce.ResponProcedureID = int.Parse(idStr);
  7739. }
  7740. else
  7741. {
  7742. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7743. }
  7744. #region SQL
  7745. sql = "insert into tp_pm_responprocedure"
  7746. + " (ResponProcedureID,"
  7747. + " scrapproductid,"
  7748. + " barcode,"
  7749. + " productiondataid,"
  7750. + " productionlineid,"
  7751. + " productionlinecode,"
  7752. + " productionlinename,"
  7753. + " procedureid,"
  7754. + " procedurecode,"
  7755. + " procedurename,"
  7756. + " userid,"
  7757. + " usercode,"
  7758. + " username,"
  7759. + " remarks,"
  7760. + " accountid,"
  7761. + " createuserid,"
  7762. + " updateuserid)"
  7763. + " values"
  7764. + " ("
  7765. + " :ResponProcedureID,"
  7766. + " :scrapproductid,"
  7767. + " :barcode,"
  7768. + " :productiondataid,"
  7769. + " :productionlineid,"
  7770. + " :productionlinecode,"
  7771. + " :productionlinename,"
  7772. + " :procedureid,"
  7773. + " :procedurecode,"
  7774. + " :procedurename,"
  7775. + " :userid,"
  7776. + " :usercode,"
  7777. + " :username,"
  7778. + " :remarks,"
  7779. + " :accountid,"
  7780. + " :createuserid,"
  7781. + " :updateuserid)";
  7782. #endregion
  7783. #region 参数
  7784. oracleParameters = new OracleParameter[] {
  7785. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  7786. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7787. new OracleParameter(":barcode",responProce.BarCode),
  7788. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  7789. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  7790. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  7791. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  7792. new OracleParameter(":procedureid",responProce.ProcedureID),
  7793. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  7794. new OracleParameter(":procedurename",responProce.ProcedureName),
  7795. new OracleParameter(":userid",responProce.UserID),
  7796. new OracleParameter(":usercode",responProce.UserCode),
  7797. new OracleParameter(":username",responProce.UserName),
  7798. new OracleParameter(":remarks",responProce.Remarks),
  7799. new OracleParameter(":accountid",sUserInfo.AccountID),
  7800. new OracleParameter(":createuserid",sUserInfo.UserID),
  7801. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7802. };
  7803. #endregion
  7804. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7805. // 保存失败
  7806. if (result != Constant.INT_IS_ONE)
  7807. {
  7808. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7809. }
  7810. //// 查询新插入ID
  7811. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  7812. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  7813. //if (!string.IsNullOrEmpty(idStr))
  7814. //{
  7815. // responProce.ResponProcedureID = int.Parse(idStr);
  7816. //}
  7817. //else
  7818. //{
  7819. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7820. //}
  7821. }
  7822. #region 插入责任人
  7823. foreach (DefectResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  7824. {
  7825. #region SQL
  7826. sql = "insert into tp_pm_scrapresponsible"
  7827. + " (barcode,"
  7828. + " scrapproductid,"
  7829. + " staffid,"
  7830. + " userid,"
  7831. + " usercode,"
  7832. + " ujobsid,"
  7833. + " sjobsid,"
  7834. + " staffstatus,"
  7835. + " accountid,"
  7836. + " createuserid,"
  7837. + " updateuserid,"
  7838. + " responprocedureid,"
  7839. + " respontype)"
  7840. + " values"
  7841. + " (:barcode,"
  7842. + " :scrapproductid,"
  7843. + " :staffid,"
  7844. + " :userid,"
  7845. + " :usercode,"
  7846. + " :ujobsid,"
  7847. + " :sjobsid,"
  7848. + " :staffstatus,"
  7849. + " :accountid,"
  7850. + " :createuserid,"
  7851. + " :updateuserid,"
  7852. + " :responprocedureid,"
  7853. + " :respontype)";
  7854. #endregion
  7855. #region 参数
  7856. oracleParameters = new OracleParameter[] {
  7857. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  7858. new OracleParameter(":barcode",responProce.BarCode),
  7859. new OracleParameter(":staffid",defectResponsible.StaffID),
  7860. new OracleParameter(":userid",defectResponsible.UserID),
  7861. new OracleParameter(":usercode",defectResponsible.UserCode),
  7862. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  7863. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  7864. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  7865. new OracleParameter(":accountid",sUserInfo.AccountID),
  7866. new OracleParameter(":createuserid",sUserInfo.UserID),
  7867. new OracleParameter(":updateuserid",sUserInfo.UserID),
  7868. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  7869. new OracleParameter(":respontype",Constant.ScrapResponType.Procedure.GetHashCode()),
  7870. };
  7871. #endregion
  7872. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  7873. // 保存失败
  7874. if (result != Constant.INT_IS_ONE)
  7875. {
  7876. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  7877. }
  7878. }
  7879. #endregion
  7880. return null;
  7881. }
  7882. /// <summary>
  7883. /// 保存废弃产品
  7884. /// </summary>
  7885. /// <param name="oracleTrConn">连接对象</param>
  7886. /// <param name="scrapProduct">报废产品</param>
  7887. /// <param name="sUserInfo">用户基本信息</param>
  7888. /// <returns>string</returns>
  7889. private static string AddScrapProductRejectToReject(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  7890. {
  7891. #region sql
  7892. string sql = "insert into tp_pm_scrapproduct"
  7893. + " (scrapproductid,barcode,"
  7894. + " productionlineid,"
  7895. + " productionlinecode,"
  7896. + " productionlinename,"
  7897. + " goodsid,"
  7898. + " goodscode,"
  7899. + " goodsname,"
  7900. + " groutingdailyid,"
  7901. + " groutingdailydetailid,"
  7902. + " groutingdate,"
  7903. + " groutinglineid,"
  7904. + " groutinglinecode,"
  7905. + " groutinglinename,"
  7906. + " gmouldtypeid,"
  7907. + " groutinglinedetailid,"
  7908. + " groutingmouldcode,"
  7909. + " mouldcode,"
  7910. + " scrapdate,"
  7911. + " rreason,"
  7912. + " remarks,"
  7913. + " auditstatus,"
  7914. + " auditor,"
  7915. + " auditdate,"
  7916. + " accountdate,"
  7917. + " accountid,"
  7918. + " createuserid,"
  7919. + " updateuserid,"
  7920. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  7921. + " auditopinion,"
  7922. + " GroutingUserID,"
  7923. + " GroutingUserCode,"
  7924. + " GroutingNum,"
  7925. + " IsPublicBody,"
  7926. + " IsReFire,"
  7927. + " kilnid,"
  7928. + " kilncode,"
  7929. + " kilnname,"
  7930. + " kilncarid,"
  7931. + " kilncarcode,"
  7932. + " kilncarname,"
  7933. + " kilncarbatchno,"
  7934. + " kilncarposition,"
  7935. + " specialRepairflag,"
  7936. + " logoid,ProductionDataID, "
  7937. + " ProcedureID, "
  7938. + " ProcedureCode, "
  7939. + " ProcedureName, "
  7940. + " ScrapType "
  7941. + ")"
  7942. + " select :scrapproductid,trash.barcode,"
  7943. + " trash.productionlineid,"
  7944. + " trash.productionlinecode,"
  7945. + " trash.productionlinename,"
  7946. + " trash.goodsid,"
  7947. + " trash.goodscode,"
  7948. + " trash.goodsname,"
  7949. + " trash.groutingdailyid,"
  7950. + " trash.groutingdailydetailid,"
  7951. + " trash.groutingdate,"
  7952. + " trash.groutinglineid,"
  7953. + " trash.groutinglinecode,"
  7954. + " trash.groutinglinename,"
  7955. + " trash.gmouldtypeid,"
  7956. + " trash.groutinglinedetailid,"
  7957. + " trash.groutingmouldcode,"
  7958. + " trash.mouldcode,"
  7959. + " :scrapdate,"
  7960. + " :rreason,"
  7961. + " :remarks,"
  7962. + " :auditstatus,"
  7963. + " :auditor,"
  7964. // + " :auditdate,"
  7965. + " sysdate,"
  7966. + " :accountdate,"
  7967. + " trash.accountid,"
  7968. + " :createuserid,"
  7969. + " :updateuserid,"
  7970. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  7971. + " :auditopinion,"
  7972. + " trash.GroutingUserID,"
  7973. + " trash.GroutingUserCode,"
  7974. + " trash.GroutingNum,"
  7975. + " trash.IsPublicBody,"
  7976. + " trash.IsReFire,"
  7977. + " trash.kilnid,"
  7978. + " trash.kilncode,"
  7979. + " trash.kilnname,"
  7980. + " trash.kilncarid,"
  7981. + " trash.kilncarcode,"
  7982. + " trash.kilncarname,"
  7983. + " trash.kilncarbatchno,"
  7984. + " trash.kilncarposition,"
  7985. + " trash.specialRepairflag,"
  7986. + " trash.logoid,:ProductionDataID,"
  7987. + " TP_PC_Procedure.ProcedureID, "
  7988. + " TP_PC_Procedure.ProcedureCode, "
  7989. + " TP_PC_Procedure.ProcedureName, "
  7990. + " :ScrapType "
  7991. + " from tp_pm_inproductiontrash trash"
  7992. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  7993. + " where trash.barcode = :barcode";
  7994. #endregion
  7995. #region 参数
  7996. OracleParameter[] oracleParameters = null;
  7997. oracleParameters = new OracleParameter[] {
  7998. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  7999. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  8000. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  8001. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  8002. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  8003. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  8004. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  8005. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  8006. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8007. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8008. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  8009. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  8010. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  8011. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  8012. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  8013. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  8014. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  8015. };
  8016. #endregion
  8017. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8018. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  8019. //// 保存失败
  8020. //if (result != Constant.INT_IS_ONE)
  8021. //{
  8022. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8023. //}
  8024. return null;
  8025. }
  8026. /// <summary>
  8027. /// 保存废弃产品
  8028. /// </summary>
  8029. /// <param name="oracleTrConn">连接对象</param>
  8030. /// <param name="scrapProduct">报废产品</param>
  8031. /// <param name="sUserInfo">用户基本信息</param>
  8032. /// <returns>string</returns>
  8033. private static string AddScrapProduct(IDBTransaction oracleTrConn, ScrapProductEntity scrapProduct, SUserInfo sUserInfo)
  8034. {
  8035. #region sql
  8036. string sql = "insert into tp_pm_scrapproduct"
  8037. + " (scrapproductid,barcode,"
  8038. + " productionlineid,"
  8039. + " productionlinecode,"
  8040. + " productionlinename,"
  8041. + " goodsid,"
  8042. + " goodscode,"
  8043. + " goodsname,"
  8044. + " groutingdailyid,"
  8045. + " groutingdailydetailid,"
  8046. + " groutingdate,"
  8047. + " groutinglineid,"
  8048. + " groutinglinecode,"
  8049. + " groutinglinename,"
  8050. + " gmouldtypeid,"
  8051. + " groutinglinedetailid,"
  8052. + " groutingmouldcode,"
  8053. + " mouldcode,"
  8054. + " scrapdate,"
  8055. + " rreason,"
  8056. + " remarks,"
  8057. + " auditstatus,"
  8058. + " auditor,"
  8059. + " auditdate,"
  8060. + " accountdate,"
  8061. + " accountid,"
  8062. + " createuserid,"
  8063. + " updateuserid,"
  8064. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  8065. + " auditopinion,"
  8066. + " GroutingUserID,"
  8067. + " GroutingUserCode,"
  8068. + " GroutingNum,"
  8069. + " IsPublicBody,"
  8070. + " IsReFire,"
  8071. + " kilnid,"
  8072. + " kilncode,"
  8073. + " kilnname,"
  8074. + " kilncarid,"
  8075. + " kilncarcode,"
  8076. + " kilncarname,"
  8077. + " kilncarbatchno,"
  8078. + " kilncarposition,"
  8079. + " specialRepairflag,"
  8080. + " logoid,"
  8081. + " ProductionDataID, "
  8082. + " ProcedureID, "
  8083. + " ProcedureCode, "
  8084. + " ProcedureName, "
  8085. + " ScrapType "
  8086. + ")"
  8087. + " select :scrapproductid,barcode,"
  8088. + " InProduction.productionlineid,"
  8089. + " InProduction.productionlinecode,"
  8090. + " InProduction.productionlinename,"
  8091. + " InProduction.goodsid,"
  8092. + " InProduction.goodscode,"
  8093. + " InProduction.goodsname,"
  8094. + " InProduction.groutingdailyid,"
  8095. + " InProduction.groutingdailydetailid,"
  8096. + " InProduction.groutingdate,"
  8097. + " InProduction.groutinglineid,"
  8098. + " InProduction.groutinglinecode,"
  8099. + " InProduction.groutinglinename,"
  8100. + " InProduction.gmouldtypeid,"
  8101. + " InProduction.groutinglinedetailid,"
  8102. + " InProduction.groutingmouldcode,"
  8103. + " InProduction.mouldcode,"
  8104. + " :scrapdate,"
  8105. + " :rreason,"
  8106. + " :remarks,"
  8107. + " :auditstatus,"
  8108. + " :auditor,"
  8109. // + " :auditdate,"
  8110. + " sysdate,"
  8111. + " :accountdate,"
  8112. + " InProduction.accountid,"
  8113. + " :createuserid,"
  8114. + " :updateuserid,"
  8115. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  8116. + " :auditopinion,"
  8117. + " InProduction.GroutingUserID,"
  8118. + " InProduction.GroutingUserCode,"
  8119. + " InProduction.GroutingNum,"
  8120. + " InProduction.IsPublicBody,"
  8121. + " InProduction.IsReFire,"
  8122. + " InProduction.kilnid,"
  8123. + " InProduction.kilncode,"
  8124. + " InProduction.kilnname,"
  8125. + " InProduction.kilncarid,"
  8126. + " InProduction.kilncarcode,"
  8127. + " InProduction.kilncarname,"
  8128. + " InProduction.kilncarbatchno,"
  8129. + " InProduction.kilncarposition,"
  8130. + " InProduction.specialRepairflag,"
  8131. + " InProduction.logoid,";
  8132. if (scrapProduct.IsQualityStatistics == null)
  8133. {
  8134. sql += " InProduction.ProductionDataID,";
  8135. }
  8136. else
  8137. {
  8138. sql += " :ProductionDataID,";
  8139. }
  8140. sql += " TP_PC_Procedure.ProcedureID, "
  8141. + " TP_PC_Procedure.ProcedureCode, "
  8142. + " TP_PC_Procedure.ProcedureName, "
  8143. + " :ScrapType"
  8144. + " from TP_PM_InProduction InProduction"
  8145. + " left join TP_PC_Procedure on InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  8146. + " where InProduction.barcode = :barcode";
  8147. #endregion
  8148. #region 参数
  8149. OracleParameter[] oracleParameters = null;
  8150. if (scrapProduct.IsQualityStatistics == null)
  8151. {
  8152. oracleParameters = new OracleParameter[] {
  8153. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  8154. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  8155. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  8156. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  8157. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  8158. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  8159. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  8160. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  8161. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8162. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8163. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  8164. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  8165. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  8166. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  8167. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  8168. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  8169. };
  8170. }
  8171. else
  8172. {
  8173. oracleParameters = new OracleParameter[] {
  8174. new OracleParameter(":scrapproductid",OracleDbType.Int32,scrapProduct.ScrapProductID,ParameterDirection.Input),
  8175. new OracleParameter(":scrapdate",OracleDbType.Date,scrapProduct.ScrapDate,ParameterDirection.Input),
  8176. new OracleParameter(":rreason",OracleDbType.Varchar2,scrapProduct.Rreason,ParameterDirection.Input),
  8177. new OracleParameter(":remarks",OracleDbType.Varchar2,scrapProduct.Remarks,ParameterDirection.Input),
  8178. new OracleParameter(":auditstatus",OracleDbType.Int32,scrapProduct.AuditStatus,ParameterDirection.Input),
  8179. new OracleParameter(":auditor",OracleDbType.Int32,scrapProduct.Auditor,ParameterDirection.Input),
  8180. //new OracleParameter(":auditdate",OracleDbType.Date,scrapProduct.AuditlDate,ParameterDirection.Input),
  8181. new OracleParameter(":accountdate",OracleDbType.Date,scrapProduct.AccountDate,ParameterDirection.Input),
  8182. new OracleParameter(":createuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8183. new OracleParameter(":updateuserid",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  8184. new OracleParameter(":respontype",OracleDbType.Varchar2,scrapProduct.ResponType,ParameterDirection.Input),
  8185. new OracleParameter(":auditopinion",OracleDbType.Varchar2,scrapProduct.AuditOpinion,ParameterDirection.Input),
  8186. new OracleParameter(":barcode",OracleDbType.Varchar2,scrapProduct.BarCode,ParameterDirection.Input),
  8187. new OracleParameter(":GoodsLevelID",OracleDbType.Int32,scrapProduct.GoodsLevelID,ParameterDirection.Input),
  8188. new OracleParameter(":GoodsLevelTypeID",OracleDbType.Int32,scrapProduct.GoodsLevelTypeID,ParameterDirection.Input),
  8189. new OracleParameter(":ScrapType",OracleDbType.Int32,scrapProduct.ScrapType,ParameterDirection.Input),
  8190. new OracleParameter(":ProductionDataID",OracleDbType.Int32,scrapProduct.ProductionDataID,ParameterDirection.Input),
  8191. };
  8192. }
  8193. #endregion
  8194. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8195. if (result == 0)
  8196. {
  8197. sql = "insert into tp_pm_scrapproduct"
  8198. + " (scrapproductid,barcode,"
  8199. + " productionlineid,"
  8200. + " productionlinecode,"
  8201. + " productionlinename,"
  8202. + " goodsid,"
  8203. + " goodscode,"
  8204. + " goodsname,"
  8205. + " groutingdailyid,"
  8206. + " groutingdailydetailid,"
  8207. + " groutingdate,"
  8208. + " groutinglineid,"
  8209. + " groutinglinecode,"
  8210. + " groutinglinename,"
  8211. + " gmouldtypeid,"
  8212. + " groutinglinedetailid,"
  8213. + " groutingmouldcode,"
  8214. + " mouldcode,"
  8215. + " scrapdate,"
  8216. + " rreason,"
  8217. + " remarks,"
  8218. + " auditstatus,"
  8219. + " auditor,"
  8220. + " auditdate,"
  8221. + " accountdate,"
  8222. + " accountid,"
  8223. + " createuserid,"
  8224. + " updateuserid,"
  8225. + " respontype,GoodsLevelID,GoodsLevelTypeID,"
  8226. + " auditopinion,"
  8227. + " GroutingUserID,"
  8228. + " GroutingUserCode,"
  8229. + " GroutingNum,"
  8230. + " IsPublicBody,"
  8231. + " IsReFire,"
  8232. + " kilnid,"
  8233. + " kilncode,"
  8234. + " kilnname,"
  8235. + " kilncarid,"
  8236. + " kilncarcode,"
  8237. + " kilncarname,"
  8238. + " kilncarbatchno,"
  8239. + " kilncarposition,"
  8240. + " specialRepairflag,"
  8241. + " logoid,"
  8242. + " ProductionDataID,"
  8243. + " ProcedureID, "
  8244. + " ProcedureCode, "
  8245. + " ProcedureName, "
  8246. + " ScrapType "
  8247. + ")"
  8248. + " select :scrapproductid,trash.barcode,"
  8249. + " trash.productionlineid,"
  8250. + " trash.productionlinecode,"
  8251. + " trash.productionlinename,"
  8252. + " trash.goodsid,"
  8253. + " trash.goodscode,"
  8254. + " trash.goodsname,"
  8255. + " trash.groutingdailyid,"
  8256. + " trash.groutingdailydetailid,"
  8257. + " trash.groutingdate,"
  8258. + " trash.groutinglineid,"
  8259. + " trash.groutinglinecode,"
  8260. + " trash.groutinglinename,"
  8261. + " trash.gmouldtypeid,"
  8262. + " trash.groutinglinedetailid,"
  8263. + " trash.groutingmouldcode,"
  8264. + " trash.mouldcode,"
  8265. + " :scrapdate,"
  8266. + " :rreason,"
  8267. + " :remarks,"
  8268. + " :auditstatus,"
  8269. + " :auditor,"
  8270. //+ " :auditdate,"
  8271. + " sysdate,"
  8272. + " :accountdate,"
  8273. + " trash.accountid,"
  8274. + " :createuserid,"
  8275. + " :updateuserid,"
  8276. + " :respontype,:GoodsLevelID,:GoodsLevelTypeID,"
  8277. + " :auditopinion,"
  8278. + " trash.GroutingUserID,"
  8279. + " trash.GroutingUserCode,"
  8280. + " trash.GroutingNum,"
  8281. + " trash.IsPublicBody,"
  8282. + " trash.IsReFire,"
  8283. + " trash.kilnid,"
  8284. + " trash.kilncode,"
  8285. + " trash.kilnname,"
  8286. + " trash.kilncarid,"
  8287. + " trash.kilncarcode,"
  8288. + " trash.kilncarname,"
  8289. + " trash.kilncarbatchno,"
  8290. + " trash.kilncarposition,"
  8291. + " trash.specialRepairflag,"
  8292. + " trash.logoid,";
  8293. if (scrapProduct.IsQualityStatistics == null)
  8294. {
  8295. sql += " trash.ProductionDataID,";
  8296. }
  8297. else
  8298. {
  8299. sql += " :ProductionDataID,";
  8300. }
  8301. sql += //" trash.ProductionDataID," +
  8302. " TP_PC_Procedure.ProcedureID, "
  8303. + " TP_PC_Procedure.ProcedureCode, "
  8304. + " TP_PC_Procedure.ProcedureName, "
  8305. + " :ScrapType "
  8306. + " from TP_PM_InProductionTrash trash"
  8307. + " left join TP_PC_Procedure on trash.FlowProcedureID=TP_PC_Procedure.ProcedureID"
  8308. + " where trash.barcode = :barcode";
  8309. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8310. }
  8311. // result += oracleTrConn.ExecuteNonQuery(sql2, oracleParameters);
  8312. //// 保存失败
  8313. //if (result != Constant.INT_IS_ONE)
  8314. //{
  8315. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8316. //}
  8317. return null;
  8318. }
  8319. /// <summary>
  8320. /// 保存缺陷
  8321. /// </summary>
  8322. /// <param name="oracleTrConn">连接对象</param>
  8323. /// <param name="productionDefect">缺陷数据</param>
  8324. /// <param name="sUserInfo">用户基本信息</param>
  8325. /// <returns>string</returns>
  8326. private static string AddDefect(IDBTransaction oracleTrConn, ProductionDefectEntity productionDefect, SUserInfo sUserInfo)
  8327. {
  8328. // 查询新插入的生产数据ID
  8329. string sql = "select SEQ_PM_Defect_DefectID.nextval from dual";
  8330. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8331. int productionDefectID = 0;
  8332. if (!string.IsNullOrEmpty(idStr))
  8333. {
  8334. productionDefectID = int.Parse(idStr);
  8335. }
  8336. else
  8337. {
  8338. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8339. }
  8340. #region SQL
  8341. sql = "insert into tp_pm_defect"
  8342. + " ( ProductionDefectID,"
  8343. + " productiondataid,"
  8344. + " barcode,"
  8345. + " productionlineid,"
  8346. + " productionlinecode,"
  8347. + " productionlinename,"
  8348. + " procedureid,"
  8349. + " procedurecode,"
  8350. + " procedurename,"
  8351. + " userid,"
  8352. + " usercode,"
  8353. + " username,"
  8354. + " goodsid,"
  8355. + " goodscode,"
  8356. + " goodsname,"
  8357. + " defectid,"
  8358. + " defectcode,"
  8359. + " defectname,"
  8360. + " defectpositionid,"
  8361. + " defectpositioncode,"
  8362. + " defectpositionname,"
  8363. + " scrapResponFlag,"
  8364. + " defectproductiondataid,"
  8365. + " defectprocedureid,"
  8366. + " defectprocedurecode,"
  8367. + " defectprocedurename,"
  8368. + " defectuserid,"
  8369. + " defectusercode,"
  8370. + " defectusername,"
  8371. + " defectjobs,"
  8372. + " remarks,"
  8373. + " accountid,"
  8374. + " createuserid,"
  8375. + " defectfine,"
  8376. + " misseduserid,"
  8377. + " missedusercode,"
  8378. + " missedusername,"
  8379. + " updateuserid,SpecialDefect,DefectDeductionNum,CheckTime)"
  8380. + " values"
  8381. + " ("
  8382. + " :ProductionDefectID,"
  8383. + " :productiondataid,"
  8384. + " :barcode,"
  8385. + " :productionlineid,"
  8386. + " :productionlinecode,"
  8387. + " :productionlinename,"
  8388. + " :procedureid,"
  8389. + " :procedurecode,"
  8390. + " :procedurename,"
  8391. + " :userid,"
  8392. + " :usercode,"
  8393. + " :username,"
  8394. + " :goodsid,"
  8395. + " :goodscode,"
  8396. + " :goodsname,"
  8397. + " :defectid,"
  8398. + " :defectcode,"
  8399. + " :defectname,"
  8400. + " :defectpositionid,"
  8401. + " :defectpositioncode,"
  8402. + " :defectpositionname,"
  8403. + " :scrapResponFlag,"
  8404. + " :defectproductiondataid,"
  8405. + " :defectprocedureid,"
  8406. + " :defectprocedurecode,"
  8407. + " :defectprocedurename,"
  8408. + " :defectuserid,"
  8409. + " :defectusercode,"
  8410. + " :defectusername,"
  8411. + " :defectjobs,"
  8412. + " :remarks,"
  8413. + " :accountid,"
  8414. + " :createuserid,"
  8415. + " :defectfine,"
  8416. + " :misseduserid,"
  8417. + " :missedusercode,"
  8418. + " :missedusername,"
  8419. + " :updateuserid,:SpecialDefect,:DefectDeductionNum,:CheckTime)";
  8420. #endregion
  8421. #region 参数
  8422. OracleParameter[] oracleParameters = null;
  8423. if (productionDefect.IsPDA == null)
  8424. {
  8425. oracleParameters = new OracleParameter[] {
  8426. new OracleParameter(":ProductionDefectID",productionDefectID),
  8427. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8428. new OracleParameter(":barcode",productionDefect.BarCode),
  8429. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8430. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8431. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8432. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8433. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8434. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8435. new OracleParameter(":userid",productionDefect.UserID),
  8436. new OracleParameter(":usercode",productionDefect.UserCode),
  8437. new OracleParameter(":username",productionDefect.UserName),
  8438. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8439. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8440. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8441. new OracleParameter(":defectid",productionDefect.DefectID),
  8442. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8443. new OracleParameter(":defectname",productionDefect.DefectName),
  8444. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8445. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8446. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8447. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8448. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8449. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8450. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8451. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8452. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8453. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8454. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8455. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8456. new OracleParameter(":remarks",productionDefect.Remarks),
  8457. new OracleParameter(":accountid",sUserInfo.AccountID),
  8458. new OracleParameter(":createuserid",sUserInfo.UserID),
  8459. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8460. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8461. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8462. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8463. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8464. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8465. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8466. new OracleParameter(":CheckTime",productionDefect.CheckTime.ToString()==string.Empty?null:productionDefect.CheckTime),
  8467. };
  8468. }
  8469. else
  8470. {
  8471. DateTime? pdaCheckTime = null;
  8472. if (productionDefect.PDACheckTime != null)
  8473. {
  8474. if (productionDefect.PDACheckTime.ToString() != string.Empty)
  8475. {
  8476. pdaCheckTime = Convert.ToDateTime(productionDefect.PDACheckTime);
  8477. }
  8478. }
  8479. oracleParameters = new OracleParameter[] {
  8480. new OracleParameter(":ProductionDefectID",productionDefectID),
  8481. new OracleParameter(":productiondataid",productionDefect.ProductionDataID),
  8482. new OracleParameter(":barcode",productionDefect.BarCode),
  8483. new OracleParameter(":productionlineid",productionDefect.ProductionLineID),
  8484. new OracleParameter(":productionlinecode",productionDefect.ProductionLineCode),
  8485. new OracleParameter(":productionlinename",productionDefect.ProductionLineName),
  8486. new OracleParameter(":procedureid",productionDefect.ProcedureID),
  8487. new OracleParameter(":procedurecode",productionDefect.ProcedureCode),
  8488. new OracleParameter(":procedurename",productionDefect.ProcedureName),
  8489. new OracleParameter(":userid",productionDefect.UserID),
  8490. new OracleParameter(":usercode",productionDefect.UserCode),
  8491. new OracleParameter(":username",productionDefect.UserName),
  8492. new OracleParameter(":goodsid",productionDefect.GoodsID),
  8493. new OracleParameter(":goodscode",productionDefect.GoodsCode),
  8494. new OracleParameter(":goodsname",productionDefect.GoodsName),
  8495. new OracleParameter(":defectid",productionDefect.DefectID),
  8496. new OracleParameter(":defectcode",productionDefect.DefectCode),
  8497. new OracleParameter(":defectname",productionDefect.DefectName),
  8498. new OracleParameter(":defectpositionid",productionDefect.DefectPositionID),
  8499. new OracleParameter(":defectpositioncode",productionDefect.DefectPositionCode),
  8500. new OracleParameter(":defectpositionname",productionDefect.DefectPositionName),
  8501. new OracleParameter(":scrapResponFlag",productionDefect.ScrapResponFlag),
  8502. new OracleParameter(":defectproductiondataid",productionDefect.DefectProductionDataID),
  8503. new OracleParameter(":defectprocedureid",productionDefect.DefectProcedureID),
  8504. new OracleParameter(":defectprocedurecode",productionDefect.DefectProcedureCode),
  8505. new OracleParameter(":defectprocedurename",productionDefect.DefectProcedureName),
  8506. new OracleParameter(":defectuserid",productionDefect.DefectUserID),
  8507. new OracleParameter(":defectusercode",productionDefect.DefectUserCode),
  8508. new OracleParameter(":defectusername",productionDefect.DefectUserName),
  8509. new OracleParameter(":defectjobs",productionDefect.DefectJobs),
  8510. new OracleParameter(":remarks",productionDefect.Remarks),
  8511. new OracleParameter(":accountid",sUserInfo.AccountID),
  8512. new OracleParameter(":createuserid",sUserInfo.UserID),
  8513. new OracleParameter(":defectfine",productionDefect.DefectFine),
  8514. new OracleParameter(":misseduserid",productionDefect.MissedUserID),
  8515. new OracleParameter(":missedusercode",productionDefect.MissedUserCode),
  8516. new OracleParameter(":missedusername",productionDefect.MissedUserName),
  8517. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8518. new OracleParameter(":SpecialDefect",productionDefect.SpecialDefect==null?"0":productionDefect.SpecialDefect),
  8519. new OracleParameter(":DefectDeductionNum",productionDefect.DefectDeductionNum==null?0:productionDefect.DefectDeductionNum),
  8520. new OracleParameter(":CheckTime",pdaCheckTime),
  8521. };
  8522. }
  8523. #endregion
  8524. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8525. // 保存失败
  8526. if (result != Constant.INT_IS_ONE)
  8527. {
  8528. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8529. }
  8530. //// 查询新插入的生产数据ID
  8531. //sql = "select SEQ_PM_Defect_DefectID.Currval from dual";
  8532. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  8533. //int productionDefectID = 0;
  8534. //if (!string.IsNullOrEmpty(idStr))
  8535. //{
  8536. // productionDefectID = int.Parse(idStr);
  8537. //}
  8538. //else
  8539. //{
  8540. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8541. //}
  8542. #region 插入生产缺陷责任者
  8543. if (productionDefect.DefectResponsibles != null)
  8544. {
  8545. foreach (DefectResponsibleEntity DefectResponsible in productionDefect.DefectResponsibles)
  8546. {
  8547. #region SQL
  8548. sql = "insert into tp_pm_defectresponsible"
  8549. + " (productiondefectid,"
  8550. + " staffid,"
  8551. + " userid,"
  8552. + " usercode,"
  8553. + " Ujobsid,"
  8554. + " SJobsID,"
  8555. + " staffstatus,"
  8556. + " accountid,"
  8557. + " createuserid,"
  8558. + " updateuserid)"
  8559. + " values"
  8560. + " (:productiondefectid,"
  8561. + " :staffid,"
  8562. + " :userid,"
  8563. + " :usercode,"
  8564. + " :ujobsid,"
  8565. + " :sjobsid,"
  8566. + " :staffstatus,"
  8567. + " :accountid,"
  8568. + " :createuserid,"
  8569. + " :updateuserid)";
  8570. #endregion
  8571. #region 参数
  8572. oracleParameters = new OracleParameter[] {
  8573. new OracleParameter(":productiondefectid",productionDefectID),
  8574. new OracleParameter(":staffid",DefectResponsible.StaffID),
  8575. new OracleParameter(":userid",DefectResponsible.UserID),
  8576. new OracleParameter(":usercode",DefectResponsible.UserCode),
  8577. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  8578. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  8579. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  8580. new OracleParameter(":accountid",sUserInfo.AccountID),
  8581. new OracleParameter(":createuserid",sUserInfo.UserID),
  8582. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8583. };
  8584. #endregion
  8585. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8586. // 保存失败
  8587. if (result != Constant.INT_IS_ONE)
  8588. {
  8589. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8590. }
  8591. }
  8592. }
  8593. #endregion
  8594. #region 插入生产漏检缺陷责任者
  8595. if (productionDefect.DefectMissedResponsibles != null)
  8596. {
  8597. foreach (DefectMissedResponsibleEntity DefectMissedResponsible in productionDefect.DefectMissedResponsibles)
  8598. {
  8599. #region SQL
  8600. sql = "insert into TP_PM_DefectMissedResponsible"
  8601. + " (productiondefectid,"
  8602. + " staffid,"
  8603. + " userid,"
  8604. + " usercode,"
  8605. + " Ujobsid,"
  8606. + " SJobsID,"
  8607. + " staffstatus,"
  8608. + " accountid,"
  8609. + " createuserid,"
  8610. + " updateuserid)"
  8611. + " values"
  8612. + " (:productiondefectid,"
  8613. + " :staffid,"
  8614. + " :userid,"
  8615. + " :usercode,"
  8616. + " :ujobsid,"
  8617. + " :sjobsid,"
  8618. + " :staffstatus,"
  8619. + " :accountid,"
  8620. + " :createuserid,"
  8621. + " :updateuserid)";
  8622. #endregion
  8623. #region 参数
  8624. oracleParameters = new OracleParameter[] {
  8625. new OracleParameter(":productiondefectid",productionDefectID),
  8626. new OracleParameter(":staffid",DefectMissedResponsible.StaffID),
  8627. new OracleParameter(":userid",DefectMissedResponsible.UserID),
  8628. new OracleParameter(":usercode",DefectMissedResponsible.UserCode),
  8629. new OracleParameter(":ujobsid",DefectMissedResponsible.UJobsID),
  8630. new OracleParameter(":sjobsid",DefectMissedResponsible.SJobsID),
  8631. new OracleParameter(":staffstatus",DefectMissedResponsible.StaffStatus),
  8632. new OracleParameter(":accountid",sUserInfo.AccountID),
  8633. new OracleParameter(":createuserid",sUserInfo.UserID),
  8634. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8635. };
  8636. #endregion
  8637. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8638. // 保存失败
  8639. if (result != Constant.INT_IS_ONE)
  8640. {
  8641. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8642. }
  8643. }
  8644. }
  8645. #endregion
  8646. #region 添加图片
  8647. if (productionDefect.DefectImages != null)
  8648. {
  8649. DateTime upTime = DateTime.Now;
  8650. foreach (DefectImageEntity defectImage in productionDefect.DefectImages)
  8651. {
  8652. // 图片路径为空。上传图片返回路径
  8653. if (string.IsNullOrEmpty(defectImage.ImagePath))
  8654. {
  8655. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic.UpLoadImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8656. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8657. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.Image);
  8658. }
  8659. else
  8660. {
  8661. // 安卓端上传的图片
  8662. defectImage.ImagePath = CommonModuleLogic.CommonModuleLogic.MoveImg(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8663. defectImage.ThumbnailPath = CommonModuleLogic.CommonModuleLogic
  8664. .ConvertThumbnail(Constant.SYSTEM_MODULE_PM, upTime, defectImage.ImagePath);
  8665. }
  8666. #region 保存图片
  8667. sql = "insert into tp_pm_defectimage"
  8668. + " ("
  8669. + " productiondefectid,"
  8670. + " barcode,"
  8671. + " thumbnailpath,"
  8672. + " imagepath,"
  8673. + " accountid,"
  8674. + " createuserid,"
  8675. + " updateuserid)"
  8676. + " values"
  8677. + " ("
  8678. + " :productiondefectid,"
  8679. + " :barcode,"
  8680. + " :thumbnailpath,"
  8681. + " :imagepath,"
  8682. + " :accountid,"
  8683. + " :createuserid,"
  8684. + " :updateuserid)";
  8685. oracleParameters = new OracleParameter[] {
  8686. new OracleParameter(":productiondefectid",productionDefectID),
  8687. new OracleParameter(":barcode",productionDefect.BarCode),
  8688. new OracleParameter(":thumbnailpath",defectImage.ThumbnailPath),
  8689. new OracleParameter(":imagepath",defectImage.ImagePath),
  8690. new OracleParameter(":accountid",sUserInfo.AccountID),
  8691. new OracleParameter(":createuserid",sUserInfo.UserID),
  8692. new OracleParameter(":updateuserid",sUserInfo.UserID),
  8693. };
  8694. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  8695. // 保存失败
  8696. if (result != Constant.INT_IS_ONE)
  8697. {
  8698. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  8699. }
  8700. #endregion
  8701. }
  8702. }
  8703. #endregion
  8704. // 保存成功返回null
  8705. return null;
  8706. }
  8707. #endregion
  8708. #region 进度考核奖惩
  8709. /// <summary>
  8710. /// 根据传入的实体保存 进度考核奖惩记录
  8711. /// </summary>
  8712. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8713. /// <param name="sUserInfo">用户基本信息</param>
  8714. /// <param name="pStatus">新增还是编辑枚举</param>
  8715. /// <returns>PMResultEntity操作结果状态信息</returns>
  8716. public static PMResultEntity SaveStaffProgressRAPInfo(PMProgressRAPEntity pProgressRAPEntity, SUserInfo sUserInfo, WCFConstant.FormMode pStatus)
  8717. {
  8718. PMResultEntity resultEnity = new PMResultEntity();
  8719. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8720. try
  8721. {
  8722. if (pProgressRAPEntity == null)
  8723. {
  8724. resultEnity.OperateStatus = 0;
  8725. return resultEnity;
  8726. }
  8727. oracleTrConn.Connect();
  8728. if (pStatus == WCFConstant.FormMode.Add)
  8729. {
  8730. string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.nextval from dual");
  8731. #region 新建时插入数据
  8732. string strSql1 = "Insert Into TP_PM_ProgressRAP (RAPID,"
  8733. + "STAFFID"
  8734. + ",RAPTYPE"
  8735. + ",REASON"
  8736. + ",RAPDATE"
  8737. + ",RAPAMOUNT"
  8738. + ",REMARKS"
  8739. + ",AUDITSTATUS"
  8740. + ",ACCOUNTID"
  8741. + ",CREATEUSERID"
  8742. + ",UPDATEUSERID)"
  8743. + " Values ("
  8744. + ":RAPID"
  8745. + ",:pSTAFFID"
  8746. + ",:pRAPTYPE"
  8747. + ",:pREASON"
  8748. + ",:pRAPDATE"
  8749. + ",:pRAPAMOUNT"
  8750. + ",:pREMARKS"
  8751. + ",:pAUDITSTATUS"
  8752. + ",:pACCOUNTID"
  8753. + ",:pCREATEUSERID"
  8754. + ",:pUPDATEUSERID"
  8755. + ")";
  8756. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8757. {
  8758. new OracleParameter(":RAPID", OracleDbType.Int32, Convert.ToInt32(strSeq) , ParameterDirection.Input),
  8759. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8760. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8761. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8762. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8763. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8764. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8765. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32, 0 , ParameterDirection.Input),
  8766. new OracleParameter(":pACCOUNTID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8767. new OracleParameter(":pCREATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8768. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8769. };
  8770. #endregion
  8771. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql1, parmetersSql1);
  8772. //string strSeq = oracleTrConn.GetSqlResultToStr("Select SEQ_PM_ProgressRAP_RAPID.Currval from dual");
  8773. resultEnity.OperateKey = Convert.ToInt32(strSeq);
  8774. }
  8775. else
  8776. {
  8777. #region 判断数据是否可以编辑
  8778. string strSlq2 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8779. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8780. {
  8781. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8782. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8783. };
  8784. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq2, parmetersSql2);
  8785. if (string.IsNullOrEmpty(strAuditStatus))
  8786. {
  8787. oracleTrConn.Rollback();
  8788. oracleTrConn.Disconnect();
  8789. resultEnity.OperateStatus = -2;
  8790. return resultEnity;
  8791. }
  8792. if (!"0".Equals(strAuditStatus))
  8793. {
  8794. //不是待审批状态
  8795. oracleTrConn.Rollback();
  8796. oracleTrConn.Disconnect();
  8797. resultEnity.OperateStatus = -1;
  8798. return resultEnity;
  8799. }
  8800. #endregion
  8801. #region 编辑时更新数据
  8802. string strSql3 = "Update TP_PM_ProgressRAP Set "
  8803. + "RAPTYPE = :pRAPTYPE"
  8804. + ",REASON = :pREASON"
  8805. + ",RAPDATE = :pRAPDATE"
  8806. + ",RAPAMOUNT = :pRAPAMOUNT"
  8807. + ",REMARKS = :pREMARKS"
  8808. + ",UPDATEUSERID = :pUPDATEUSERID"
  8809. + " Where RAPID = :pRAPID And STAFFID = :pSTAFFID And AccountID = :pAccountID";
  8810. OracleParameter[] parmetersSql3 = new OracleParameter[]
  8811. {
  8812. new OracleParameter(":pRAPTYPE", OracleDbType.Double, pProgressRAPEntity.RAPType , ParameterDirection.Input),
  8813. new OracleParameter(":pREASON", OracleDbType.Varchar2, pProgressRAPEntity.Reason , ParameterDirection.Input),
  8814. new OracleParameter(":pRAPDATE", OracleDbType.Date, pProgressRAPEntity.RAPDate , ParameterDirection.Input),
  8815. new OracleParameter(":pRAPAMOUNT", OracleDbType.Double, pProgressRAPEntity.RAPAmount , ParameterDirection.Input),
  8816. new OracleParameter(":pREMARKS", OracleDbType.Varchar2, pProgressRAPEntity.Remarks , ParameterDirection.Input),
  8817. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8818. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8819. new OracleParameter(":pSTAFFID", OracleDbType.Int32, pProgressRAPEntity.StaffID , ParameterDirection.Input),
  8820. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8821. };
  8822. #endregion
  8823. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql3, parmetersSql3);
  8824. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8825. }
  8826. oracleTrConn.Commit();
  8827. oracleTrConn.Disconnect();
  8828. return resultEnity;
  8829. }
  8830. catch (Exception ex)
  8831. {
  8832. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8833. {
  8834. oracleTrConn.Rollback();
  8835. oracleTrConn.Disconnect();
  8836. }
  8837. throw ex;
  8838. }
  8839. finally
  8840. {
  8841. if (oracleTrConn.ConnState == ConnectionState.Open)
  8842. {
  8843. oracleTrConn.Disconnect();
  8844. }
  8845. }
  8846. }
  8847. /// <summary>
  8848. /// 进度考核奖惩审批
  8849. /// </summary>
  8850. /// <param name="pAdminRAPEntity">进度考核奖惩实体</param>
  8851. /// <param name="pState">审批状态 True 通过 False 不通过</param>
  8852. /// <param name="sUserInfo">用户基本信息</param>
  8853. /// <returns>PMResultEntity操作结果状态信息</returns>
  8854. public static PMResultEntity SaveStaffProgressRAPApprovalInfo(PMProgressRAPEntity pProgressRAPEntity, bool pState, SUserInfo sUserInfo)
  8855. {
  8856. PMResultEntity resultEnity = new PMResultEntity();
  8857. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8858. try
  8859. {
  8860. if (pProgressRAPEntity == null)
  8861. {
  8862. resultEnity.OperateStatus = 0;
  8863. return resultEnity;
  8864. }
  8865. oracleTrConn.Connect();
  8866. #region 判断数据是否可以编辑
  8867. string strSlq1 = "Select max(AuditStatus) From TP_PM_ProgressRAP Where RAPID = :pRAPID And OPTimeStamp = :pOPTimeStamp";
  8868. OracleParameter[] parmetersSql1 = new OracleParameter[]
  8869. {
  8870. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8871. new OracleParameter(":pOPTimeStamp", OracleDbType.TimeStamp, pProgressRAPEntity.OPTimeStamp , ParameterDirection.Input),
  8872. };
  8873. string strAuditStatus = oracleTrConn.GetSqlResultToStr(strSlq1, parmetersSql1);
  8874. if (string.IsNullOrEmpty(strAuditStatus))
  8875. {
  8876. oracleTrConn.Rollback();
  8877. oracleTrConn.Disconnect();
  8878. resultEnity.OperateStatus = -2;
  8879. return resultEnity;
  8880. }
  8881. if (!"0".Equals(strAuditStatus))
  8882. {
  8883. //不是待审批状态
  8884. oracleTrConn.Rollback();
  8885. oracleTrConn.Disconnect();
  8886. resultEnity.OperateStatus = -1;
  8887. return resultEnity;
  8888. }
  8889. #endregion
  8890. #region 更新审批数据
  8891. int intAuditStatus = 2; //2:审核未通过
  8892. if (pState)
  8893. {
  8894. intAuditStatus = 1; //1:审核通过;
  8895. }
  8896. string strSql2 = "Update TP_PM_ProgressRAP Set "
  8897. + "AUDITSTATUS = :pAUDITSTATUS"
  8898. + ",AUDITOR = :pAUDITOR"
  8899. + ",AuditlDate = sysdate"
  8900. + ",ACCOUNTDATE = FUN_CMN_GetAccountDate(:pAccountID1)"
  8901. + ",UPDATEUSERID = :pUPDATEUSERID"
  8902. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8903. OracleParameter[] parmetersSql2 = new OracleParameter[]
  8904. {
  8905. new OracleParameter(":pAUDITSTATUS", OracleDbType.Int32,intAuditStatus, ParameterDirection.Input),
  8906. new OracleParameter(":pAUDITOR", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8907. new OracleParameter(":pAccountID1", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8908. new OracleParameter(":pUPDATEUSERID", OracleDbType.Int32, sUserInfo.UserID , ParameterDirection.Input),
  8909. new OracleParameter(":pRAPID", OracleDbType.Int32, pProgressRAPEntity.RAPID , ParameterDirection.Input),
  8910. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8911. };
  8912. #endregion
  8913. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(strSql2, parmetersSql2);
  8914. resultEnity.OperateKey = pProgressRAPEntity.RAPID;
  8915. oracleTrConn.Commit();
  8916. oracleTrConn.Disconnect();
  8917. return resultEnity;
  8918. }
  8919. catch (Exception ex)
  8920. {
  8921. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8922. {
  8923. oracleTrConn.Rollback();
  8924. oracleTrConn.Disconnect();
  8925. }
  8926. throw ex;
  8927. }
  8928. finally
  8929. {
  8930. if (oracleTrConn.ConnState == ConnectionState.Open)
  8931. {
  8932. oracleTrConn.Disconnect();
  8933. }
  8934. }
  8935. }
  8936. /// <summary>
  8937. /// 设置进度考核奖惩停用
  8938. /// </summary>
  8939. /// <param name="pRAPID">进度考核奖惩编号</param>
  8940. /// <param name="sUserInfo">用户基本信息</param>
  8941. /// <returns>PMResultEntity操作结果状态信息</returns>
  8942. public static PMResultEntity SetStaffProgressRAPValueFlag(int pRAPID, SUserInfo sUserInfo)
  8943. {
  8944. PMResultEntity resultEnity = new PMResultEntity();
  8945. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  8946. try
  8947. {
  8948. oracleTrConn.Connect();
  8949. string sql = "Select max(SettlementFlag) From TP_PM_ProgressRAP Where RAPID =" + pRAPID + " And AuditStatus = 0 And ValueFlag = 1";
  8950. string strSettlementFlag = oracleTrConn.GetSqlResultToStr(sql);
  8951. if (!string.IsNullOrEmpty(strSettlementFlag))
  8952. {
  8953. if ("1".Equals(strSettlementFlag)) //工资结算标识 1:已经结算 0:未结算
  8954. {
  8955. oracleTrConn.Rollback();
  8956. oracleTrConn.Disconnect();
  8957. resultEnity.OperateStatus = -3;
  8958. return resultEnity;
  8959. }
  8960. string sqlString = "Update TP_PM_ProgressRAP Set ValueFlag = 0,UpdateUserID = :pUpdateUserID"
  8961. + " Where RAPID = :pRAPID And AccountID = :pAccountID";
  8962. OracleParameter[] parmetersSql = new OracleParameter[]
  8963. {
  8964. new OracleParameter(":pUpdateUserID", OracleDbType.Int32,sUserInfo.UserID, ParameterDirection.Input),
  8965. new OracleParameter(":pRAPID", OracleDbType.Int32, pRAPID , ParameterDirection.Input),
  8966. new OracleParameter(":pAccountID", OracleDbType.Int32, sUserInfo.AccountID , ParameterDirection.Input),
  8967. };
  8968. resultEnity.OperateStatus = oracleTrConn.ExecuteNonQuery(sqlString, parmetersSql);
  8969. oracleTrConn.Commit();
  8970. oracleTrConn.Disconnect();
  8971. return resultEnity;
  8972. }
  8973. else
  8974. {
  8975. oracleTrConn.Rollback();
  8976. oracleTrConn.Disconnect();
  8977. resultEnity.OperateStatus = -2;
  8978. return resultEnity;
  8979. }
  8980. }
  8981. catch (Exception ex)
  8982. {
  8983. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  8984. {
  8985. oracleTrConn.Rollback();
  8986. oracleTrConn.Disconnect();
  8987. }
  8988. throw ex;
  8989. }
  8990. finally
  8991. {
  8992. if (oracleTrConn.ConnState == ConnectionState.Open)
  8993. {
  8994. oracleTrConn.Disconnect();
  8995. }
  8996. }
  8997. }
  8998. #endregion
  8999. #endregion
  9000. #region 私有方法
  9001. /// <summary>
  9002. /// 将窑车号下的条码转换成Table
  9003. /// </summary>
  9004. /// <param name="oracleTrConn">数据连接</param>
  9005. /// <param name="productionTable">手机传入的Table</param>
  9006. /// <param name="sUserInfo">用户基本信息</param>
  9007. /// <returns>DataTable</returns>
  9008. private static DataTable CarNoInfoConvertToTable(IDBTransaction oracleTrConn, DataTable productionTable, SUserInfo sUserInfo)
  9009. {
  9010. if (productionTable != null
  9011. && productionTable.Rows.Count > Constant.INT_IS_ZERO)
  9012. {
  9013. DataRow row = productionTable.Rows[Constant.INT_IS_ZERO];
  9014. string sql = "select carGoods.Barcode,"
  9015. + " carGoods.KilnCarID,"
  9016. + " car.KilncarCode,"
  9017. + " car.KilncarName,"
  9018. + " kiln.kilnid,"
  9019. + " kiln.kilnCode,"
  9020. + " kiln.kilnName,"
  9021. + " carGoods.Kilncarposition,"
  9022. + " carGoods.KilnCarBatchNo,"
  9023. + " carGoods.GoodsID,"
  9024. + " goods.GoodsCode,"
  9025. + " goods.GoodsName,"
  9026. + " :userID as UserID,"
  9027. + " :userCode as UserCode,"
  9028. + " :userName as UserName,"
  9029. + " :Remarks as Remarks"
  9030. + " from TP_PM_KilnCarGoods carGoods"
  9031. + " inner join TP_MST_KilnCar car on car.KilnCarID = carGoods.KilnCarID"
  9032. + " inner join TP_MST_Kiln kiln on kiln.KilnID = car.KilnID"
  9033. + " inner join TP_MST_Goods goods on goods.goodsid = carGoods.GoodsID"
  9034. + " where car.kilncarcode = :kilncarcode and carGoods.AccountID = :accountID";
  9035. OracleParameter[] oracleParameters = new OracleParameter[] {
  9036. new OracleParameter(":userID",row["UserID"].ToString()),
  9037. new OracleParameter(":userCode",row["UserCode"].ToString()),
  9038. new OracleParameter(":userName",row["UserName"].ToString()),
  9039. new OracleParameter(":kilncarcode",row["KilnCarCode"].ToString()),
  9040. new OracleParameter(":accountID",sUserInfo.AccountID),
  9041. new OracleParameter(":Remarks",row["Remarks"].ToString()),
  9042. };
  9043. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  9044. if (ds != null
  9045. && ds.Tables.Count > Constant.INT_IS_ZERO
  9046. && ds.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  9047. {
  9048. return ds.Tables[0];
  9049. }
  9050. return productionTable;
  9051. }
  9052. return productionTable;
  9053. }
  9054. #endregion
  9055. #region PDA端保存条码
  9056. /// <summary>
  9057. /// 添加成品编辑
  9058. /// </summary>
  9059. /// <param name="oracleTrConn">数据连接</param>
  9060. /// <param name="procedure">工序对象</param>
  9061. /// <param name="productionDataEntitys">生产数据集</param>
  9062. /// <param name="sUserInfo">用户基本信息</param>
  9063. /// <returns>string</returns>
  9064. private static string AddFinishCheckPDA( IDBTransaction oracleTrConn, ProcedureEntity procedure, ProductionDataEntity[] productionDataEntitys, DataTable bomDetailTable, SUserInfo sUserInfo)
  9065. {
  9066. string errMsg = "";
  9067. // 获得账务日期
  9068. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  9069. // 本批采集的批次号
  9070. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  9071. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  9072. foreach (ProductionDataEntity productionData in productionDataEntitys)
  9073. {
  9074. bool RejectToReject = false;
  9075. if (string.IsNullOrEmpty(productionData.Barcode))
  9076. {
  9077. throw new Exception("传入的条码号为空");
  9078. }
  9079. int goodsID = Constant.INT_IS_ZERO;
  9080. string goodsCode = string.Empty;
  9081. string goodsName = string.Empty;
  9082. // 注浆者工号
  9083. string groutingUserCode = string.Empty;
  9084. // 次品标识
  9085. bool substandardFlag = false;
  9086. //获取成检ID(校验条码)
  9087. ServiceResultEntity sre = GetProductionID(productionData.Barcode);
  9088. int procedureID = Convert.ToInt32(sre.Data.Tables[0].Rows[0]["finishedcheckprocedureid"]);
  9089. #region 校验条码有效性
  9090. errMsg = CheckBarcode(oracleTrConn, procedureID, productionData.Barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  9091. //if (!string.IsNullOrEmpty(errMsg))
  9092. //{
  9093. // // 编辑重烧时,会提示不可到达;编辑次品时,会提示已经报废
  9094. // //if (productionData.ProductionDataID == 0)
  9095. // //if (!errMsg.Contains("次品"))
  9096. // return errMsg;
  9097. //}
  9098. #endregion
  9099. int isInProduction = 1;
  9100. #region 修改条码
  9101. if (productionData.ProductionDataID > 0) //表示编辑条码
  9102. {
  9103. #region 验证改判有效期
  9104. // 前台已有相关验证,但还是产生了超期改判,后台保存前增加验证。
  9105. string sqlString = "select pdin.createtime from tp_pm_productiondatain pdin where pdin.productiondataid = " + productionData.ProductionDataID;
  9106. DateTime createtime = Convert.ToDateTime(oracleTrConn.GetSqlResultToObj(sqlString)).Date;
  9107. // 参数验证用服务端当前设置
  9108. sqlString = "SELECT sst.settingvalue\n" +
  9109. " FROM tp_mst_systemsetting sst\n" +
  9110. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  9111. " AND sst.settingcode = 'S_PM_009'";
  9112. string strValue = oracleTrConn.GetSqlResultToStr(sqlString);
  9113. int days = 0;
  9114. int pDays = 0;
  9115. if (int.TryParse(strValue, out pDays))
  9116. {
  9117. days = pDays;
  9118. }
  9119. if (days != 0 && createtime <= DateTime.Now.Date.AddDays(-days))
  9120. {
  9121. return string.Format(Messages.MSG_S_PM_009, createtime.ToString("yyyy-MM-dd"), days.ToString(), createtime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  9122. }
  9123. #endregion
  9124. //
  9125. string sqlOPTimeStamp = "";
  9126. OracleParameter[] parmetersSql = null;
  9127. #region 验证在产时间戳
  9128. if (productionData.OPTimeStampPDA == null) // 表示PC端,因为只有安卓端才给此数据字段给值
  9129. {
  9130. sqlOPTimeStamp = @"select
  9131. 1
  9132. from TP_PM_InProduction
  9133. where
  9134. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp = :OPTimeStamp
  9135. union
  9136. select
  9137. 0
  9138. from Tp_Pm_Inproductiontrash
  9139. where
  9140. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp = :OPTimeStamp ";
  9141. parmetersSql = new OracleParameter[]
  9142. {
  9143. new OracleParameter(":OPTimeStamp", OracleDbType.TimeStamp, productionData.OPTimeStamp, ParameterDirection.Input),
  9144. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9145. };
  9146. }
  9147. else
  9148. {
  9149. sqlOPTimeStamp = @"select
  9150. 1
  9151. from TP_PM_InProduction
  9152. where
  9153. TP_PM_InProduction.BarCode=:BarCode and TP_PM_InProduction.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')
  9154. union
  9155. select
  9156. 0
  9157. from Tp_Pm_Inproductiontrash
  9158. where
  9159. Tp_Pm_Inproductiontrash.BarCode=:BarCode and Tp_Pm_Inproductiontrash.OPTimeStamp =TO_TIMESTAMP(to_char(:OPTimeStamp),'DD-MM-YYHH12.MI.SS.FFAM')";
  9160. parmetersSql = new OracleParameter[]
  9161. {
  9162. new OracleParameter(":OPTimeStamp", OracleDbType.NVarchar2, productionData.OPTimeStampPDA, ParameterDirection.Input),
  9163. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9164. };
  9165. }
  9166. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlOPTimeStamp, parmetersSql);
  9167. if (returnDataset != null
  9168. && returnDataset.Tables[0].Rows.Count == 0)
  9169. {
  9170. return "数据已经被修改,请重新进行编辑";
  9171. }
  9172. isInProduction = Convert.ToInt32(returnDataset.Tables[0].Rows[0][0]);
  9173. #endregion
  9174. //如果原来是 次品 / 废品 xuwei modify 2019-12-13 加入 废品识别
  9175. if (productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  9176. ||
  9177. productionData.OrgGoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  9178. )
  9179. {
  9180. //改为 次品 废品 xuwei modify 2019-12-13 加入废品识别
  9181. if (productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Reject.GetHashCode()
  9182. ||
  9183. productionData.GoodsLevelTypeID == Constant.GoodsLevelType.Waste.GetHashCode()
  9184. )
  9185. {
  9186. // 删除生产数据及相关表与报损表
  9187. errMsg = DeleteSubstandardToSubstandardByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9188. if (!string.IsNullOrEmpty(errMsg))
  9189. {
  9190. return errMsg;
  9191. }
  9192. RejectToReject = true;
  9193. } //改为不是 次品 废品 xuwei modify 2019-12-13 加入废品识别
  9194. else if (productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Reject.GetHashCode()
  9195. ||
  9196. productionData.GoodsLevelTypeID != Constant.GoodsLevelType.Waste.GetHashCode()
  9197. )
  9198. {
  9199. // 删除生产数据及相关表与报损表
  9200. errMsg = DeleteSubstandardToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9201. if (!string.IsNullOrEmpty(errMsg))
  9202. {
  9203. return errMsg;
  9204. }
  9205. }
  9206. }
  9207. else
  9208. {
  9209. // 原来产品分级不是次品
  9210. errMsg = DeleteNormalToOtherByID(oracleTrConn, productionData.ProductionDataID, productionData.Barcode, sUserInfo);
  9211. if (!string.IsNullOrEmpty(errMsg))
  9212. {
  9213. return errMsg;
  9214. }
  9215. }
  9216. }
  9217. else // wangx 2016-12-13 防止同时两个人新建数据,加判断条件
  9218. {
  9219. string sqlCurrrentProcedure = @"select Flowprocedureid from tp_pm_inproduction where BarCode=:BarCode";
  9220. OracleParameter[] parmetersSql = null;
  9221. parmetersSql = new OracleParameter[]
  9222. {
  9223. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9224. };
  9225. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlCurrrentProcedure, parmetersSql);
  9226. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 begin
  9227. //if (returnDataset != null
  9228. // && returnDataset.Tables[0].Rows.Count > 0)
  9229. //{
  9230. // if (Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID)
  9231. // {
  9232. // return "【此条码生产数据已被修改,请重开画面后再扫描】";
  9233. // }
  9234. //}
  9235. if (returnDataset == null ||
  9236. returnDataset.Tables.Count == 0 ||
  9237. returnDataset.Tables[0].Rows.Count == 0 ||
  9238. Convert.ToInt32(returnDataset.Tables[0].Rows[0]["Flowprocedureid"]) == procedure.ProcedureID
  9239. )
  9240. {
  9241. return "【此条码生产数据已被修改,请重新扫描此条码】";
  9242. }
  9243. // 判定次品时,在产表中已经没有条码数据 modify by chenxy 2017-07-03 end
  9244. }
  9245. #endregion
  9246. //2022年2月22日10:54:32 by feiy modify 若产品分级为次品时,productionData.ProductionDefects必须有值
  9247. //暂时来解决登记是次品,但无缺陷明细的情况
  9248. if ((productionData.ProductionDefects == null || productionData.ProductionDefects.Count <= 0) && productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9249. {
  9250. return "登记是次品,必须登记缺陷";
  9251. }
  9252. // 查询新插入的生产数据ID
  9253. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  9254. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  9255. int productionDataID = 0;
  9256. if (!string.IsNullOrEmpty(idStr))
  9257. {
  9258. productionDataID = int.Parse(idStr);
  9259. }
  9260. else
  9261. {
  9262. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9263. }
  9264. int? ClassesSettingID = null;//班次配置ID
  9265. #region 添加生产者数据
  9266. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, productionData.UserID, productionData.UserName, sUserInfo, ref ClassesSettingID);
  9267. if (!string.IsNullOrEmpty(errMsg))
  9268. {
  9269. return errMsg;
  9270. }
  9271. #endregion
  9272. #region 添加生产数据
  9273. #region 属性赋值
  9274. productionData.ClassesSettingID = ClassesSettingID;
  9275. productionData.ProductionDataID = Convert.ToInt32(idStr);
  9276. productionData.CentralizedBatchNo = centralizedBatchNo;
  9277. productionData.ProductionLineID = procedure.ProductionLineID;
  9278. productionData.ProductionLineCode = procedure.ProductionlineCode;
  9279. productionData.ProductionLineName = procedure.ProductionlineName;
  9280. productionData.CompleteProcedureID = procedure.ProcedureID;
  9281. productionData.ProcedureCode = procedure.ProcedureCode;
  9282. productionData.ProcedureName = procedure.ProcedureName;
  9283. productionData.ProcedureModel = procedure.ProcedureModel;
  9284. productionData.ModelType = procedure.ModelType;
  9285. productionData.NodeType = procedure.NodeType;
  9286. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, productionData.Barcode);
  9287. // 重烧
  9288. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.ReFire)
  9289. {
  9290. //productionData.GoodsLevelID = null;
  9291. //productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  9292. productionData.IsReFire = (int)Constant.ReFireFlag.No;//产品分级的时候,并不标记,走过重烧第一个结点之后,更新此字段
  9293. }
  9294. // 冷补
  9295. if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.LengBu)
  9296. {
  9297. productionData.IsLengBu = 0;
  9298. }
  9299. // 次品 废品 xuwei 2019-12-13 加入 废品识别
  9300. else if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject
  9301. ||
  9302. productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Waste
  9303. )
  9304. {
  9305. //productionData.GoodsLevelID = null;
  9306. substandardFlag = true;
  9307. }
  9308. // 查询新插入的生产数据ID
  9309. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9310. // {
  9311. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  9312. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionData=(select max(ProductionDataid) from ProductionData where barcode=" + productionData.Barcode + " and ProcedureID=" + productionData.ProcedureID + ")";
  9313. //if (productionData.GoodsLevelTypeID != (int)Constant.GoodsLevelType.ReFire)
  9314. // {
  9315. ////// string sqlReFire = @"select
  9316. ////// isrefire
  9317. ////// from tp_pm_inproduction where barcode=:barcode
  9318. ////// union
  9319. ////// select
  9320. ////// isrefire
  9321. ////// from TP_PM_InProductionTrash where barcode=:barcode
  9322. ////// ";
  9323. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  9324. ////// new OracleParameter(":barcode", productionData.Barcode),
  9325. ////// };
  9326. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  9327. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  9328. ////// {
  9329. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  9330. ////// }
  9331. // }
  9332. productionData.OrganizationID = procedure.OrganizationID;
  9333. productionData.GoodsID = goodsID;
  9334. productionData.GoodsCode = goodsCode;
  9335. productionData.GoodsName = goodsName;
  9336. productionData.GoodsLevelID = productionData.GoodsLevelID;
  9337. productionData.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9338. //if (productionData.GoodsLevelTypeID == (int)Constant.GoodsLevelType.Reject)
  9339. //{
  9340. // productionData.GoodsEnding = Constant.GoodsLevelType.Reject.GetHashCode().ToString();
  9341. //}
  9342. //else
  9343. //{
  9344. // productionData.GoodsEnding = null;
  9345. //}
  9346. #endregion
  9347. string OutSpecialRepairflag = "0";//干补标识
  9348. int finishedCheckProcedureID = procedure.FinishedCheckProcedureID;//成检工序ID
  9349. errMsg = AddFinishCheckProductionData(finishedCheckProcedureID,oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  9350. if (!string.IsNullOrEmpty(errMsg))
  9351. {
  9352. return errMsg;
  9353. }
  9354. #endregion
  9355. #region 条码有缺陷
  9356. #region 是次品 添加废弃产品
  9357. string ResponProcedureidStr = "";
  9358. if (substandardFlag)
  9359. {
  9360. #region 修改在产产品数据的当前工序,防止直接报损在产工序没有改过来,记录的是上一个工序
  9361. string updateInInProductionForScrap = @"Update tp_pm_inproduction
  9362. set FlowProcedureID=:flowProcedureID,ProcedureID=:flowProcedureID where barcode=:barcode";
  9363. List<OracleParameter> paras = new List<OracleParameter>();
  9364. paras.Add(new OracleParameter(":barcode", productionData.Barcode));
  9365. paras.Add(new OracleParameter(":flowProcedureID", procedure.ProcedureID));
  9366. oracleTrConn.ExecuteNonQuery(updateInInProductionForScrap, paras.ToArray());
  9367. #endregion
  9368. #region 添加废弃产品
  9369. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  9370. #region 属性赋值
  9371. scrapProduct.BarCode = productionData.Barcode;
  9372. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  9373. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  9374. scrapProduct.ScrapDate = accountDate;
  9375. scrapProduct.Rreason = Constant.SCRAPTYPE_SUBSTANDARD;
  9376. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  9377. scrapProduct.Auditor = sUserInfo.UserID;
  9378. scrapProduct.AuditlDate = accountDate;
  9379. scrapProduct.AccountDate = accountDate;
  9380. scrapProduct.GoodsLevelID = productionData.GoodsLevelID;
  9381. scrapProduct.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9382. scrapProduct.IsPublicBody = productionData.IsPublicBody;
  9383. // 查询新插入的废弃ID
  9384. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  9385. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9386. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9387. scrapProduct.ScrapType = 1;
  9388. scrapProduct.IsQualityStatistics = 1;//新加的,因为这个报损方法是共通的,用于区别是哪里传进去的
  9389. scrapProduct.ProductionDataID = productionData.ProductionDataID;
  9390. #endregion
  9391. if (!RejectToReject) //不是次品到次品 wangxin 20150417
  9392. {
  9393. // 保存报废
  9394. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9395. }
  9396. else
  9397. {
  9398. if (isInProduction == 1)
  9399. {
  9400. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  9401. }
  9402. else
  9403. {
  9404. // 保存报废
  9405. errMsg = AddScrapProductRejectToReject(oracleTrConn, scrapProduct, sUserInfo);
  9406. }
  9407. }
  9408. //不是次品到次品 wangxin 20150417
  9409. // 保存失败
  9410. if (!string.IsNullOrEmpty(errMsg))
  9411. {
  9412. return errMsg;
  9413. }
  9414. #endregion
  9415. }
  9416. #endregion
  9417. // 存在缺陷 插入缺陷表
  9418. if (productionData.ProductionDefects != null)
  9419. {
  9420. foreach (ProductionDefectEntity productionDefect in productionData.ProductionDefects)
  9421. {
  9422. #region 保存缺陷
  9423. productionDefect.ProductionDataID = productionDataID;
  9424. productionDefect.BarCode = productionData.Barcode;
  9425. productionDefect.ProductionLineID = procedure.ProductionLineID;
  9426. productionDefect.ProductionLineCode = procedure.ProductionlineCode;
  9427. productionDefect.ProductionLineName = procedure.ProductionlineName;
  9428. productionDefect.ProcedureID = procedure.ProcedureID;
  9429. productionDefect.ProcedureCode = procedure.ProcedureCode;
  9430. productionDefect.ProcedureName = procedure.ProcedureName;
  9431. productionDefect.UserID = productionData.UserID;
  9432. productionDefect.UserCode = productionData.UserCode;
  9433. productionDefect.UserName = productionData.UserName;
  9434. productionDefect.GoodsID = productionData.GoodsID;
  9435. productionDefect.GoodsCode = productionData.GoodsCode;
  9436. productionDefect.GoodsName = productionData.GoodsName;
  9437. productionData.Remarks = productionData.Remarks;
  9438. productionDefect.ScrapResponFlag
  9439. = string.IsNullOrEmpty(productionDefect.ScrapResponFlag) ? "0" : productionDefect.ScrapResponFlag;
  9440. // 保存缺陷
  9441. errMsg = AddDefect(oracleTrConn, productionDefect, sUserInfo);
  9442. if (!string.IsNullOrEmpty(errMsg))
  9443. {
  9444. return errMsg;
  9445. }
  9446. #endregion
  9447. #region 是次品 添加废弃责任工序
  9448. if (substandardFlag)
  9449. {
  9450. //if (productionDefect.DefectProcedureID != null)
  9451. {
  9452. #region 添加责任工序
  9453. ResponProcedureEntity responProce = new ResponProcedureEntity();
  9454. //// 查询新插入的废弃ID
  9455. //string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.Currval from dual";
  9456. //string ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  9457. #region 属性赋值
  9458. responProce.BarCode = productionData.Barcode;
  9459. responProce.ProductionDataID = productionDataID;
  9460. responProce.ProductionLineID = productionDefect.ProductionLineID;
  9461. responProce.ProductionLineCode = productionDefect.ProductionLineCode;
  9462. responProce.ProductionLineName = productionDefect.ProductionLineName;
  9463. responProce.ProcedureID = productionDefect.DefectProcedureID;
  9464. responProce.ProcedureCode = productionDefect.DefectProcedureCode;
  9465. responProce.ProcedureName = productionDefect.DefectProcedureName;
  9466. responProce.UserID = productionDefect.DefectUserID;
  9467. responProce.UserCode = productionDefect.DefectUserCode;
  9468. responProce.UserName = productionDefect.DefectUserName;
  9469. responProce.Remarks = productionDefect.Remarks;
  9470. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  9471. #endregion
  9472. // 保存责任工序
  9473. errMsg = AddResponProcedure(oracleTrConn, responProce, productionDefect, sUserInfo);
  9474. // 保存失败
  9475. if (!string.IsNullOrEmpty(errMsg))
  9476. {
  9477. return errMsg;
  9478. }
  9479. #endregion
  9480. }
  9481. }
  9482. #endregion
  9483. }
  9484. }
  9485. #endregion
  9486. #region 条码是次品 删除在产产品数据
  9487. if (substandardFlag)
  9488. {
  9489. #region 删除在产产品数据
  9490. InProductionEntity delInProductionEntity = new InProductionEntity();
  9491. delInProductionEntity.BarCode = productionData.Barcode;
  9492. delInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9493. delInProductionEntity.ProductionDataID = productionDataID;
  9494. delInProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9495. delInProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9496. // 执行删除 在产数据
  9497. errMsg = DeletePDAInProduction(oracleTrConn, delInProductionEntity, false, sUserInfo);
  9498. // 执行失败
  9499. if (!string.IsNullOrEmpty(errMsg))
  9500. {
  9501. return errMsg;
  9502. }
  9503. #endregion
  9504. }
  9505. #endregion
  9506. #region 条码不是次品
  9507. if (!substandardFlag)
  9508. {
  9509. #region 中间工序/重烧/冷补 修改在产产品数据
  9510. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin
  9511. || procedure.NodeType == (int)Constant.ProcedureNodeType.Middle
  9512. || productionData.IsReFire == Constant.GoodsGrade.ReFire.GetHashCode()
  9513. || productionData.IsLengBu == 1)
  9514. {
  9515. #region 修改在产产品数据的当前工序
  9516. if (finishedCheckProcedureID > 0 ){
  9517. InProductionEntity inProductionEntity = new InProductionEntity();
  9518. inProductionEntity.BarCode = productionData.Barcode;
  9519. //流程工序
  9520. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  9521. // 当前工序
  9522. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9523. inProductionEntity.ProcedureID = procedure.ProcedureID;
  9524. //生产数据ID
  9525. inProductionEntity.ProductionDataID = productionDataID;
  9526. // 工序模型
  9527. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  9528. // 工序类别
  9529. inProductionEntity.ModelType = procedure.ModelType;
  9530. // 生产工号
  9531. inProductionEntity.UserID = productionData.UserID;
  9532. // 重烧
  9533. inProductionEntity.IsReFire = productionData.IsReFire;
  9534. // 重烧
  9535. inProductionEntity.IsLengBu = productionData.IsLengBu;
  9536. // 缺陷
  9537. inProductionEntity.DefectFlag = productionData.DefectFlag;
  9538. // 产品分级
  9539. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  9540. // 返工工序ID
  9541. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  9542. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9543. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9544. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  9545. // 执行修改
  9546. errMsg = UpdateInProductionSpec(oracleTrConn, inProductionEntity, sUserInfo);
  9547. // 执行失败
  9548. if (!string.IsNullOrEmpty(errMsg))
  9549. {
  9550. return errMsg;
  9551. }
  9552. }
  9553. else
  9554. {
  9555. InProductionEntity inProductionEntity = new InProductionEntity();
  9556. inProductionEntity.BarCode = productionData.Barcode;
  9557. //流程工序
  9558. inProductionEntity.FlowProcedureID = procedure.ProcedureID;
  9559. // 当前工序
  9560. //inProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  9561. inProductionEntity.ProcedureID = procedure.ProcedureID;
  9562. //生产数据ID
  9563. inProductionEntity.ProductionDataID = productionDataID;
  9564. // 工序模型
  9565. inProductionEntity.ProcedureModel = procedure.ProcedureModel;
  9566. // 工序类别
  9567. inProductionEntity.ModelType = procedure.ModelType;
  9568. // 生产工号
  9569. inProductionEntity.UserID = productionData.UserID;
  9570. // 重烧
  9571. inProductionEntity.IsReFire = productionData.IsReFire;
  9572. // 重烧
  9573. inProductionEntity.IsLengBu = productionData.IsLengBu;
  9574. // 缺陷
  9575. inProductionEntity.DefectFlag = productionData.DefectFlag;
  9576. // 产品分级
  9577. inProductionEntity.GoodsGrade = productionData.GoodsGrade;
  9578. // 返工工序ID
  9579. inProductionEntity.ReworkProcedureID = productionData.ReworkProcedureID;
  9580. inProductionEntity.GoodsLevelID = productionData.GoodsLevelID;
  9581. inProductionEntity.GoodsLevelTypeID = productionData.GoodsLevelTypeID;
  9582. inProductionEntity.IsPublicBody = productionData.IsPublicBody;
  9583. // 执行修改
  9584. errMsg = UpdateInProduction(oracleTrConn, inProductionEntity, sUserInfo);
  9585. // 执行失败
  9586. if (!string.IsNullOrEmpty(errMsg))
  9587. {
  9588. return errMsg;
  9589. }
  9590. #endregion
  9591. }
  9592. }
  9593. #endregion
  9594. #region 结束工序 添加成品数据 删除在产产品数据
  9595. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.End)
  9596. {
  9597. #region 添加成品数据 删除在产产品数据
  9598. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  9599. finishedProduct.BarCode = productionData.Barcode;
  9600. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  9601. if (!string.IsNullOrEmpty(errMsg))
  9602. {
  9603. return errMsg;
  9604. }
  9605. InProductionEntity delInProductionEntity = new InProductionEntity();
  9606. delInProductionEntity.BarCode = productionData.Barcode;
  9607. // 执行删除 在产数据
  9608. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  9609. // 执行失败
  9610. if (!string.IsNullOrEmpty(errMsg))
  9611. {
  9612. return errMsg;
  9613. }
  9614. #endregion
  9615. }
  9616. #endregion
  9617. }
  9618. #endregion
  9619. #region 更新注浆明细上的冷补标识
  9620. if (productionData.IsLengBu == 1)
  9621. {
  9622. oracleTrConn.ExecuteNonQuery(@"
  9623. UPDATE tp_pm_groutingdailydetail SET ISLENGBU = '1'
  9624. WHERE BARCODE = :BARCODE ",
  9625. new OracleParameter[] {
  9626. new OracleParameter(":BARCODE", productionData.Barcode)
  9627. });
  9628. }
  9629. #endregion
  9630. #region 写入检验标识 CheckFlag 用于计件 xuwei 2020-04-21
  9631. oracleTrConn.ExecuteNonQuery(@"
  9632. UPDATE
  9633. TP_PM_PRODUCTIONDATA SET CHECKFLAG = :CHECKFLAG
  9634. WHERE
  9635. PRODUCTIONDATAID = :PRODUCTIONDATAID
  9636. ",
  9637. new OracleParameter[] {
  9638. new OracleParameter(":CHECKFLAG",productionData.CheckFlag),
  9639. new OracleParameter(":PRODUCTIONDATAID",productionDataID)
  9640. }
  9641. );
  9642. #endregion
  9643. #region bomDetail报损
  9644. if (bomDetailTable != null && bomDetailTable.Rows.Count > 0 )
  9645. {
  9646. //取大件小件-》成本中心
  9647. string costcenter = string.Empty;
  9648. string costcenterName = string.Empty;
  9649. string sqlStrings = @"SELECT SUBSTR(GT.GOODSTYPECODE , 0,6) as GOODSTYPECODE
  9650. FROM TP_PM_GROUTINGDAILYDETAIL GDD
  9651. INNER JOIN TP_MST_GOODS G
  9652. ON G.GOODSID = GDD.GOODSID
  9653. INNER JOIN TP_MST_GOODSTYPE GT
  9654. ON GT.GOODSTYPEID = G.GOODSTYPEID
  9655. WHERE BARCODE = :BarCode";
  9656. OracleParameter[] parmetersSql = null;
  9657. parmetersSql = new OracleParameter[]
  9658. {
  9659. new OracleParameter(":BarCode", OracleDbType.NVarchar2, productionData.Barcode, ParameterDirection.Input),
  9660. };
  9661. DataSet returnDataset = oracleTrConn.GetSqlResultToDs(sqlStrings, parmetersSql);
  9662. if (returnDataset != null && returnDataset.Tables.Count > 0 && returnDataset.Tables[0].Rows.Count > 0 )
  9663. {
  9664. //大件
  9665. if (returnDataset.Tables[0].Rows[0]["GOODSTYPECODE"] +"" == "001001")
  9666. {
  9667. costcenter = "5000600206";
  9668. costcenterName = "成检部-一科(大件)";
  9669. }
  9670. else if (returnDataset.Tables[0].Rows[0]["GOODSTYPECODE"] + "" == "001002")
  9671. {
  9672. //小件
  9673. costcenter = "5000600106";
  9674. costcenterName = "成检部-一科(小件)";
  9675. }
  9676. }
  9677. for (int i = 0; i < bomDetailTable.Rows.Count; i++)
  9678. {
  9679. //单报损(只插入报损表,原材料表不动)
  9680. if (bomDetailTable.Rows[i]["FrmLossCheck"] + "" == "1")
  9681. {
  9682. #region SQL
  9683. string sqlString = "insert into TP_PM_BARCODEIDNRKSCRAP(\n" +
  9684. "PROCEDUREID,\n" +
  9685. "SCRAPTYPE,\n" +
  9686. "BARCODE,\n" +
  9687. "MATNR,\n" +
  9688. "IDNRK,\n" +
  9689. "MEINS,\n" +
  9690. "MENGE,\n" +
  9691. "IDNRKNAME,\n" +
  9692. "IDNRKONLYCODE,\n" +
  9693. "CHARG,\n" +
  9694. "LGORT,\n" +
  9695. "AccountID,\n" +
  9696. "CreateTime,\n" +
  9697. "CreateUserID,\n" +
  9698. "UpdateTime,\n" +
  9699. "UpdateUserID,\n" +
  9700. "COSTCENTER,\n" +
  9701. "COSTCENTERNAME,\n" +
  9702. "SCRAPREASON)"
  9703. + " values"
  9704. + " (:PROCEDUREID,"
  9705. + " :SCRAPTYPE,"
  9706. + " :BARCODE,"
  9707. + " :MATNR,"
  9708. + " :IDNRK,"
  9709. + " :MEINS,"
  9710. + " :MENGE,"
  9711. + " :IDNRKNAME,"
  9712. + " :IDNRKONLYCODE,"
  9713. + " :CHARG,"
  9714. + " :LGORT,"
  9715. + " :AccountID,"
  9716. + " SYSDATE,"
  9717. + " :CreateUserID,"
  9718. + " SYSDATE,"
  9719. + " :UpdateUserID,"
  9720. + " :COSTCENTER,"
  9721. + " :COSTCENTERNAME,"
  9722. + " :SCRAPREASON)";
  9723. #endregion
  9724. #region OracleParameter
  9725. OracleParameter[] paras = new OracleParameter[] {
  9726. new OracleParameter(":PROCEDUREID",procedure.ProcedureID),
  9727. new OracleParameter(":SCRAPTYPE","1"),
  9728. new OracleParameter(":BARCODE",productionData.Barcode),
  9729. new OracleParameter(":MATNR",bomDetailTable.Rows[i]["MATNR"]+""),
  9730. new OracleParameter(":IDNRK",bomDetailTable.Rows[i]["IDNRK"]+""),
  9731. new OracleParameter(":MEINS",bomDetailTable.Rows[i]["MEINS"]+""),
  9732. new OracleParameter(":MENGE",bomDetailTable.Rows[i]["MENGE"]+""),
  9733. new OracleParameter(":IDNRKNAME",bomDetailTable.Rows[i]["DetailName"]+""),
  9734. new OracleParameter(":IDNRKONLYCODE",bomDetailTable.Rows[i]["IDNRKONLYCODE"]+""),
  9735. new OracleParameter(":CHARG",bomDetailTable.Rows[i]["CHARG"]+""),
  9736. new OracleParameter(":LGORT",bomDetailTable.Rows[i]["LGORT"]+""),
  9737. new OracleParameter(":AccountID",sUserInfo.AccountID),
  9738. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  9739. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  9740. new OracleParameter(":COSTCENTER",costcenter),
  9741. new OracleParameter(":COSTCENTERNAME",costcenterName),
  9742. new OracleParameter(":SCRAPREASON",bomDetailTable.Rows[i]["SCRAPREASON"]+""),
  9743. };
  9744. #endregion
  9745. int result = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9746. }
  9747. //回收(删除原材料表中对应的组件,报损表不动)
  9748. else if (bomDetailTable.Rows[i]["RecoverCheck"] + "" == "1")
  9749. {
  9750. string sqlString =
  9751. "UPDATE TP_PM_BARCODEIDNRKREL t\n" +
  9752. " SET t.valueFlag = '0'\n" +
  9753. " WHERE t.RELATIONID = " + bomDetailTable.Rows[i]["RELATIONID"];
  9754. int result = oracleTrConn.ExecuteNonQuery(sqlString);
  9755. }
  9756. //报损并换新(更新原材料表(新编码),旧编码插入报损表)
  9757. else if (bomDetailTable.Rows[i]["NewCheck"] + "" == "1")
  9758. {
  9759. string sqlString = string.Empty;
  9760. int result = 0;
  9761. if (!string.IsNullOrWhiteSpace(bomDetailTable.Rows[i]["NEWIDNRKONLYCODE"]+""))
  9762. {
  9763. sqlString =
  9764. "UPDATE TP_PM_BARCODEIDNRKREL t\n" +
  9765. " SET t.IDNRKONLYCODE = '" + bomDetailTable.Rows[i]["NEWIDNRKONLYCODE"] + "' " +
  9766. " WHERE t.RELATIONID = " + bomDetailTable.Rows[i]["RELATIONID"] + "";
  9767. result = oracleTrConn.ExecuteNonQuery(sqlString);
  9768. }
  9769. #region SQL
  9770. sqlString = "insert into TP_PM_BARCODEIDNRKSCRAP(\n" +
  9771. "PROCEDUREID,\n" +
  9772. "SCRAPTYPE,\n" +
  9773. "BARCODE,\n" +
  9774. "MATNR,\n" +
  9775. "IDNRK,\n" +
  9776. "MEINS,\n" +
  9777. "MENGE,\n" +
  9778. "IDNRKNAME,\n" +
  9779. "IDNRKONLYCODE,\n" +
  9780. "CHARG,\n" +
  9781. "LGORT,\n" +
  9782. "AccountID,\n" +
  9783. "CreateTime,\n" +
  9784. "CreateUserID,\n" +
  9785. "UpdateTime,\n" +
  9786. "UpdateUserID,\n" +
  9787. "COSTCENTER,\n" +
  9788. "COSTCENTERNAME,\n" +
  9789. "SCRAPREASON)"
  9790. + " values"
  9791. + " (:PROCEDUREID,"
  9792. + " :SCRAPTYPE,"
  9793. + " :BARCODE,"
  9794. + " :MATNR,"
  9795. + " :IDNRK,"
  9796. + " :MEINS,"
  9797. + " :MENGE,"
  9798. + " :IDNRKNAME,"
  9799. + " :IDNRKONLYCODE,"
  9800. + " :CHARG,"
  9801. + " :LGORT,"
  9802. + " :AccountID,"
  9803. + " SYSDATE,"
  9804. + " :CreateUserID,"
  9805. + " SYSDATE,"
  9806. + " :UpdateUserID,"
  9807. + " :COSTCENTER,"
  9808. + " :COSTCENTERNAME,"
  9809. + " :SCRAPREASON)";
  9810. #endregion
  9811. #region OracleParameter
  9812. OracleParameter[] paras = new OracleParameter[] {
  9813. new OracleParameter(":PROCEDUREID",procedure.ProcedureID),
  9814. new OracleParameter(":SCRAPTYPE","1"),
  9815. new OracleParameter(":BARCODE",productionData.Barcode),
  9816. new OracleParameter(":MATNR",bomDetailTable.Rows[i]["MATNR"]+""),
  9817. new OracleParameter(":IDNRK",bomDetailTable.Rows[i]["IDNRK"]+""),
  9818. new OracleParameter(":MEINS",bomDetailTable.Rows[i]["MEINS"]+""),
  9819. new OracleParameter(":MENGE",bomDetailTable.Rows[i]["MENGE"]+""),
  9820. new OracleParameter(":IDNRKNAME",bomDetailTable.Rows[i]["DetailName"]+""),
  9821. new OracleParameter(":IDNRKONLYCODE",bomDetailTable.Rows[i]["IDNRKONLYCODE"]+""),
  9822. new OracleParameter(":CHARG",bomDetailTable.Rows[i]["CHARG"]+""),
  9823. new OracleParameter(":LGORT",bomDetailTable.Rows[i]["LGORT"]+""),
  9824. new OracleParameter(":AccountID",sUserInfo.AccountID),
  9825. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  9826. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  9827. new OracleParameter(":COSTCENTER",costcenter),
  9828. new OracleParameter(":COSTCENTERNAME",costcenterName),
  9829. new OracleParameter(":SCRAPREASON",bomDetailTable.Rows[i]["SCRAPREASON"]+""),
  9830. };
  9831. #endregion
  9832. result += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9833. }
  9834. }
  9835. }
  9836. #endregion
  9837. }
  9838. return errMsg;
  9839. }
  9840. /// <summary>
  9841. /// 编辑后删除生产数据
  9842. /// </summary>
  9843. /// <param name="productionDataID">生产数据ID</param>
  9844. /// <returns>int</returns>
  9845. public static string DeleteSubstandardToSubstandardByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9846. {
  9847. int deleteRow = 0;
  9848. try
  9849. {
  9850. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9851. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9852. (
  9853. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9854. )";
  9855. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9856. where
  9857. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9858. ";
  9859. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9860. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9861. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9862. where TP_PM_DefectResponsible.Productiondefectid in
  9863. (
  9864. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9865. )";
  9866. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9867. where TP_PM_DefectImage.Productiondefectid in
  9868. (
  9869. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9870. )";
  9871. // string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9872. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9873. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9874. OracleParameter[] paras = new OracleParameter[]{
  9875. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  9876. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9877. };
  9878. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  9879. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  9880. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  9881. };
  9882. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  9883. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  9884. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  9885. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  9886. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  9887. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  9888. // 有错误
  9889. if (deleteRow == 0)
  9890. {
  9891. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  9892. }
  9893. return null;
  9894. }
  9895. catch (Exception ex)
  9896. {
  9897. throw ex;
  9898. }
  9899. }
  9900. /// <summary>
  9901. /// 编辑后删除生产数据
  9902. /// </summary>
  9903. /// <param name="productionDataID">生产数据ID</param>
  9904. /// <returns>int</returns>
  9905. public static string DeleteSubstandardToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  9906. {
  9907. int deleteRow = 0;
  9908. try
  9909. {
  9910. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9911. where TP_PM_DefectMissedResponsible.Productiondefectid in
  9912. (
  9913. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9914. )";
  9915. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  9916. where
  9917. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  9918. ";
  9919. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  9920. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  9921. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  9922. where TP_PM_DefectResponsible.Productiondefectid in
  9923. (
  9924. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9925. )";
  9926. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  9927. where TP_PM_DefectImage.Productiondefectid in
  9928. (
  9929. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  9930. )";
  9931. //string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0 where barcode=:barcode";
  9932. string sqlScrapProduct = @"update TP_PM_ScrapProduct set ValueFlag=0, UpdateUserID=:UpdateUserID where ScrapProductID=(
  9933. select max(ScrapProductID) from TP_PM_ScrapProduct where barcode=:barcode)";
  9934. string sqlExist = "select 1 from tp_pm_inproduction where barcode = :barcode ";
  9935. string sqlInsert = @"insert into TP_PM_InProduction
  9936. (
  9937. BarCode,
  9938. ProductionLineID,
  9939. ProductionLineCode,
  9940. ProductionLineName,
  9941. ProcedureModel,
  9942. ModelType,
  9943. DefectFlag,
  9944. ReworkProcedureID,
  9945. IsPublicBody,
  9946. IsReFire,
  9947. GoodsLevelID,
  9948. GoodsLevelTypeID,
  9949. GoodsID,
  9950. GoodsCode,
  9951. GoodsName,
  9952. UserID,
  9953. GroutingDailyID,
  9954. GroutingDailyDetailID,
  9955. GroutingDate,
  9956. GroutingLineID,
  9957. GroutingLineCode,
  9958. GroutingLineName,
  9959. GMouldTypeID,
  9960. CanManyTimes,
  9961. GroutingLineDetailID,
  9962. GroutingMouldCode,
  9963. MouldCode,
  9964. GroutingUserID,
  9965. GroutingUserCode,
  9966. GroutingNum,
  9967. Remarks,
  9968. KilnID,
  9969. KilnCode,
  9970. KilnName,
  9971. KilnCarID,
  9972. KilnCarCode,
  9973. KilnCarName,
  9974. KilnCarBatchNo,
  9975. KilnCarPosition,
  9976. AccountID,
  9977. ValueFlag,
  9978. CreateTime,
  9979. CreateUserID,
  9980. UpdateTime,
  9981. UpdateUserID,
  9982. OPTimeStamp,
  9983. SpecialRepairflag,
  9984. FlowProcedureID,
  9985. FlowProcedureTime,
  9986. ProcedureID,
  9987. ProcedureTime,
  9988. ProductionDataID,
  9989. logoid, ISREWORKFLAG, SEMICHECKID
  9990. )
  9991. select
  9992. BarCode,
  9993. ProductionLineID,
  9994. ProductionLineCode,
  9995. ProductionLineName,
  9996. ProcedureModel,
  9997. ModelType,
  9998. DefectFlag,
  9999. ReworkProcedureID,
  10000. IsPublicBody,
  10001. IsReFire,
  10002. GoodsLevelID,
  10003. GoodsLevelTypeID,
  10004. GoodsID,
  10005. GoodsCode,
  10006. GoodsName,
  10007. UserID,
  10008. GroutingDailyID,
  10009. GroutingDailyDetailID,
  10010. GroutingDate,
  10011. GroutingLineID,
  10012. GroutingLineCode,
  10013. GroutingLineName,
  10014. GMouldTypeID,
  10015. CanManyTimes,
  10016. GroutingLineDetailID,
  10017. GroutingMouldCode,
  10018. MouldCode,
  10019. GroutingUserID,
  10020. GroutingUserCode,
  10021. GroutingNum,
  10022. Remarks,
  10023. KilnID,
  10024. KilnCode,
  10025. KilnName,
  10026. KilnCarID,
  10027. KilnCarCode,
  10028. KilnCarName,
  10029. KilnCarBatchNo,
  10030. KilnCarPosition,
  10031. AccountID,
  10032. ValueFlag,
  10033. CreateTime,
  10034. CreateUserID,
  10035. UpdateTime,
  10036. UpdateUserID,
  10037. OPTimeStamp,
  10038. SpecialRepairflag,
  10039. FlowProcedureID,
  10040. FlowProcedureTime,
  10041. ProcedureID,
  10042. ProcedureTime,
  10043. ProductionDataID,
  10044. logoid, ISREWORKFLAG, SEMICHECKID
  10045. from TP_PM_InProductionTrash
  10046. where barcode=:barcode
  10047. ";
  10048. string sqlDelete = @"delete from TP_PM_InProductionTrash where barcode=:barcode";
  10049. OracleParameter[] paras = new OracleParameter[]{
  10050. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  10051. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10052. };
  10053. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  10054. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10055. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10056. };
  10057. OracleParameter[] Existparas = new OracleParameter[]{
  10058. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10059. };
  10060. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10061. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  10062. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  10063. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  10064. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  10065. deleteRow += oracleTrConn.ExecuteNonQuery(sqlScrapProduct, ScrapProductparas);
  10066. DataSet dsresult = oracleTrConn.GetSqlResultToDs(sqlExist, Existparas);
  10067. if (dsresult != null && dsresult.Tables[0].Rows.Count == 0)
  10068. {
  10069. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsert, Existparas);
  10070. }
  10071. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelete, Existparas);
  10072. // 有错误
  10073. if (deleteRow == 0)
  10074. {
  10075. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10076. }
  10077. return null;
  10078. }
  10079. catch (Exception ex)
  10080. {
  10081. throw ex;
  10082. }
  10083. }
  10084. /// <summary>
  10085. /// 编辑后删除生产数据
  10086. /// </summary>
  10087. /// <param name="productionDataID">生产数据ID</param>
  10088. /// <returns>int</returns>
  10089. public static string DeleteNormalToOtherByID(IDBTransaction oracleTrConn, int productionDataID, string barcode, SUserInfo sUserInfo)
  10090. {
  10091. int deleteRow = 0;
  10092. try
  10093. {
  10094. string sqlString5 = @"update TP_PM_DefectMissedResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10095. where TP_PM_DefectMissedResponsible.Productiondefectid in
  10096. (
  10097. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10098. )";
  10099. string sqlString4 = @"update TP_PM_ProductionDataIn set ValueFlag=0, UpdateUserID=:UpdateUserID
  10100. where
  10101. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  10102. ";
  10103. string sqlString3 = @"update TP_PM_Defect set ValueFlag=0, UpdateUserID=:UpdateUserID
  10104. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  10105. string sqlString2 = @"update TP_PM_DefectResponsible set ValueFlag=0, UpdateUserID=:UpdateUserID
  10106. where TP_PM_DefectResponsible.Productiondefectid in
  10107. (
  10108. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10109. )";
  10110. string sqlString = @"update TP_PM_DefectImage set ValueFlag=0, UpdateUserID=:UpdateUserID
  10111. where TP_PM_DefectImage.Productiondefectid in
  10112. (
  10113. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  10114. )";
  10115. OracleParameter[] paras = new OracleParameter[]{
  10116. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  10117. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  10118. };
  10119. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString, paras);
  10120. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString2, paras);
  10121. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString3, paras);
  10122. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString4, paras);
  10123. deleteRow += oracleTrConn.ExecuteNonQuery(sqlString5, paras);
  10124. // 有错误
  10125. if (deleteRow == 0)
  10126. {
  10127. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10128. }
  10129. return null;
  10130. }
  10131. catch (Exception ex)
  10132. {
  10133. throw ex;
  10134. }
  10135. }
  10136. #endregion
  10137. /// <summary>
  10138. /// 校验干补条码有效
  10139. /// </summary>
  10140. /// <param name="oracleTrConn">连接对象</param>
  10141. /// <param name="procedureID">工序ID</param>
  10142. /// <param name="barcode">条码</param>
  10143. /// <param name="goodsID">返回的产品ID</param>
  10144. /// <param name="goodsCode">返回的产品Code</param>
  10145. /// <param name="goodsName">返回的产品名称</param>
  10146. /// <param name="groutingUserID">返回的注浆者ID</param>
  10147. /// <returns>string</returns>
  10148. /// <remarks>
  10149. /// 袁新成 2015.3.27 新建
  10150. /// </remarks>
  10151. private static string CheckDryRepairBarcode(IDBTransaction oracleTrConn,
  10152. int procedureID,
  10153. string barcode,
  10154. out int goodsID,
  10155. out string goodsCode,
  10156. out string goodsName,
  10157. out string groutingUserCode,
  10158. SUserInfo sUserInfo
  10159. )
  10160. {
  10161. try
  10162. {
  10163. OracleParameter[] paras = new OracleParameter[]{
  10164. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  10165. new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  10166. new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  10167. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  10168. new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  10169. new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  10170. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  10171. };
  10172. oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  10173. if (!"null".Equals(paras[3].Value + ""))
  10174. {
  10175. goodsID = Convert.ToInt32(paras[3].Value + "");
  10176. }
  10177. else
  10178. {
  10179. goodsID = 0;
  10180. }
  10181. goodsCode = paras[4].Value + "";
  10182. goodsName = paras[5].Value + "";
  10183. if (!"null".Equals(paras[6].Value + ""))
  10184. {
  10185. groutingUserCode = paras[6].Value + "";
  10186. }
  10187. else
  10188. {
  10189. groutingUserCode = null;
  10190. }
  10191. if ("null".Equals(paras[2].Value + ""))
  10192. {
  10193. return null;
  10194. }
  10195. return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  10196. }
  10197. catch (Exception ex)
  10198. {
  10199. throw ex;
  10200. }
  10201. }
  10202. /// <summary>
  10203. /// 干补标准计件
  10204. /// </summary>
  10205. /// <param name="oracleTrConn">数据连接对象</param>
  10206. /// <param name="procedure">工序对象</param>
  10207. /// <param name="barcodeTable">条码信息</param>
  10208. /// <param name="sUserInfo">用户基本信息</param>
  10209. /// <param name="goodsID">返回的产品ID</param>
  10210. /// <param name="goodsCode">返回的产品Code</param>
  10211. /// <param name="goodsName">返回的产品名称</param>
  10212. /// <param name="groutingUserID">返回的注浆者ID</param>
  10213. /// <returns>string</returns>
  10214. /// <remarks>
  10215. /// 袁新成 2015.3.26 新建
  10216. /// </remarks>
  10217. private static string AddDryRepairWorkPiece(IDBTransaction oracleTrConn,
  10218. ProcedureEntity procedure,
  10219. DataTable barcodeTable,
  10220. SUserInfo sUserInfo,
  10221. out int goodsID,
  10222. out string goodsCode,
  10223. out string goodsName,
  10224. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  10225. {
  10226. try
  10227. {
  10228. int deleteRow = 0;
  10229. goodsID = Constant.INT_IS_ZERO;
  10230. goodsCode = null;
  10231. goodsName = null;
  10232. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  10233. // 获得账务日期
  10234. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  10235. string errMsg = string.Empty;
  10236. // 本批采集的批次号
  10237. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  10238. // 条码信息
  10239. string logoName_Temp = "";
  10240. string logoCode_Temp = "";
  10241. string groutingdate_Temp = "";
  10242. foreach (DataRow barcodeRow in barcodeTable.Rows)
  10243. {
  10244. // 条码
  10245. string barcode = barcodeRow["Barcode"].ToString();
  10246. if (string.IsNullOrEmpty(barcode))
  10247. {
  10248. throw new Exception("传入的条码号为空");
  10249. }
  10250. // 生产工号
  10251. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  10252. // 生产工号
  10253. string workUserCode = barcodeRow["UserCode"].ToString();
  10254. //#region 校验条码有效性
  10255. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  10256. //if (!string.IsNullOrEmpty(errMsg))
  10257. //{
  10258. // return errMsg;
  10259. //}
  10260. //#endregion
  10261. if (procedure.CollectType == 1)
  10262. {
  10263. #region 校验条码有效性
  10264. errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  10265. if (!string.IsNullOrEmpty(errMsg))
  10266. {
  10267. logoName = "";
  10268. logoCode = "";
  10269. groutingdate = "";
  10270. return errMsg;
  10271. }
  10272. #endregion
  10273. }
  10274. else
  10275. {
  10276. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  10277. tp_pm_groutingdailydetail.goodscode,
  10278. tp_pm_groutingdailydetail.goodsname,
  10279. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  10280. tp_pm_groutingdailydetail.groutingdate,
  10281. tp_mst_logo.logoid,
  10282. tp_mst_logo.logocode,
  10283. tp_mst_logo.logoname
  10284. from tp_pm_groutingdailydetail
  10285. left join tp_mst_logo
  10286. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  10287. where tp_pm_groutingdailydetail.barcode=:barcode
  10288. ";
  10289. OracleParameter[] paras = new OracleParameter[] {
  10290. new OracleParameter(":barcode",barcode),
  10291. };
  10292. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  10293. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  10294. {
  10295. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  10296. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  10297. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  10298. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  10299. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  10300. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  10301. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  10302. logoName_Temp = logoName;
  10303. logoCode_Temp = logoCode;
  10304. groutingdate_Temp = groutingdate;
  10305. }
  10306. }
  10307. #region 数据处理
  10308. #region 处理废弃数据并转回收数据为在产数据
  10309. string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  10310. OracleParameter[] queryparas = new OracleParameter[]{
  10311. new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  10312. };
  10313. DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  10314. if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  10315. {
  10316. errMsg = "未设定干补等级";
  10317. logoName = "";
  10318. logoCode = "";
  10319. groutingdate = "";
  10320. return errMsg;
  10321. }
  10322. string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  10323. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  10324. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  10325. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  10326. UpdateUserID=:UpdateUserID
  10327. where BarCode=:barcode
  10328. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  10329. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  10330. */
  10331. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  10332. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  10333. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  10334. UpdateUserID=:UpdateUserID
  10335. where BarCode=:barcode
  10336. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  10337. and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  10338. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  10339. new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  10340. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10341. new OracleParameter(":barcode1",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10342. new OracleParameter(":SpecialRepairUserID",OracleDbType.Int32,workUserID,ParameterDirection.Input),
  10343. new OracleParameter(":SpecialRepairUserCode",OracleDbType.Varchar2,workUserCode,ParameterDirection.Input),
  10344. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  10345. };
  10346. //modify wangx 20150623
  10347. OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  10348. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10349. };
  10350. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  10351. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  10352. string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  10353. oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  10354. //modify wangx 20150623 end
  10355. #region
  10356. //第五步,插入干补工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  10357. // 查询新插入的生产数据ID
  10358. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  10359. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  10360. int productionDataID = 0;
  10361. if (!string.IsNullOrEmpty(idStr))
  10362. {
  10363. productionDataID = int.Parse(idStr);
  10364. }
  10365. else
  10366. {
  10367. logoName = "";
  10368. logoCode = "";
  10369. groutingdate = "";
  10370. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10371. }
  10372. int? ClassesSettingID = null;//班次配置ID
  10373. #region 第五步 添加生产者数据
  10374. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  10375. if (!string.IsNullOrEmpty(errMsg))
  10376. {
  10377. logoName = "";
  10378. logoCode = "";
  10379. groutingdate = "";
  10380. return errMsg;
  10381. }
  10382. #endregion
  10383. ProductionDataEntity productionData = new ProductionDataEntity();
  10384. #region 属性赋值
  10385. productionData.ClassesSettingID = ClassesSettingID;
  10386. productionData.ProductionDataID = Convert.ToInt32(idStr);
  10387. productionData.Barcode = barcode;
  10388. productionData.CentralizedBatchNo = centralizedBatchNo;
  10389. productionData.ProductionLineID = procedure.ProductionLineID;
  10390. productionData.ProductionLineCode = procedure.ProductionlineCode;
  10391. productionData.ProductionLineName = procedure.ProductionlineName;
  10392. productionData.CompleteProcedureID = procedure.ProcedureID;
  10393. productionData.ProcedureCode = procedure.ProcedureCode;
  10394. productionData.ProcedureName = procedure.ProcedureName;
  10395. productionData.ProcedureModel = procedure.ProcedureModel;
  10396. productionData.ModelType = procedure.ModelType;
  10397. productionData.NodeType = procedure.NodeType;
  10398. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  10399. productionData.ReworkProcedureID = null;
  10400. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  10401. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  10402. //设置干补标识,产品分级类别=9干补
  10403. productionData.GoodsLevelTypeID = 9;
  10404. productionData.GoodsLevelID = int.Parse(goodsLevelID);
  10405. productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  10406. productionData.OrganizationID = procedure.OrganizationID;
  10407. productionData.GoodsID = goodsID;
  10408. productionData.GoodsCode = goodsCode;
  10409. productionData.GoodsName = goodsName;
  10410. productionData.UserID = workUserID;
  10411. productionData.UserCode = barcodeRow["UserCode"].ToString();
  10412. productionData.UserName = barcodeRow["UserName"].ToString();
  10413. productionData.PieceType = procedure.PieceType;
  10414. if (barcodeRow["LogoID"].ToString() != "")
  10415. {
  10416. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  10417. }
  10418. string sqlReFire = @"select
  10419. isrefire,
  10420. logoid
  10421. from tp_pm_inproduction where barcode=:barcode
  10422. union
  10423. select
  10424. isrefire,
  10425. logoid
  10426. from TP_PM_InProductionTrash where barcode=:barcode
  10427. union
  10428. select
  10429. isrefire,
  10430. logoid
  10431. from TP_PM_FinishedProduct where barcode=:barcode ";
  10432. OracleParameter[] ReFireparas = new OracleParameter[] {
  10433. new OracleParameter(":barcode",barcode),
  10434. };
  10435. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  10436. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  10437. {
  10438. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  10439. {
  10440. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  10441. }
  10442. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  10443. {
  10444. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  10445. }
  10446. }
  10447. #endregion 属性赋值
  10448. string OutSpecialRepairflag = "0";//干补标识
  10449. productionData.SpecialRepairflag = 1;
  10450. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  10451. if (!string.IsNullOrEmpty(errMsg))
  10452. {
  10453. logoName = "";
  10454. logoCode = "";
  10455. groutingdate = "";
  10456. return errMsg;
  10457. }
  10458. #endregion
  10459. //第二步,回收站中数据回到在产中,设置干补标识。
  10460. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  10461. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  10462. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  10463. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  10464. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  10465. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  10466. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  10467. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  10468. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  10469. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  10470. KILNID, KILNCODE, KILNNAME, KILNCARID,
  10471. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  10472. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  10473. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  10474. :PROCEDUREMODEL, :MODELTYPE, REWORKPROCEDUREID,
  10475. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  10476. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  10477. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  10478. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  10479. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  10480. CREATEUSERID, UPDATETIME, :UpdateUserID,
  10481. ISREFIRE, null, null, DEFECTFLAG,
  10482. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  10483. KILNID, KILNCODE, KILNNAME, KILNCARID,
  10484. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,1,FlowProcedureID ,
  10485. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  10486. from TP_PM_InProductionTrash where barcode=:barcode ";
  10487. OracleParameter[] InProductparas = new OracleParameter[]{
  10488. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  10489. // new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  10490. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  10491. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  10492. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  10493. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  10494. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  10495. };
  10496. //第三步,删除回收站中的条码
  10497. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  10498. OracleParameter[] TrashProductparas = new OracleParameter[]{
  10499. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  10500. };
  10501. //第四步,更新注浆表干补标识
  10502. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  10503. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  10504. // where barcode=:barcode)";
  10505. string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  10506. where barcode=:barcode";
  10507. OracleParameter[] GroutingProductparas = new OracleParameter[]{
  10508. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  10509. };
  10510. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  10511. // where barcode=:barcode ";
  10512. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  10513. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  10514. // };
  10515. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  10516. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  10517. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  10518. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  10519. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  10520. // 失败
  10521. if (deleteRow == Constant.INT_IS_ZERO)
  10522. {
  10523. logoName = "";
  10524. logoCode = "";
  10525. groutingdate = "";
  10526. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  10527. }
  10528. #endregion
  10529. //#region 第五步 添加生产者数据
  10530. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  10531. //if (!string.IsNullOrEmpty(errMsg))
  10532. //{
  10533. // return errMsg;
  10534. //}
  10535. //#endregion
  10536. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  10537. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  10538. OracleParameter[] Paras = new OracleParameter[] {
  10539. new OracleParameter(":barcode",OracleDbType.Varchar2,
  10540. barcode,ParameterDirection.Input)
  10541. };
  10542. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  10543. if (ds.Tables[0].Rows.Count == 0)
  10544. {
  10545. // 2 生产数据恢复到在产生产数据
  10546. sql = @"insert into tp_pm_productiondatain
  10547. (
  10548. ProductionDataID,
  10549. BarCode,
  10550. CentralizedBatchNo,
  10551. ProductionLineID,
  10552. ProductionLineCode,
  10553. ProductionLineName,
  10554. ProcedureID,
  10555. ProcedureCode,
  10556. ProcedureName,
  10557. ProcedureModel,
  10558. ModelType,
  10559. PieceType,
  10560. IsReworked,
  10561. NodeType,
  10562. IsPublicBody,
  10563. IsReFire,
  10564. islengbu,
  10565. GoodsLevelID,
  10566. GoodsLevelTypeID,
  10567. SpecialRepairFlag,
  10568. OrganizationID,
  10569. GoodsID,
  10570. GoodsCode,
  10571. GoodsName,
  10572. UserID,
  10573. UserCode,
  10574. UserName,
  10575. ClassesSettingID,
  10576. KilnID,
  10577. KilnCode,
  10578. KilnName,
  10579. KilnCarID,
  10580. KilnCarCode,
  10581. KilnCarName,
  10582. KilnCarBatchNo,
  10583. KilnCarPosition,
  10584. ReworkProcedureID,
  10585. ReworkProcedureCode,
  10586. ReworkProcedureName,
  10587. GroutingDailyID,
  10588. GroutingDailyDetailID,
  10589. GroutingLineID,
  10590. GroutingLineCode,
  10591. GroutingLineName,
  10592. GMouldTypeID,
  10593. CanManyTimes,
  10594. GroutingLineDetailID,
  10595. GroutingDate,
  10596. GroutingMouldCode,
  10597. MouldCode,
  10598. GroutingUserID,
  10599. GroutingUserCode,
  10600. GroutingNum,
  10601. Remarks,
  10602. AccountDate,
  10603. SettlementFlag,
  10604. AccountID,
  10605. ValueFlag,
  10606. CreateTime,
  10607. CreateUserID,
  10608. UpdateTime,
  10609. UpdateUserID,
  10610. OPTimeStamp,
  10611. TriggerFlag,
  10612. logoid,
  10613. BackOutTime,BackOutUserID,BackOutUserCode
  10614. )
  10615. select
  10616. ProductionDataID,
  10617. BarCode,
  10618. CentralizedBatchNo,
  10619. ProductionLineID,
  10620. ProductionLineCode,
  10621. ProductionLineName,
  10622. ProcedureID,
  10623. ProcedureCode,
  10624. ProcedureName,
  10625. ProcedureModel,
  10626. ModelType,
  10627. PieceType,
  10628. IsReworked,
  10629. NodeType,
  10630. IsPublicBody,
  10631. IsReFire,
  10632. islengbu,
  10633. GoodsLevelID,
  10634. GoodsLevelTypeID,
  10635. SpecialRepairFlag,
  10636. OrganizationID,
  10637. GoodsID,
  10638. GoodsCode,
  10639. GoodsName,
  10640. UserID,
  10641. UserCode,
  10642. UserName,
  10643. ClassesSettingID,
  10644. KilnID,
  10645. KilnCode,
  10646. KilnName,
  10647. KilnCarID,
  10648. KilnCarCode,
  10649. KilnCarName,
  10650. KilnCarBatchNo,
  10651. KilnCarPosition,
  10652. ReworkProcedureID,
  10653. ReworkProcedureCode,
  10654. ReworkProcedureName,
  10655. GroutingDailyID,
  10656. GroutingDailyDetailID,
  10657. GroutingLineID,
  10658. GroutingLineCode,
  10659. GroutingLineName,
  10660. GMouldTypeID,
  10661. CanManyTimes,
  10662. GroutingLineDetailID,
  10663. GroutingDate,
  10664. GroutingMouldCode,
  10665. MouldCode,
  10666. GroutingUserID,
  10667. GroutingUserCode,
  10668. GroutingNum,
  10669. Remarks,
  10670. AccountDate,
  10671. SettlementFlag,
  10672. AccountID,
  10673. ValueFlag,
  10674. CreateTime,
  10675. CreateUserID,
  10676. UpdateTime,
  10677. UpdateUserID,
  10678. OPTimeStamp,
  10679. 1,
  10680. logoid,
  10681. BackOutTime,BackOutUserID,BackOutUserCode
  10682. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  10683. ";
  10684. oracleTrConn.ExecuteNonQuery(sql, Paras);
  10685. }
  10686. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  10687. #endregion 数据处理
  10688. }
  10689. logoName = logoName_Temp;
  10690. logoCode = logoCode_Temp;
  10691. groutingdate = groutingdate_Temp;
  10692. return errMsg;
  10693. }
  10694. catch (Exception ex)
  10695. {
  10696. throw ex;
  10697. }
  10698. }
  10699. /// <summary>
  10700. /// 添加干补生产数据
  10701. /// </summary>
  10702. /// <param name="oracleTrConn">连接对象</param>
  10703. /// <param name="accountDate">账务日期</param>
  10704. /// <param name="productionData">生产数据</param>
  10705. /// <param name="sUserInfo">用户基本信息</param>
  10706. /// <returns>string</returns>
  10707. /// <remarks>
  10708. /// 袁新成 2015.04.1 新建
  10709. /// </remarks>
  10710. private static string AddDryRepairProductionData(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  10711. {
  10712. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  10713. string selectSql = "";
  10714. string returnVal = "";
  10715. //这地方连了两张表,为了成检的时候,次品在次新增
  10716. selectSql = @"select
  10717. GroutingDate,
  10718. GroutingUserID,
  10719. GroutingUserCode,
  10720. GroutingNum,
  10721. GroutingMouldCode,
  10722. MouldCode,
  10723. GroutingDailyID,
  10724. GroutingDailyDetailID,
  10725. GroutingLineID,
  10726. GroutingLineCode,
  10727. GroutingLineName,
  10728. GMouldTypeID,
  10729. CanManyTimes,
  10730. GroutingLineDetailID,
  10731. SpecialRepairflag
  10732. from tp_pm_inproduction where barcode=:barcode
  10733. union
  10734. select
  10735. GroutingDate,
  10736. GroutingUserID,
  10737. GroutingUserCode,
  10738. GroutingNum,
  10739. GroutingMouldCode,
  10740. MouldCode,
  10741. GroutingDailyID,
  10742. GroutingDailyDetailID,
  10743. GroutingLineID,
  10744. GroutingLineCode,
  10745. GroutingLineName,
  10746. GMouldTypeID,
  10747. CanManyTimes,
  10748. GroutingLineDetailID,
  10749. SpecialRepairflag
  10750. from TP_PM_InProductionTrash where barcode=:barcode
  10751. ";
  10752. OracleParameter[] selectparas = new OracleParameter[] {
  10753. new OracleParameter(":barcode",productionData.Barcode),
  10754. };
  10755. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  10756. if (dsGroutingProduct == null || dsGroutingProduct.Tables[0].Rows.Count == 0)
  10757. {
  10758. selectSql = @"select TP_PM_GroutingDaily.GroutingDate,
  10759. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  10760. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  10761. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  10762. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  10763. TP_PM_GroutingDailyDetail.MouldCode,
  10764. TP_PM_GroutingDailyDetail.GroutingDailyID,
  10765. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  10766. TP_PM_GroutingDailyDetail.GroutingLineID,
  10767. TP_PM_GroutingDailyDetail.GroutingLineCode,
  10768. TP_PM_GroutingDailyDetail.GroutingLineName,
  10769. TP_PM_GroutingDaily.GMouldTypeID,
  10770. TP_PM_GroutingDaily.CanManyTimes,
  10771. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  10772. TP_PM_GroutingDailyDetail.SpecialRepairflag
  10773. from TP_PM_GroutingDaily
  10774. left join TP_PM_GroutingDailyDetail
  10775. on TP_PM_GroutingDaily.GroutingDailyID=TP_PM_GroutingDailyDetail.GroutingDailyID
  10776. where TP_PM_GroutingDailyDetail.barcode=:barcode
  10777. ";
  10778. dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  10779. }
  10780. DateTime GroutingDate = new DateTime();
  10781. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  10782. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  10783. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  10784. {
  10785. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  10786. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  10787. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  10788. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  10789. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  10790. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  10791. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  10792. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  10793. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  10794. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  10795. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  10796. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  10797. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  10798. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  10799. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  10800. returnVal = SpecialRepairflag.ToString();
  10801. }
  10802. #endregion
  10803. #region 更新窑炉窑车属性
  10804. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  10805. {
  10806. DataSet ds = GetDryRepairKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  10807. if (ds != null)
  10808. {
  10809. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  10810. {
  10811. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  10812. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  10813. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  10814. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  10815. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  10816. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  10817. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  10818. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  10819. }
  10820. }
  10821. }
  10822. #endregion
  10823. #region SQL
  10824. string sql = "insert into tp_pm_productiondataIn"
  10825. + " (productiondataid,"
  10826. + " barcode,"
  10827. + " centralizedbatchno,"
  10828. + " productionlineid,"
  10829. + " productionlinecode,"
  10830. + " productionlinename,"
  10831. + " procedureid,"
  10832. + " procedurecode,"
  10833. + " procedurename,"
  10834. + " proceduremodel,"
  10835. + " modeltype,"
  10836. + " piecetype,"
  10837. + " isreworked,"
  10838. + " nodetype,"
  10839. + " ispublicbody,"
  10840. + " isrefire,"
  10841. + " organizationid,"
  10842. + " goodsid,"
  10843. + " goodscode,"
  10844. + " goodsname,"
  10845. + " userid,"
  10846. + " usercode,"
  10847. + " username,"
  10848. + " kilnid,"
  10849. + " kilncode,"
  10850. + " kilnname,"
  10851. + " kilncarid,"
  10852. + " kilncarcode,"
  10853. + " kilncarname,"
  10854. + " kilncarbatchno,"
  10855. + " kilncarposition,"
  10856. + " reworkprocedureid,"
  10857. + " reworkprocedurecode,"
  10858. + " reworkprocedurename,"
  10859. + " remarks,"
  10860. + " accountdate,"
  10861. + " accountid,"
  10862. + " GoodsLevelID,"
  10863. + " GoodsLevelTypeID,"
  10864. + " createuserid,"
  10865. + " updateuserid,"
  10866. + " GroutingDate,"
  10867. + " GroutingUserID,"
  10868. + " GroutingUserCode,"
  10869. + " GroutingNum,"
  10870. + " GroutingMouldCode,"
  10871. + " MouldCode,"
  10872. + "GroutingDailyID,"
  10873. + "GroutingDailyDetailID,"
  10874. + "GroutingLineID,"
  10875. + " GroutingLineCode,"
  10876. + "GroutingLineName,"
  10877. + "GMouldTypeID,"
  10878. + "CanManyTimes,"
  10879. + "GroutingLineDetailID,"
  10880. + "SpecialRepairflag,"
  10881. + "ClassesSettingID,"
  10882. + "LogoID"
  10883. + ")"
  10884. + " values"
  10885. + " (:productiondataid,"
  10886. + " :barcode,"
  10887. + " :centralizedbatchno,"
  10888. + " :productionlineid,"
  10889. + " :productionlinecode,"
  10890. + " :productionlinename,"
  10891. + " :procedureid,"
  10892. + " :procedurecode,"
  10893. + " :procedurename,"
  10894. + " :proceduremodel,"
  10895. + " :modeltype,"
  10896. + " :piecetype,"
  10897. + " :isreworked,"
  10898. + " :nodetype,"
  10899. + " :ispublicbody,"
  10900. + " :isrefire,"
  10901. + " :organizationid,"
  10902. + " :goodsid,"
  10903. + " :goodscode,"
  10904. + " :goodsname,"
  10905. + " :userid,"
  10906. + " :usercode,"
  10907. + " :username,"
  10908. + " :kilnid,"
  10909. + " :kilncode,"
  10910. + " :kilnname,"
  10911. + " :kilncarid,"
  10912. + " :kilncarcode,"
  10913. + " :kilncarname,"
  10914. + " :kilncarbatchno,"
  10915. + " :kilncarposition,"
  10916. + " :reworkprocedureid,"
  10917. + " :reworkprocedurecode,"
  10918. + " :reworkprocedurename,"
  10919. + " :remarks,"
  10920. + " :accountdata,"
  10921. + " :accountid,"
  10922. + " :GoodsLevelID,"
  10923. + " :GoodsLevelTypeID,"
  10924. + " :createuserid,"
  10925. + " :updateuserid,"
  10926. + " :groutingdate,"
  10927. + " :groutinguserid,"
  10928. + " :groutingusercode,"
  10929. + " :groutingnum,"
  10930. + " :groutingmouldcode,"
  10931. + " :mouldcode,"
  10932. + ":groutingdailyid,"
  10933. + ":groutingdailydetailid,"
  10934. + ":groutinglineid,"
  10935. + " :groutinglinecode,"
  10936. + ":groutinglinename,"
  10937. + ":gmouldtypeid,"
  10938. + ":canmanytimes,"
  10939. + ":groutinglinedetailid,"
  10940. + ":specialRepairflag,"
  10941. + ":classesSettingID,"
  10942. + ":logoID"
  10943. + ")";
  10944. #endregion
  10945. #region OracleParameter
  10946. OracleParameter[] paras = new OracleParameter[] {
  10947. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  10948. new OracleParameter(":barcode",productionData.Barcode),
  10949. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  10950. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  10951. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  10952. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  10953. new OracleParameter(":procedureid",productionData.CompleteProcedureID),
  10954. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  10955. new OracleParameter(":procedurename",productionData.ProcedureName),
  10956. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  10957. new OracleParameter(":modeltype",productionData.ModelType),
  10958. new OracleParameter(":piecetype",productionData.PieceType),
  10959. new OracleParameter(":isreworked",productionData.IsReworked),
  10960. new OracleParameter(":nodetype",productionData.NodeType),
  10961. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  10962. new OracleParameter(":isrefire",productionData.IsReFire),
  10963. new OracleParameter(":organizationid",productionData.OrganizationID),
  10964. new OracleParameter(":goodsid",productionData.GoodsID),
  10965. new OracleParameter(":goodscode",productionData.GoodsCode),
  10966. new OracleParameter(":goodsname",productionData.GoodsName),
  10967. new OracleParameter(":userid",productionData.UserID),
  10968. new OracleParameter(":usercode",productionData.UserCode),
  10969. new OracleParameter(":username",productionData.UserName),
  10970. new OracleParameter(":kilnid",productionData.KilnID),
  10971. new OracleParameter(":kilncode",productionData.KilnCode),
  10972. new OracleParameter(":kilnname",productionData.KilnName),
  10973. new OracleParameter(":kilncarid",productionData.KilnCarID),
  10974. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  10975. new OracleParameter(":kilncarname",productionData.KilnCarName),
  10976. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  10977. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  10978. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  10979. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  10980. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  10981. new OracleParameter(":remarks",productionData.Remarks),
  10982. new OracleParameter(":accountdata",accountDate),
  10983. new OracleParameter(":accountid",sUserInfo.AccountID),
  10984. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  10985. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  10986. new OracleParameter(":createuserid",sUserInfo.UserID),
  10987. new OracleParameter(":updateuserid",sUserInfo.UserID),
  10988. new OracleParameter(":groutingdate",GroutingDate),
  10989. new OracleParameter(":groutinguserid",GroutingUserID),
  10990. new OracleParameter(":groutingusercode",GroutingUserCode),
  10991. new OracleParameter(":groutingnum",GroutingNum),
  10992. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  10993. new OracleParameter(":mouldcode",MouldCode),
  10994. new OracleParameter(":groutingdailyid",GroutingDailyID),
  10995. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  10996. new OracleParameter(":groutinglineid",GroutingLineID),
  10997. new OracleParameter(":groutinglinecode",GroutingLineCode),
  10998. new OracleParameter(":groutinglinename",GroutingLineName),
  10999. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  11000. new OracleParameter(":canmanytimes",CanManyTimes),
  11001. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  11002. new OracleParameter(":specialRepairflag",productionData.SpecialRepairflag),
  11003. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  11004. new OracleParameter(":logoID",productionData.LogoID),
  11005. };
  11006. #endregion
  11007. foreach (OracleParameter para in paras)
  11008. {
  11009. if (string.IsNullOrEmpty(para.Value + ""))
  11010. {
  11011. para.Value = DBNull.Value;
  11012. }
  11013. }
  11014. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  11015. OutSpecialRepairflag = returnVal;
  11016. // 失败
  11017. if (result != Constant.INT_IS_ONE)
  11018. {
  11019. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  11020. }
  11021. // 成功返回null
  11022. return null;
  11023. }
  11024. /// <summary>
  11025. /// 根据最大生产数据ID,获取窑车窑炉等信息
  11026. /// </summary>
  11027. /// <param name="oracleTrConn"></param>
  11028. /// <param name="barcode"></param>
  11029. /// <param name="sUserInfo"></param>
  11030. /// <returns></returns>
  11031. private static DataSet GetDryRepairKilnCarInfo(IDBTransaction oracleTrConn, string barcode, SUserInfo sUserInfo)
  11032. {
  11033. // string sql = @"select * from tp_pm_productiondata where Productiondataid=
  11034. // (
  11035. // select nvl(max(Productiondataid),0) Productiondataid from tp_pm_productiondata where barcode=:barcode
  11036. // )";
  11037. string sql = @"select
  11038. KilnID,
  11039. KilnCode,
  11040. KilnName,
  11041. KilnCarID,
  11042. KilnCarCode,
  11043. KilnCarName,
  11044. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  11045. KilnCarPosition
  11046. from tp_pm_inproduction where barcode=:barcode
  11047. union
  11048. select
  11049. KilnID,
  11050. KilnCode,
  11051. KilnName,
  11052. KilnCarID,
  11053. KilnCarCode,
  11054. KilnCarName,
  11055. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  11056. KilnCarPosition
  11057. from TP_PM_InProductionTrash where barcode=:barcode
  11058. ";
  11059. try
  11060. {
  11061. IDataParameter[] paras = new OracleParameter[]
  11062. {
  11063. new OracleParameter(":barcode", OracleDbType.Varchar2, barcode, ParameterDirection.Input),
  11064. };
  11065. DataSet returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  11066. if (returnDs != null
  11067. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  11068. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  11069. {
  11070. return returnDs;
  11071. }
  11072. else
  11073. {
  11074. sql = @"select
  11075. KilnID,
  11076. KilnCode,
  11077. KilnName,
  11078. KilnCarID,
  11079. KilnCarCode,
  11080. KilnCarName,
  11081. to_char(KilnCarBatchNo) as KilnCarBatchNo,
  11082. KilnCarPosition
  11083. from TP_PM_FINISHEDPRODUCT where barcode=:barcode";
  11084. returnDs = oracleTrConn.GetSqlResultToDs(sql, paras);
  11085. if (returnDs != null
  11086. && returnDs.Tables.Count > Constant.INT_IS_ZERO
  11087. && returnDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  11088. {
  11089. return returnDs;
  11090. }
  11091. else
  11092. {
  11093. return null;
  11094. }
  11095. }
  11096. }
  11097. catch (Exception ex)
  11098. {
  11099. throw ex;
  11100. }
  11101. }
  11102. /// <summary>
  11103. /// 交坯保存校验(首节点)
  11104. /// </summary>
  11105. /// <param name="oracleTrConn">连接对象</param>
  11106. /// <param name="procedureID">工序ID</param>
  11107. /// <param name="barcode">条码</param>
  11108. /// <param name="goodsID">返回的产品ID</param>
  11109. /// <param name="goodsCode">返回的产品Code</param>
  11110. /// <param name="goodsName">返回的产品名称</param>
  11111. /// <param name="groutingUserID">返回的注浆者ID</param>
  11112. /// <returns>string</returns>
  11113. /// <remarks>
  11114. /// 陈冰 2014.09.18 新建
  11115. /// </remarks>
  11116. private static string CheckBarcodeDeliverMud(IDBTransaction oracleTrConn,
  11117. int procedureID,
  11118. string barcode,
  11119. out int goodsID,
  11120. out string goodsCode,
  11121. out string goodsName,
  11122. out string groutingUserCode,
  11123. SUserInfo sUserInfo, ref int? GroutingDailyDetailID
  11124. )
  11125. {
  11126. try
  11127. {
  11128. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  11129. OracleParameter[] paras = new OracleParameter[]{
  11130. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  11131. };
  11132. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, paras);
  11133. string ErrorMessage = "";
  11134. if (ds != null && ds.Tables[0].Rows.Count == 0)
  11135. {
  11136. ErrorMessage = "无效条码";
  11137. }
  11138. else
  11139. {
  11140. //不等于空的时候
  11141. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  11142. {
  11143. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  11144. string newbarcode = oracleTrConn.GetSqlResultToStr(sql);
  11145. ErrorMessage = "条码已被替换,新条码为" + newbarcode;
  11146. }
  11147. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  11148. {
  11149. ErrorMessage = "产品开模时已损坏";
  11150. }
  11151. // 已经交坯
  11152. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  11153. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  11154. {
  11155. //ErrorMessage = "产品已交坯";
  11156. ErrorMessage = "产品已在产";
  11157. }
  11158. }
  11159. string sqlString = @"select
  11160. GroutingDailyDetailid,
  11161. GoodsID,
  11162. GoodsCode,
  11163. GoodsName,
  11164. UserCode as GroutingUserCode,
  11165. groutingcount as GroutingNum,
  11166. GroutingMouldCode as MouldCode,
  11167. ispublicbody,
  11168. Groutingdate,
  11169. SpecialRepairFlag
  11170. from
  11171. tp_pm_GroutingDailyDetail
  11172. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  11173. paras = new OracleParameter[]{
  11174. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  11175. };
  11176. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  11177. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  11178. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  11179. goodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  11180. groutingUserCode = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  11181. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  11182. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  11183. paras = new OracleParameter[]{
  11184. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  11185. new OracleParameter(":ProcedureID",procedureID),
  11186. };
  11187. DataSet dsGoods = oracleTrConn.GetSqlResultToDs(sqlExistGoods, paras);
  11188. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  11189. {
  11190. ErrorMessage = @"条码[" + barcode +
  11191. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  11192. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  11193. }
  11194. return ErrorMessage;
  11195. }
  11196. catch (Exception ex)
  11197. {
  11198. throw ex;
  11199. }
  11200. }
  11201. /// <summary>
  11202. /// 标准计件
  11203. /// </summary>
  11204. /// <param name="oracleTrConn">数据连接对象</param>
  11205. /// <param name="procedure">工序对象</param>
  11206. /// <param name="barcodeTable">条码信息</param>
  11207. /// <param name="sUserInfo">用户基本信息</param>
  11208. /// <param name="goodsID">返回的产品ID</param>
  11209. /// <param name="goodsCode">返回的产品Code</param>
  11210. /// <param name="goodsName">返回的产品名称</param>
  11211. /// <param name="groutingUserID">返回的注浆者ID</param>
  11212. /// <returns>string</returns>
  11213. /// <remarks>
  11214. /// 陈冰 2014.09.18 新建
  11215. /// </remarks>
  11216. private static string AddNormalWorkPieceSinglePoint(IDBTransaction oracleTrConn,
  11217. ProcedureEntity procedure,
  11218. DataTable barcodeTable,
  11219. SUserInfo sUserInfo,
  11220. int goodsID,
  11221. string goodsCode,
  11222. string goodsName,
  11223. string groutingUserCode,
  11224. int? arvGroutingDailyDetailID,
  11225. bool isSendBody = false)
  11226. {
  11227. try
  11228. {
  11229. //goodsID = Constant.INT_IS_ZERO;
  11230. //goodsCode = null;
  11231. //goodsName = null;
  11232. //groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  11233. // 获得账务日期
  11234. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  11235. string errMsg = string.Empty;
  11236. // 本批采集的批次号
  11237. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  11238. string finishedloadbatchno = DateTime.Now.ToString("yyMMddHHmmss-") + centralizedBatchNo;
  11239. // 条码信息
  11240. foreach (DataRow barcodeRow in barcodeTable.Rows)
  11241. {
  11242. // 条码
  11243. string barcode = barcodeRow["Barcode"].ToString();
  11244. if (string.IsNullOrEmpty(barcode))
  11245. {
  11246. throw new Exception("传入的条码号为空");
  11247. }
  11248. // 生产工号
  11249. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  11250. // 生产工号
  11251. string workUserCode = barcodeRow["UserCode"].ToString();
  11252. //生产数据ID
  11253. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  11254. int productionDataID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  11255. int? GroutingDailyDetailID = arvGroutingDailyDetailID;//注浆明细ID
  11256. if (procedure.CollectType == 1)
  11257. {
  11258. // ccc todo
  11259. //if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  11260. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  11261. {
  11262. #region 校验条码有效性
  11263. errMsg = CheckBarcodeDeliverMud(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo, ref GroutingDailyDetailID);
  11264. if (!string.IsNullOrEmpty(errMsg))
  11265. {
  11266. return errMsg;
  11267. }
  11268. #endregion
  11269. }
  11270. else
  11271. {
  11272. #region 校验条码有效性
  11273. errMsg = CheckBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  11274. if (!string.IsNullOrEmpty(errMsg))
  11275. {
  11276. return errMsg;
  11277. }
  11278. #endregion
  11279. }
  11280. }
  11281. else
  11282. {
  11283. // string sqlGroutingInfo = "";
  11284. // sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  11285. // tp_pm_groutingdailydetail.goodscode,
  11286. // tp_pm_groutingdailydetail.goodsname,
  11287. // tp_pm_groutingdailydetail.usercode as groutingUserCode,
  11288. // tp_pm_groutingdailydetail.GroutingDailyDetailID
  11289. // from tp_pm_groutingdailydetail where groutingdailydetailid in
  11290. // (select groutingdailydetailid from TP_PM_USEDBARCODE where barcode=:barcode)
  11291. // ";
  11292. // OracleParameter[] ReFireparas = new OracleParameter[] {
  11293. // new OracleParameter(":barcode",barcode),
  11294. // };
  11295. // DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, ReFireparas);
  11296. // if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  11297. // {
  11298. // GroutingDailyDetailID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  11299. // goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  11300. // goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  11301. // goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  11302. // groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  11303. // }
  11304. }
  11305. int? ClassesSettingID = null;//班次配置ID
  11306. #region 添加生产者数据
  11307. if (procedure.ModelType == (int)Constant.ProcedureModelType.DeliverMud)//是交坯节点,并且不是公坯的
  11308. {
  11309. string GroutingUserCode = barcodeRow["GroutingUserCode"].ToString();
  11310. if (GroutingUserCode.ToLower() == workUserCode.ToLower())
  11311. {
  11312. //errMsg = AddProducerDeliverAdobe(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  11313. }
  11314. else
  11315. {
  11316. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  11317. }
  11318. }
  11319. else
  11320. {
  11321. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  11322. }
  11323. if (!string.IsNullOrEmpty(errMsg))
  11324. {
  11325. return errMsg;
  11326. }
  11327. #endregion
  11328. #region 添加生产数据
  11329. ProductionDataEntity productionData = new ProductionDataEntity();
  11330. if (barcodeTable.Columns.Contains("Remarks"))
  11331. {
  11332. productionData.Remarks = barcodeRow["Remarks"] + "";
  11333. }
  11334. #region 属性赋值
  11335. productionData.GroutingDailyDetailID = GroutingDailyDetailID;//只有交坯的时候用到
  11336. productionData.ClassesSettingID = ClassesSettingID;
  11337. productionData.ProductionDataID = productionDataID;
  11338. productionData.Barcode = barcode;
  11339. productionData.CentralizedBatchNo = centralizedBatchNo;
  11340. productionData.ProductionLineID = procedure.ProductionLineID;
  11341. productionData.ProductionLineCode = procedure.ProductionlineCode;
  11342. productionData.ProductionLineName = procedure.ProductionlineName;
  11343. productionData.CompleteProcedureID = procedure.ProcedureID;
  11344. productionData.ProcedureCode = procedure.ProcedureCode;
  11345. productionData.ProcedureName = procedure.ProcedureName;
  11346. productionData.ProcedureModel = procedure.ProcedureModel;
  11347. productionData.ModelType = procedure.ModelType;
  11348. productionData.NodeType = procedure.NodeType;
  11349. productionData.PieceType = procedure.PieceType;
  11350. //冷补后列新窑车批次号 xuwei add 2020-06-11
  11351. if (procedure.ModelType == 10) productionData.KilnCarBatchNo = centralizedBatchNo;
  11352. if (barcodeRow["LogoID"].ToString() != "")
  11353. {
  11354. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  11355. }
  11356. if (procedure.IsSpecialRework == 0)
  11357. {
  11358. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  11359. //不加条件valueflag,是因为,成检后重烧走过之后,在次重烧,以后也是重烧状态
  11360. //string sqlReFire = "select * from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode='" + productionData.Barcode + "')";
  11361. //xuwei fix 2019-09-18 交坯节点判定修改
  11362. //if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)//是交坯节点,肯定不会是重烧
  11363. if (isSendBody)//是交坯节点,肯定不会是重烧
  11364. {
  11365. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  11366. productionData.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  11367. }
  11368. ////// else
  11369. ////// {
  11370. ////// string sqlReFire = @"select
  11371. ////// isrefire
  11372. ////// from tp_pm_inproduction where barcode=:barcode
  11373. ////// ";
  11374. ////// OracleParameter[] ReFireparas = new OracleParameter[] {
  11375. ////// new OracleParameter(":barcode",barcode),
  11376. ////// };
  11377. ////// DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  11378. ////// if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  11379. ////// {
  11380. ////// if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  11381. ////// {
  11382. ////// productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  11383. ////// //if (productionData.IsReFire == 6) wangxin modify 20150422 因为已经大于0,定是重烧,即有缺陷
  11384. ////// //{
  11385. ////// productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  11386. ////// //}
  11387. ////// }
  11388. ////// }
  11389. ////// }
  11390. }
  11391. else
  11392. {
  11393. productionData.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  11394. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  11395. }
  11396. productionData.ReworkProcedureID = null;
  11397. #region 交坯判断
  11398. // 交坯节点
  11399. if (barcodeTable.Columns.Contains("IsPublicBody"))
  11400. {
  11401. productionData.IsPublicBody = Convert.ToInt32(barcodeRow["IsPublicBody"]);
  11402. }
  11403. // 非交坯节点
  11404. else
  11405. {
  11406. // 正常坯
  11407. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  11408. }
  11409. #endregion
  11410. productionData.OrganizationID = procedure.OrganizationID;
  11411. productionData.GoodsID = goodsID;
  11412. productionData.GoodsCode = goodsCode;
  11413. productionData.GoodsName = goodsName;
  11414. productionData.UserID = workUserID;
  11415. productionData.UserCode = barcodeRow["UserCode"].ToString();
  11416. productionData.UserName = barcodeRow["UserName"].ToString();
  11417. #endregion
  11418. string OutSpecialRepairflag = "0";//干补标识
  11419. DataSet outDataSet = null;
  11420. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  11421. //xuwei fix 2019-09-26 使用通用方法判定
  11422. // 2019-1016
  11423. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  11424. //if (isNodeBegin == 1) procedure.NodeType = (int)Constant.ProcedureNodeType.Begin;
  11425. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  11426. {
  11427. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  11428. if (isNodeBegin == 0)
  11429. {
  11430. procedure.NodeType = (int)Constant.ProcedureNodeType.Middle;
  11431. }
  11432. }
  11433. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  11434. {
  11435. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  11436. errMsg = AddProductionDataDeliverMud(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, out outDataSet, isSendBody);
  11437. }
  11438. else
  11439. {
  11440. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  11441. errMsg = AddProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag, isSendBody);
  11442. }
  11443. if (!string.IsNullOrEmpty(errMsg))
  11444. {
  11445. return errMsg;
  11446. }
  11447. #endregion
  11448. #region 开始节点
  11449. if (procedure.NodeType == (int)Constant.ProcedureNodeType.Begin)
  11450. {
  11451. #region 添加在产产品数据
  11452. InProductionEntity addInProductionEntity = new InProductionEntity();
  11453. addInProductionEntity.BarCode = barcode;
  11454. //流程工序ID
  11455. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  11456. // 当前工序
  11457. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  11458. //addInProductionEntity.CompleteProcedureID = procedure.ProcedureID;
  11459. // 工序模型
  11460. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  11461. // 工序类别
  11462. addInProductionEntity.ModelType = procedure.ModelType;
  11463. addInProductionEntity.SpecialRepairflag = Convert.ToInt32(OutSpecialRepairflag);//干补标识
  11464. addInProductionEntity.ProductionDataID = productionDataID;
  11465. #region 交坯判断
  11466. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  11467. #endregion
  11468. //冷补后列新窑车批次号 xuwei add 2020-06-11
  11469. if (procedure.ModelType == 10) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  11470. // 生产工号
  11471. addInProductionEntity.UserID = workUserID;
  11472. // 执行添加
  11473. //xuwei fix 2019-09-17 加入最后一个参数 isSendBody识别交坯
  11474. errMsg = AddInProduction(oracleTrConn, addInProductionEntity, sUserInfo, outDataSet, isSendBody);
  11475. // 执行失败
  11476. if (!string.IsNullOrEmpty(errMsg))
  11477. {
  11478. return errMsg;
  11479. }
  11480. #endregion
  11481. }
  11482. #endregion
  11483. #region 中间节点
  11484. else if (procedure.NodeType == (int)Constant.ProcedureNodeType.Middle)
  11485. {
  11486. #region 修改在产产品数据的当前工序,清空返工工序字段
  11487. InProductionEntity addInProductionEntity = new InProductionEntity();
  11488. addInProductionEntity.BarCode = barcode;
  11489. //流程工序ID
  11490. addInProductionEntity.FlowProcedureID = procedure.ProcedureID;
  11491. // 当前工序
  11492. addInProductionEntity.ProcedureID = procedure.ProcedureID;
  11493. //当前生产数据ID
  11494. addInProductionEntity.ProductionDataID = productionDataID;
  11495. // 工序模型
  11496. addInProductionEntity.ProcedureModel = procedure.ProcedureModel;
  11497. // 工序类别
  11498. addInProductionEntity.ModelType = procedure.ModelType;
  11499. // 生产工号
  11500. addInProductionEntity.UserID = workUserID;
  11501. // 缺陷标识
  11502. // addInProductionEntity.DefectFlag = (int)Constant.DefectFlag.No;
  11503. //addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefect;
  11504. if (procedure.IsSpecialRework == 0)
  11505. {
  11506. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  11507. }
  11508. else
  11509. {
  11510. addInProductionEntity.IsReFire = (int)Constant.GoodsLevelType.ReFire;
  11511. addInProductionEntity.DefectFlag = (int)Constant.GoodsLevelType.NoDefects;
  11512. }
  11513. addInProductionEntity.LogoID = productionData.LogoID == 0 ? null : productionData.LogoID;
  11514. #region 交坯判断
  11515. addInProductionEntity.IsPublicBody = productionData.IsPublicBody;// 生产数据已经判断是否为公坯
  11516. #endregion
  11517. //冷补后列新窑车批次号 xuwei add 2020-06-11
  11518. if (procedure.ModelType == 10) addInProductionEntity.KilnCarBatchNo = centralizedBatchNo;
  11519. // 执行修改
  11520. errMsg = UpdateInProduction(oracleTrConn, addInProductionEntity, sUserInfo);
  11521. // 执行失败
  11522. if (!string.IsNullOrEmpty(errMsg))
  11523. {
  11524. return errMsg;
  11525. }
  11526. #endregion
  11527. }
  11528. #endregion
  11529. #region 结束节点
  11530. else
  11531. {
  11532. #region 添加成品数据 删除在产产品数据
  11533. FinishedProductEntity finishedProduct = new FinishedProductEntity();
  11534. finishedProduct.BarCode = barcode;
  11535. finishedProduct.LogoID = productionData.LogoID;
  11536. errMsg = AddFinishedProduct(oracleTrConn, finishedProduct, sUserInfo, finishedloadbatchno);
  11537. if (!string.IsNullOrEmpty(errMsg))
  11538. {
  11539. return errMsg;
  11540. }
  11541. InProductionEntity delInProductionEntity = new InProductionEntity();
  11542. delInProductionEntity.BarCode = barcode;
  11543. // 执行删除 在产数据
  11544. errMsg = DeleteInProduction(oracleTrConn, delInProductionEntity, true, sUserInfo);
  11545. // 执行失败
  11546. if (!string.IsNullOrEmpty(errMsg))
  11547. {
  11548. return errMsg;
  11549. }
  11550. #endregion
  11551. }
  11552. #endregion
  11553. }
  11554. return errMsg;
  11555. }
  11556. catch (Exception ex)
  11557. {
  11558. throw ex;
  11559. }
  11560. }
  11561. #region 清除在产残留数据(批量)
  11562. /// <summary>
  11563. /// 清除在产残留数据(批量清除)
  11564. /// </summary>
  11565. /// <param name="barcodes">产品条码集</param>
  11566. /// <returns></returns>
  11567. public static int SaveClearAllInproduction(SUserInfo user, RPT010401_SE se)
  11568. {
  11569. int returnRows = 0;
  11570. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11571. try
  11572. {
  11573. List<OracleParameter> parameters = new List<OracleParameter>();
  11574. StringBuilder sql = new StringBuilder(GetClearInproductionData(user.AccountID));
  11575. if (se != null)
  11576. {
  11577. //生产线IDS
  11578. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  11579. {
  11580. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction.ProductionLineID||',')>0 ");
  11581. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  11582. }
  11583. //完成工序IDS
  11584. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  11585. {
  11586. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction.ProcedureID||',')>0 ");
  11587. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  11588. }
  11589. // 生产时间--开始
  11590. if (se.UpdateTimeStart.HasValue)
  11591. {
  11592. sql.Append(" AND TP_PM_InProduction.Proceduretime >= :UpdateTimeStart ");
  11593. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  11594. }
  11595. // 生产时间--结束
  11596. if (se.UpdateTimeEnd.HasValue)
  11597. {
  11598. sql.Append(" AND TP_PM_InProduction.Proceduretime <= :UpdateTimeEnd ");
  11599. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  11600. }
  11601. // 是否清除报损待审产品
  11602. if (se.inscrapflag == 0)
  11603. {
  11604. sql.Append(" AND TP_PM_InProduction.inscrapflag=0 ");
  11605. }
  11606. else
  11607. {
  11608. sql.Append(" AND TP_PM_InProduction.inscrapflag in (0,1) ");
  11609. }
  11610. // 是否清除返工产品
  11611. if (se.IsReworkFlag == 0)
  11612. {
  11613. sql.Append(" AND TP_PM_InProduction.IsReworkFlag=0 ");
  11614. }
  11615. else
  11616. {
  11617. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  11618. //sql.Append(" AND TP_PM_InProduction.IsReworkFlag in (0,1) ");
  11619. }
  11620. }
  11621. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  11622. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  11623. (
  11624. BARCODE,
  11625. PRODUCTIONLINEID,
  11626. PRODUCTIONLINECODE,
  11627. PRODUCTIONLINENAME,
  11628. PROCEDUREMODEL,
  11629. MODELTYPE,
  11630. REWORKPROCEDUREID,
  11631. ISPUBLICBODY,
  11632. GOODSID,
  11633. GOODSCODE,
  11634. GOODSNAME,
  11635. USERID,
  11636. GROUTINGDAILYID,
  11637. GROUTINGDAILYDETAILID,
  11638. GROUTINGDATE,
  11639. GROUTINGLINEID,
  11640. GROUTINGLINECODE,
  11641. GROUTINGLINENAME,
  11642. GMOULDTYPEID,
  11643. CANMANYTIMES,
  11644. GROUTINGLINEDETAILID,
  11645. GROUTINGMOULDCODE,
  11646. MOULDCODE,
  11647. REMARKS,
  11648. ACCOUNTID,
  11649. VALUEFLAG,
  11650. CREATETIME,
  11651. CREATEUSERID,
  11652. UPDATETIME,
  11653. UPDATEUSERID,
  11654. OPTIMESTAMP,
  11655. ISREFIRE,
  11656. GOODSLEVELID,
  11657. GOODSLEVELTYPEID,
  11658. DEFECTFLAG,
  11659. GROUTINGUSERID,
  11660. GROUTINGUSERCODE,
  11661. GROUTINGNUM,
  11662. KILNID,
  11663. KILNCODE,
  11664. KILNNAME,
  11665. KILNCARID,
  11666. KILNCARCODE,
  11667. KILNCARNAME,
  11668. KILNCARBATCHNO,
  11669. KILNCARPOSITION,
  11670. SPECIALREPAIRFLAG,
  11671. FLOWPROCEDUREID,
  11672. FLOWPROCEDURETIME,
  11673. PROCEDUREID,
  11674. PROCEDURETIME,
  11675. PRODUCTIONDATAID,
  11676. trashflag,
  11677. Deletedtime,
  11678. logoid,
  11679. IsReworkFlag,
  11680. SemiCheckID,
  11681. DELETEDUSERID,
  11682. DELETEDUSERCODE
  11683. )
  11684. select
  11685. BARCODE,
  11686. PRODUCTIONLINEID,
  11687. PRODUCTIONLINECODE,
  11688. PRODUCTIONLINENAME,
  11689. PROCEDUREMODEL,
  11690. MODELTYPE,
  11691. REWORKPROCEDUREID,
  11692. ISPUBLICBODY,
  11693. GOODSID,
  11694. GOODSCODE,
  11695. GOODSNAME,
  11696. USERID,
  11697. GROUTINGDAILYID,
  11698. GROUTINGDAILYDETAILID,
  11699. GROUTINGDATE,
  11700. GROUTINGLINEID,
  11701. GROUTINGLINECODE,
  11702. GROUTINGLINENAME,
  11703. GMOULDTYPEID,
  11704. CANMANYTIMES,
  11705. GROUTINGLINEDETAILID,
  11706. GROUTINGMOULDCODE,
  11707. MOULDCODE,
  11708. REMARKS,
  11709. ACCOUNTID,
  11710. VALUEFLAG,
  11711. CREATETIME,
  11712. CREATEUSERID,
  11713. UPDATETIME,
  11714. UPDATEUSERID,
  11715. OPTIMESTAMP,
  11716. ISREFIRE,
  11717. GOODSLEVELID,
  11718. GOODSLEVELTYPEID,
  11719. DEFECTFLAG,
  11720. GROUTINGUSERID,
  11721. GROUTINGUSERCODE,
  11722. GROUTINGNUM,
  11723. KILNID,
  11724. KILNCODE,
  11725. KILNNAME,
  11726. KILNCARID,
  11727. KILNCARCODE,
  11728. KILNCARNAME,
  11729. KILNCARBATCHNO,
  11730. KILNCARPOSITION,
  11731. SPECIALREPAIRFLAG,
  11732. FLOWPROCEDUREID,
  11733. FLOWPROCEDURETIME,
  11734. PROCEDUREID,
  11735. PROCEDURETIME,
  11736. PRODUCTIONDATAID,
  11737. INSCRAPFLAG,
  11738. sysdate,
  11739. logoid,
  11740. IsReworkFlag,
  11741. SemiCheckID,"
  11742. + user.UserID + ",'" + user.UserCode +
  11743. "' from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  11744. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  11745. //删除在产数据
  11746. updatsql1 = "delete from tp_pm_inproduction p where p.barcode in (" + sql.ToString() + ")";
  11747. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  11748. //删除在产生产数据
  11749. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  11750. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  11751. if (returnRows == 0)
  11752. {
  11753. oracleTrConn.Rollback();
  11754. oracleTrConn.Disconnect();
  11755. }
  11756. else
  11757. {
  11758. oracleTrConn.Commit();
  11759. oracleTrConn.Disconnect();
  11760. }
  11761. }
  11762. catch (Exception ex)
  11763. {
  11764. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11765. {
  11766. oracleTrConn.Rollback();
  11767. oracleTrConn.Disconnect();
  11768. }
  11769. throw ex;
  11770. }
  11771. return returnRows;
  11772. }
  11773. /// <summary>
  11774. /// 获取批量数据
  11775. /// </summary>
  11776. /// <returns></returns>
  11777. private static string GetClearInproductionData(int accountid)
  11778. {
  11779. string selSql =
  11780. "SELECT " +
  11781. " TP_PM_InProduction.BarCode " +
  11782. " FROM TP_PM_InProduction " +
  11783. " Where TP_PM_InProduction.ValueFlag = '1' " +
  11784. " and TP_PM_InProduction.modeltype not in (1,2,3)" +
  11785. " and TP_PM_InProduction.AccountID= " + accountid;
  11786. return selSql;
  11787. }
  11788. #endregion
  11789. #region
  11790. /// <summary>
  11791. /// 清除在产加收站残留数据(清除选择)
  11792. /// </summary>
  11793. /// <param name="barcodes">产品条码集</param>
  11794. /// <returns></returns>
  11795. public static int SaveClearInproductionTrash(string barcodes, SUserInfo user)
  11796. {
  11797. int returnRows = 0;
  11798. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11799. try
  11800. {
  11801. string sql = "";
  11802. string[] subbarcode = barcodes.Split(',');
  11803. OracleParameter[] Paras = null;
  11804. for (int i = 0; i < subbarcode.Length; i++)
  11805. {
  11806. Paras = new OracleParameter[] {
  11807. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  11808. subbarcode[i],ParameterDirection.Input)
  11809. };
  11810. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  11811. sql = @"insert into tp_pm_inproduction_tmp
  11812. (
  11813. BARCODE,
  11814. PRODUCTIONLINEID,
  11815. PRODUCTIONLINECODE,
  11816. PRODUCTIONLINENAME,
  11817. PROCEDUREMODEL,
  11818. MODELTYPE,
  11819. REWORKPROCEDUREID,
  11820. ISPUBLICBODY,
  11821. GOODSID,
  11822. GOODSCODE,
  11823. GOODSNAME,
  11824. USERID,
  11825. GROUTINGDAILYID,
  11826. GROUTINGDAILYDETAILID,
  11827. GROUTINGDATE,
  11828. GROUTINGLINEID,
  11829. GROUTINGLINECODE,
  11830. GROUTINGLINENAME,
  11831. GMOULDTYPEID,
  11832. CANMANYTIMES,
  11833. GROUTINGLINEDETAILID,
  11834. GROUTINGMOULDCODE,
  11835. MOULDCODE,
  11836. REMARKS,
  11837. ACCOUNTID,
  11838. VALUEFLAG,
  11839. CREATETIME,
  11840. CREATEUSERID,
  11841. UPDATETIME,
  11842. UPDATEUSERID,
  11843. OPTIMESTAMP,
  11844. ISREFIRE,
  11845. GOODSLEVELID,
  11846. GOODSLEVELTYPEID,
  11847. DEFECTFLAG,
  11848. GROUTINGUSERID,
  11849. GROUTINGUSERCODE,
  11850. GROUTINGNUM,
  11851. KILNID,
  11852. KILNCODE,
  11853. KILNNAME,
  11854. KILNCARID,
  11855. KILNCARCODE,
  11856. KILNCARNAME,
  11857. KILNCARBATCHNO,
  11858. KILNCARPOSITION,
  11859. SPECIALREPAIRFLAG,
  11860. FLOWPROCEDUREID,
  11861. FLOWPROCEDURETIME,
  11862. PROCEDUREID,
  11863. PROCEDURETIME,
  11864. PRODUCTIONDATAID,
  11865. trashflag,
  11866. Deletedtime,
  11867. logoid,
  11868. IsReworkFlag,
  11869. SemiCheckID,
  11870. DELETEDUSERID,
  11871. DELETEDUSERCODE
  11872. )
  11873. select
  11874. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  11875. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  11876. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  11877. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  11878. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  11879. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  11880. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  11881. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  11882. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  11883. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  11884. KILNID, KILNCODE, KILNNAME, KILNCARID,
  11885. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  11886. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  11887. + user.UserID + ",'" + user.UserCode +
  11888. "' from TP_PM_InProductionTrash p where p.barcode = :barcode";
  11889. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11890. //删除在产回收站数据
  11891. sql = "delete from TP_PM_InProductionTrash p where p.barcode =:barcode";
  11892. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11893. //删除在产生产数据
  11894. sql = "delete from tp_pm_productiondatain p where p.barcode =:barcode";
  11895. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  11896. }
  11897. if (returnRows == 0)
  11898. {
  11899. oracleTrConn.Rollback();
  11900. oracleTrConn.Disconnect();
  11901. }
  11902. else
  11903. {
  11904. oracleTrConn.Commit();
  11905. oracleTrConn.Disconnect();
  11906. }
  11907. }
  11908. catch (Exception ex)
  11909. {
  11910. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  11911. {
  11912. oracleTrConn.Rollback();
  11913. oracleTrConn.Disconnect();
  11914. }
  11915. throw ex;
  11916. }
  11917. finally
  11918. {
  11919. if (oracleTrConn.ConnState == ConnectionState.Open)
  11920. {
  11921. oracleTrConn.Disconnect();
  11922. }
  11923. }
  11924. return returnRows;
  11925. }
  11926. #endregion
  11927. #region 清除在产回收站残留数据(批量)
  11928. /// <summary>
  11929. /// 清除在产残留数据(批量清除)
  11930. /// </summary>
  11931. /// <param name="barcodes">产品条码集</param>
  11932. /// <returns></returns>
  11933. public static int SaveClearAllInproductionTrash(SUserInfo user, FPM2110_SE se)
  11934. {
  11935. int returnRows = 0;
  11936. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  11937. try
  11938. {
  11939. List<OracleParameter> parameters = new List<OracleParameter>();
  11940. StringBuilder sql = new StringBuilder(GetClearInproductionTrashData(user.AccountID));
  11941. if (se != null)
  11942. {
  11943. //生产线IDS
  11944. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  11945. {
  11946. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProductionTrash.ProductionLineID||',')>0 ");
  11947. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  11948. }
  11949. //完成工序IDS
  11950. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  11951. {
  11952. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProductionTrash.ProcedureID||',')>0 ");
  11953. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  11954. }
  11955. // 生产时间--开始
  11956. if (se.UpdateTimeStart.HasValue)
  11957. {
  11958. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime >= :UpdateTimeStart ");
  11959. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  11960. }
  11961. // 生产时间--结束
  11962. if (se.UpdateTimeEnd.HasValue)
  11963. {
  11964. sql.Append(" AND TP_PM_InProductionTrash.Proceduretime <= :UpdateTimeEnd ");
  11965. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  11966. }
  11967. //报废日期开始
  11968. if (se.ScrapDataStart.HasValue)
  11969. {
  11970. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  11971. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  11972. }
  11973. //报废日期结束
  11974. if (se.ScrapDataEnd.HasValue)
  11975. {
  11976. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  11977. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  11978. }
  11979. // 产品分级
  11980. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  11981. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  11982. }
  11983. //把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  11984. string updatsql1 = @"insert into tp_pm_inproduction_tmp
  11985. (
  11986. BARCODE,
  11987. PRODUCTIONLINEID,
  11988. PRODUCTIONLINECODE,
  11989. PRODUCTIONLINENAME,
  11990. PROCEDUREMODEL,
  11991. MODELTYPE,
  11992. REWORKPROCEDUREID,
  11993. ISPUBLICBODY,
  11994. GOODSID,
  11995. GOODSCODE,
  11996. GOODSNAME,
  11997. USERID,
  11998. GROUTINGDAILYID,
  11999. GROUTINGDAILYDETAILID,
  12000. GROUTINGDATE,
  12001. GROUTINGLINEID,
  12002. GROUTINGLINECODE,
  12003. GROUTINGLINENAME,
  12004. GMOULDTYPEID,
  12005. CANMANYTIMES,
  12006. GROUTINGLINEDETAILID,
  12007. GROUTINGMOULDCODE,
  12008. MOULDCODE,
  12009. REMARKS,
  12010. ACCOUNTID,
  12011. VALUEFLAG,
  12012. CREATETIME,
  12013. CREATEUSERID,
  12014. UPDATETIME,
  12015. UPDATEUSERID,
  12016. OPTIMESTAMP,
  12017. ISREFIRE,
  12018. GOODSLEVELID,
  12019. GOODSLEVELTYPEID,
  12020. DEFECTFLAG,
  12021. GROUTINGUSERID,
  12022. GROUTINGUSERCODE,
  12023. GROUTINGNUM,
  12024. KILNID,
  12025. KILNCODE,
  12026. KILNNAME,
  12027. KILNCARID,
  12028. KILNCARCODE,
  12029. KILNCARNAME,
  12030. KILNCARBATCHNO,
  12031. KILNCARPOSITION,
  12032. SPECIALREPAIRFLAG,
  12033. FLOWPROCEDUREID,
  12034. FLOWPROCEDURETIME,
  12035. PROCEDUREID,
  12036. PROCEDURETIME,
  12037. PRODUCTIONDATAID,
  12038. trashflag,
  12039. Deletedtime,
  12040. logoid,
  12041. IsReworkFlag,
  12042. SemiCheckID,
  12043. DELETEDUSERID,
  12044. DELETEDUSERCODE
  12045. )
  12046. select
  12047. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  12048. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  12049. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  12050. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  12051. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  12052. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  12053. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  12054. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  12055. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  12056. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  12057. KILNID, KILNCODE, KILNNAME, KILNCARID,
  12058. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  12059. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,1,sysdate,logoid,IsReworkFlag,SemiCheckID,"
  12060. + user.UserID + ",'" + user.UserCode +
  12061. "' from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  12062. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  12063. //删除在产数据
  12064. updatsql1 = "delete from TP_PM_InProductionTrash p where p.barcode in (" + sql.ToString() + ")";
  12065. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  12066. //删除在产生产数据
  12067. updatsql1 = "delete from tp_pm_productiondatain p where p.barcode in (" + sql.ToString() + ")";
  12068. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  12069. if (returnRows == 0)
  12070. {
  12071. oracleTrConn.Rollback();
  12072. oracleTrConn.Disconnect();
  12073. }
  12074. else
  12075. {
  12076. oracleTrConn.Commit();
  12077. oracleTrConn.Disconnect();
  12078. }
  12079. }
  12080. catch (Exception ex)
  12081. {
  12082. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12083. {
  12084. oracleTrConn.Rollback();
  12085. oracleTrConn.Disconnect();
  12086. }
  12087. throw ex;
  12088. }
  12089. finally
  12090. {
  12091. if (oracleTrConn.ConnState == ConnectionState.Open)
  12092. {
  12093. oracleTrConn.Disconnect();
  12094. }
  12095. }
  12096. return returnRows;
  12097. }
  12098. /// <summary>
  12099. /// 获取批量数据
  12100. /// </summary>
  12101. /// <returns></returns>
  12102. private static string GetClearInproductionTrashData(int accountid)
  12103. {
  12104. string selSql =
  12105. "SELECT " +
  12106. " TP_PM_InProductionTrash.BarCode " +
  12107. " FROM TP_PM_InProductionTrash " +
  12108. " left join tp_pm_scrapproduct " +
  12109. " on tp_pm_scrapproduct.barcode=TP_PM_InProductionTrash.barcode " +
  12110. " Where 1=1 and TP_PM_InProductionTrash.ValueFlag = 1 " +
  12111. " and TP_PM_InProductionTrash.AccountID= " + accountid;
  12112. return selSql;
  12113. }
  12114. #endregion
  12115. #region 清除在产回收站残留数据(批量)
  12116. /// <summary>
  12117. /// 清除在产残留数据(批量清除)
  12118. /// </summary>
  12119. /// <param name="barcodes">产品条码集</param>
  12120. /// <returns></returns>
  12121. public static int SaveClearAllInproductionTmp(SUserInfo user, FPM2112_SE se)
  12122. {
  12123. int returnRows = 0;
  12124. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12125. try
  12126. {
  12127. List<OracleParameter> parameters = new List<OracleParameter>();
  12128. StringBuilder sql = new StringBuilder(GetClearInproductionTmpData(user.AccountID));
  12129. if (se != null)
  12130. {
  12131. //生产线IDS
  12132. if (!string.IsNullOrEmpty(se.ProductionLineIDS))
  12133. {
  12134. sql.Append(" AND instr(','||:ProductionLineIDS||',',','||TP_PM_InProduction_Tmp.ProductionLineID||',')>0 ");
  12135. parameters.Add(new OracleParameter(":ProductionLineIDS", OracleDbType.NVarchar2, se.ProductionLineIDS, ParameterDirection.Input));
  12136. }
  12137. //完成工序IDS
  12138. if (!string.IsNullOrEmpty(se.ProcedureIDS))
  12139. {
  12140. sql.Append(" AND instr(','||:ProcedureIDS||',',','||TP_PM_InProduction_Tmp.ProcedureID||',')>0 ");
  12141. parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.NVarchar2, se.ProcedureIDS, ParameterDirection.Input));
  12142. }
  12143. // 生产时间--开始
  12144. if (se.UpdateTimeStart.HasValue)
  12145. {
  12146. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime >= :UpdateTimeStart ");
  12147. parameters.Add(new OracleParameter(":UpdateTimeStart", OracleDbType.Date, se.UpdateTimeStart.Value, ParameterDirection.Input));
  12148. }
  12149. // 生产时间--结束
  12150. if (se.UpdateTimeEnd.HasValue)
  12151. {
  12152. sql.Append(" AND TP_PM_InProduction_Tmp.Proceduretime <= :UpdateTimeEnd ");
  12153. parameters.Add(new OracleParameter(":UpdateTimeEnd", OracleDbType.Date, se.UpdateTimeEnd.Value, ParameterDirection.Input));
  12154. }
  12155. //报废日期开始
  12156. if (se.ScrapDataStart.HasValue)
  12157. {
  12158. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE >= trunc(:ScrapDateStart) ");
  12159. parameters.Add(new OracleParameter(":ScrapDateStart", OracleDbType.Date, se.ScrapDataStart.Value, ParameterDirection.Input));
  12160. }
  12161. //报废日期结束
  12162. if (se.ScrapDataEnd.HasValue)
  12163. {
  12164. sql.Append(" AND TP_PM_SCRAPPRODUCT.SCRAPDATE <= trunc(:ScrapDateEnd)");
  12165. parameters.Add(new OracleParameter(":ScrapDateEnd", OracleDbType.Date, se.ScrapDataEnd.Value, ParameterDirection.Input));
  12166. }
  12167. if (se.GooddLevelTypeID != null)
  12168. {
  12169. // 产品分级
  12170. sql.Append(" AND TP_PM_SCRAPPRODUCT.GOODSLEVELTYPEID = :GooddLevelTypeID ");
  12171. parameters.Add(new OracleParameter(":GooddLevelTypeID", OracleDbType.Int32, se.GooddLevelTypeID, ParameterDirection.Input));
  12172. }
  12173. //在产or 回收站
  12174. sql.Append(" AND TP_PM_InProduction_Tmp.TrashFlag = :TrashFlag ");
  12175. parameters.Add(new OracleParameter(":TrashFlag", OracleDbType.Int32, se.TrashFlag, ParameterDirection.Input));
  12176. }
  12177. //删除在产临时表数据
  12178. string updatsql1 = "delete from TP_PM_InProduction_Tmp p where p.barcode in (" + sql.ToString() + ")";
  12179. returnRows += oracleTrConn.ExecuteNonQuery(updatsql1, parameters.ToArray());
  12180. if (returnRows == 0)
  12181. {
  12182. oracleTrConn.Rollback();
  12183. oracleTrConn.Disconnect();
  12184. }
  12185. else
  12186. {
  12187. oracleTrConn.Commit();
  12188. oracleTrConn.Disconnect();
  12189. }
  12190. }
  12191. catch (Exception ex)
  12192. {
  12193. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12194. {
  12195. oracleTrConn.Rollback();
  12196. oracleTrConn.Disconnect();
  12197. }
  12198. throw ex;
  12199. }
  12200. finally
  12201. {
  12202. if (oracleTrConn.ConnState == ConnectionState.Open)
  12203. {
  12204. oracleTrConn.Disconnect();
  12205. }
  12206. }
  12207. return returnRows;
  12208. }
  12209. /// <summary>
  12210. /// 获取批量数据
  12211. /// </summary>
  12212. /// <returns></returns>
  12213. private static string GetClearInproductionTmpData(int accountid)
  12214. {
  12215. string selSql =
  12216. "SELECT " +
  12217. " TP_PM_InProduction_Tmp.BarCode " +
  12218. " FROM TP_PM_InProduction_Tmp " +
  12219. " left join tp_pm_scrapproduct " +
  12220. " on tp_pm_scrapproduct.barcode=TP_PM_InProduction_Tmp.barcode " +
  12221. " Where 1=1 and TP_PM_InProduction_Tmp.ValueFlag = 1 " +
  12222. " and TP_PM_InProduction_Tmp.AccountID= " + accountid;
  12223. return selSql;
  12224. }
  12225. #endregion
  12226. #region 恢复数据
  12227. /// <summary>
  12228. /// 恢复数据
  12229. /// </summary>
  12230. /// <param name="barcodes">产品条码集</param>
  12231. /// <returns></returns>
  12232. public static int ResetBarCode(string barcode)
  12233. {
  12234. int returnRows = 0;
  12235. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12236. try
  12237. {
  12238. string sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  12239. OracleParameter[] Paras = Paras = new OracleParameter[] {
  12240. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12241. barcode,ParameterDirection.Input)
  12242. };
  12243. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  12244. if (ds != null && ds.Tables[0].Rows.Count == 0)
  12245. {
  12246. oracleTrConn.Rollback();
  12247. oracleTrConn.Disconnect();
  12248. return -1; //此条码没有清除,不能恢复
  12249. }
  12250. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  12251. {
  12252. sql = @"insert into tp_pm_inproduction select
  12253. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  12254. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  12255. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  12256. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  12257. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  12258. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  12259. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  12260. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  12261. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  12262. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  12263. KILNID, KILNCODE, KILNNAME, KILNCARID,
  12264. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  12265. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  12266. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  12267. }
  12268. else
  12269. {
  12270. sql = @"insert into tp_pm_inproductiontrash select
  12271. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  12272. PROCEDUREMODEL, MODELTYPE,
  12273. defectflag,
  12274. REWORKPROCEDUREID,
  12275. ISPUBLICBODY,
  12276. ISRefire,
  12277. GOODSLEVELID, GOODSLEVELTYPEID,
  12278. GOODSID, GOODSCODE, GOODSNAME,
  12279. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  12280. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  12281. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  12282. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  12283. REMARKS,
  12284. KILNID, KILNCODE, KILNNAME, KILNCARID,
  12285. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  12286. ACCOUNTID, VALUEFLAG, CREATETIME,
  12287. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  12288. SpecialRepairFlag,FlowProcedureID
  12289. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  12290. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  12291. }
  12292. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12293. //将生产数据表中的数据插入到在产生产数据表中
  12294. sql = @"insert into tp_pm_productiondatain
  12295. select
  12296. pd.PRODUCTIONDATAID,
  12297. pd.BARCODE,
  12298. pd.CENTRALIZEDBATCHNO,
  12299. pd.PRODUCTIONLINEID,
  12300. pd.PRODUCTIONLINECODE,
  12301. pd.PRODUCTIONLINENAME,
  12302. pd.PROCEDUREID,
  12303. pd.PROCEDURECODE,
  12304. pd.PROCEDURENAME,
  12305. pd.PROCEDUREMODEL,
  12306. pd.MODELTYPE,
  12307. pd.PIECETYPE,
  12308. pd.ISREWORKED,
  12309. pd.NODETYPE,
  12310. pd.ISPUBLICBODY,
  12311. pd.ISREFIRE,
  12312. pd.ORGANIZATIONID,
  12313. pd.GOODSID,
  12314. pd.GOODSCODE,
  12315. pd.GOODSNAME,
  12316. pd.USERID,
  12317. pd.USERCODE,
  12318. pd.USERNAME,
  12319. pd.KILNID,
  12320. pd.KILNCODE,
  12321. pd.KILNNAME,
  12322. pd.KILNCARID,
  12323. pd.KILNCARCODE,
  12324. pd.KILNCARNAME,
  12325. pd.KILNCARBATCHNO,
  12326. pd.KILNCARPOSITION,
  12327. pd.REWORKPROCEDUREID,
  12328. pd.REWORKPROCEDURECODE,
  12329. pd.REWORKPROCEDURENAME,
  12330. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  12331. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  12332. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  12333. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  12334. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  12335. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  12336. '1',pd.LOGOID,
  12337. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  12338. from tp_pm_productiondata pd
  12339. where pd.barcode = :barcode
  12340. and pd.productiondataid not in
  12341. (select pp.productiondataid
  12342. from tp_pm_productiondatain pp
  12343. where pp.barcode = :barcode)";
  12344. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12345. //删除在产临时表数据
  12346. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  12347. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12348. if (returnRows == 0)
  12349. {
  12350. oracleTrConn.Rollback();
  12351. oracleTrConn.Disconnect();
  12352. }
  12353. else
  12354. {
  12355. oracleTrConn.Commit();
  12356. oracleTrConn.Disconnect();
  12357. }
  12358. }
  12359. catch (Exception ex)
  12360. {
  12361. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12362. {
  12363. oracleTrConn.Rollback();
  12364. oracleTrConn.Disconnect();
  12365. }
  12366. throw ex;
  12367. }
  12368. finally
  12369. {
  12370. if (oracleTrConn.ConnState == ConnectionState.Open)
  12371. {
  12372. oracleTrConn.Disconnect();
  12373. }
  12374. }
  12375. return returnRows;
  12376. }
  12377. /// <summary>
  12378. /// 批量恢复数据
  12379. /// </summary>
  12380. /// <param name="barcodes">产品条码集</param>
  12381. /// <returns></returns>
  12382. public static int ResetSelectedBarCode(string barcodes)
  12383. {
  12384. int returnRows = 0;
  12385. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12386. try
  12387. {
  12388. string sql = "";
  12389. string[] subbarcode = barcodes.Split(',');
  12390. OracleParameter[] Paras = null;
  12391. DataSet ds = null;
  12392. for (int i = 0; i < subbarcode.Length; i++)
  12393. {
  12394. sql = "select trashflag from Tp_Pm_Inproduction_Tmp where barcode=:barcode";
  12395. Paras = Paras = new OracleParameter[] {
  12396. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12397. subbarcode[i],ParameterDirection.Input)
  12398. };
  12399. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  12400. if (ds != null && ds.Tables[0].Rows.Count == 0)
  12401. {
  12402. oracleTrConn.Rollback();
  12403. oracleTrConn.Disconnect();
  12404. return -1; //此条码没有清除,不能恢复
  12405. }
  12406. if (ds.Tables[0].Rows[0]["trashflag"].ToString() == "0") //在产删除
  12407. {
  12408. sql = @"insert into tp_pm_inproduction select
  12409. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  12410. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  12411. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  12412. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  12413. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  12414. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  12415. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  12416. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  12417. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  12418. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  12419. KILNID, KILNCODE, KILNNAME, KILNCARID,
  12420. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  12421. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,logoid,IsReworkFlag,SemiCheckID
  12422. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  12423. }
  12424. else
  12425. {
  12426. sql = @"insert into tp_pm_inproductiontrash select
  12427. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  12428. PROCEDUREMODEL, MODELTYPE,
  12429. defectflag,
  12430. REWORKPROCEDUREID,
  12431. ISPUBLICBODY,
  12432. ISRefire,
  12433. GOODSLEVELID, GOODSLEVELTYPEID,
  12434. GOODSID, GOODSCODE, GOODSNAME,
  12435. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  12436. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  12437. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  12438. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  12439. REMARKS,
  12440. KILNID, KILNCODE, KILNNAME, KILNCARID,
  12441. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,
  12442. ACCOUNTID, VALUEFLAG, CREATETIME,
  12443. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  12444. SpecialRepairFlag,FlowProcedureID
  12445. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid,IsReworkFlag,SemiCheckID
  12446. from TP_PM_InProduction_Tmp p where p.barcode = :barcode";
  12447. }
  12448. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12449. //将生产数据表中的数据插入到在产生产数据表中
  12450. sql = @"insert into tp_pm_productiondatain
  12451. select pd.PRODUCTIONDATAID,
  12452. pd.BARCODE,
  12453. pd.CENTRALIZEDBATCHNO,
  12454. pd.PRODUCTIONLINEID,
  12455. pd.PRODUCTIONLINECODE,
  12456. pd.PRODUCTIONLINENAME,
  12457. pd.PROCEDUREID,
  12458. pd.PROCEDURECODE,
  12459. pd.PROCEDURENAME,
  12460. pd.PROCEDUREMODEL,
  12461. pd.MODELTYPE,
  12462. pd.PIECETYPE,
  12463. pd.ISREWORKED,
  12464. pd.NODETYPE,
  12465. pd.ISPUBLICBODY,
  12466. pd.ISREFIRE,
  12467. pd.ORGANIZATIONID,
  12468. pd.GOODSID,
  12469. pd.GOODSCODE,
  12470. pd.GOODSNAME,
  12471. pd.USERID,
  12472. pd.USERCODE,
  12473. pd.USERNAME,
  12474. pd.KILNID,
  12475. pd.KILNCODE,
  12476. pd.KILNNAME,
  12477. pd.KILNCARID,
  12478. pd.KILNCARCODE,
  12479. pd.KILNCARNAME,
  12480. pd.KILNCARBATCHNO,
  12481. pd.KILNCARPOSITION,
  12482. pd.REWORKPROCEDUREID,
  12483. pd.REWORKPROCEDURECODE,
  12484. pd.REWORKPROCEDURENAME,
  12485. pd.REMARKS,pd.ACCOUNTDATE,pd.SETTLEMENTFLAG,pd.ACCOUNTID,pd.VALUEFLAG,
  12486. pd.CREATETIME,pd.CREATEUSERID,pd.UPDATETIME,pd.UPDATEUSERID,pd.OPTIMESTAMP,
  12487. pd.GOODSLEVELID,pd.GOODSLEVELTYPEID,pd.GROUTINGDATE,pd.GROUTINGMOULDCODE,pd.MOULDCODE,
  12488. pd.GROUTINGUSERID,pd.GROUTINGUSERCODE,pd.GROUTINGNUM,pd.GROUTINGDAILYID,pd.GROUTINGDAILYDETAILID,
  12489. pd.GROUTINGLINEID,pd.GROUTINGLINECODE,pd.GROUTINGLINENAME,pd.GMOULDTYPEID,pd.CANMANYTIMES,
  12490. pd.GROUTINGLINEDETAILID,pd.SPECIALREPAIRFLAG,pd.CLASSESSETTINGID,
  12491. '1',pd.LOGOID,
  12492. pd.BackOutTime,pd.BackOutUserID,pd.BackOutUserCode,pd.checktime
  12493. from tp_pm_productiondata pd
  12494. where pd.barcode = :barcode
  12495. and pd.productiondataid not in
  12496. (select pp.productiondataid
  12497. from tp_pm_productiondatain pp
  12498. where pp.barcode = :barcode)";
  12499. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12500. //删除在产临时表数据
  12501. sql = "delete from TP_PM_InProduction_Tmp p where p.barcode =:barcode";
  12502. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12503. }
  12504. if (returnRows == 0)
  12505. {
  12506. oracleTrConn.Rollback();
  12507. oracleTrConn.Disconnect();
  12508. }
  12509. else
  12510. {
  12511. oracleTrConn.Commit();
  12512. oracleTrConn.Disconnect();
  12513. }
  12514. }
  12515. catch (Exception ex)
  12516. {
  12517. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12518. {
  12519. oracleTrConn.Rollback();
  12520. oracleTrConn.Disconnect();
  12521. }
  12522. throw ex;
  12523. }
  12524. finally
  12525. {
  12526. if (oracleTrConn.ConnState == ConnectionState.Open)
  12527. {
  12528. oracleTrConn.Disconnect();
  12529. }
  12530. }
  12531. return returnRows;
  12532. }
  12533. #endregion
  12534. #region
  12535. /// <summary>
  12536. /// 清除未盘点残留数据(清除选择)
  12537. /// </summary>
  12538. /// <param name="inCheckedID">盘点单ID</param>
  12539. /// <param name="barcodes">条码集</param>
  12540. /// <returns></returns>
  12541. public static int SaveClearInChecked(int inCheckedID, string barcodes, SUserInfo sUserInfo)
  12542. {
  12543. int returnRows = 0;
  12544. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12545. try
  12546. {
  12547. string sql = "";
  12548. string[] subbarcodes = barcodes.Split(',');
  12549. OracleParameter[] Paras = null;
  12550. for (int i = 0; i < subbarcodes.Length; i++)
  12551. {
  12552. // 0.登窑、入窑、出窑工序的产品不能清除
  12553. sql = "select p.modeltype from tp_pm_inproduction p where p.barcode = :barcode";
  12554. Paras = new OracleParameter[] {
  12555. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12556. subbarcodes[i],ParameterDirection.Input),
  12557. };
  12558. string modeltype = oracleTrConn.GetSqlResultToStr(sql, Paras);
  12559. if (!string.IsNullOrWhiteSpace(modeltype))
  12560. {
  12561. Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType pmt =
  12562. (Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType)Convert.ToInt32(modeltype);
  12563. if (pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.LoadCar ||
  12564. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.IntoKiln ||
  12565. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.OutKiln ||
  12566. pmt == Dongke.IBOSS.PRD.Basics.BaseResources.Constant.ProcedureModelType.CarAdd)
  12567. {
  12568. continue;
  12569. }
  12570. }
  12571. // 返工标识或者是报损标识不允许清除 2016-07-12
  12572. sql = "select IsReworkFlag,InScrapFlag from tp_pm_inproduction p where p.barcode = :barcode";
  12573. Paras = new OracleParameter[] {
  12574. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12575. subbarcodes[i],ParameterDirection.Input)
  12576. };
  12577. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  12578. if (ds != null && ds.Tables[0].Rows.Count > 0)
  12579. {
  12580. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  12581. //if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  12582. if (ds.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0")
  12583. {
  12584. returnRows = -1;
  12585. break;
  12586. }
  12587. if (ds.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  12588. {
  12589. returnRows = -2;
  12590. break;
  12591. }
  12592. }
  12593. // 1.清除未盘点数据
  12594. 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'";
  12595. Paras = new OracleParameter[] {
  12596. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12597. subbarcodes[i],ParameterDirection.Input),
  12598. new OracleParameter(":InCheckedID",OracleDbType.Int32,
  12599. inCheckedID,ParameterDirection.Input)
  12600. };
  12601. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12602. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  12603. // sql = @"insert into tp_pm_inproduction_tmp
  12604. // select * from tp_pm_inproduction p where p.barcode = :barcode";
  12605. sql = "INSERT INTO tp_pm_inproduction_tmp\n" +
  12606. " (barcode\n" +
  12607. " ,productionlineid\n" +
  12608. " ,productionlinecode\n" +
  12609. " ,productionlinename\n" +
  12610. " ,proceduremodel\n" +
  12611. " ,modeltype\n" +
  12612. " ,reworkprocedureid\n" +
  12613. " ,ispublicbody\n" +
  12614. " ,goodsid\n" +
  12615. " ,goodscode\n" +
  12616. " ,goodsname\n" +
  12617. " ,userid\n" +
  12618. " ,groutingdailyid\n" +
  12619. " ,groutingdailydetailid\n" +
  12620. " ,groutingdate\n" +
  12621. " ,groutinglineid\n" +
  12622. " ,groutinglinecode\n" +
  12623. " ,groutinglinename\n" +
  12624. " ,gmouldtypeid\n" +
  12625. " ,canmanytimes\n" +
  12626. " ,groutinglinedetailid\n" +
  12627. " ,groutingmouldcode\n" +
  12628. " ,mouldcode\n" +
  12629. " ,remarks\n" +
  12630. " ,accountid\n" +
  12631. " ,valueflag\n" +
  12632. " ,createtime\n" +
  12633. " ,createuserid\n" +
  12634. " ,updatetime\n" +
  12635. " ,updateuserid\n" +
  12636. " ,optimestamp\n" +
  12637. " ,isrefire\n" +
  12638. " ,goodslevelid\n" +
  12639. " ,goodsleveltypeid\n" +
  12640. " ,defectflag\n" +
  12641. " ,groutinguserid\n" +
  12642. " ,groutingusercode\n" +
  12643. " ,groutingnum\n" +
  12644. " ,kilnid\n" +
  12645. " ,kilncode\n" +
  12646. " ,kilnname\n" +
  12647. " ,kilncarid\n" +
  12648. " ,kilncarcode\n" +
  12649. " ,kilncarname\n" +
  12650. " ,kilncarbatchno\n" +
  12651. " ,kilncarposition\n" +
  12652. " ,specialrepairflag\n" +
  12653. " ,flowprocedureid\n" +
  12654. " ,flowproceduretime\n" +
  12655. " ,procedureid\n" +
  12656. " ,proceduretime\n" +
  12657. " ,productiondataid\n" +
  12658. " ,deleteduserid\n" +
  12659. " ,deletedusercode\n" +
  12660. " --,trashflag\n" +
  12661. " --,deletedtime\n" +
  12662. " ,logoid)\n" +
  12663. " SELECT barcode\n" +
  12664. " ,productionlineid\n" +
  12665. " ,productionlinecode\n" +
  12666. " ,productionlinename\n" +
  12667. " ,proceduremodel\n" +
  12668. " ,modeltype\n" +
  12669. " ,reworkprocedureid\n" +
  12670. " ,ispublicbody\n" +
  12671. " ,goodsid\n" +
  12672. " ,goodscode\n" +
  12673. " ,goodsname\n" +
  12674. " ,userid\n" +
  12675. " ,groutingdailyid\n" +
  12676. " ,groutingdailydetailid\n" +
  12677. " ,groutingdate\n" +
  12678. " ,groutinglineid\n" +
  12679. " ,groutinglinecode\n" +
  12680. " ,groutinglinename\n" +
  12681. " ,gmouldtypeid\n" +
  12682. " ,canmanytimes\n" +
  12683. " ,groutinglinedetailid\n" +
  12684. " ,groutingmouldcode\n" +
  12685. " ,mouldcode\n" +
  12686. " ,remarks\n" +
  12687. " ,accountid\n" +
  12688. " ,valueflag\n" +
  12689. " ,createtime\n" +
  12690. " ,createuserid\n" +
  12691. " ,updatetime\n" +
  12692. " ,updateuserid\n" +
  12693. " ,optimestamp\n" +
  12694. " ,isrefire\n" +
  12695. " ,goodslevelid\n" +
  12696. " ,goodsleveltypeid\n" +
  12697. " ,defectflag\n" +
  12698. " ,groutinguserid\n" +
  12699. " ,groutingusercode\n" +
  12700. " ,groutingnum\n" +
  12701. " ,kilnid\n" +
  12702. " ,kilncode\n" +
  12703. " ,kilnname\n" +
  12704. " ,kilncarid\n" +
  12705. " ,kilncarcode\n" +
  12706. " ,kilncarname\n" +
  12707. " ,kilncarbatchno\n" +
  12708. " ,kilncarposition\n" +
  12709. " ,specialrepairflag\n" +
  12710. " ,flowprocedureid\n" +
  12711. " ,flowproceduretime\n" +
  12712. " ,procedureid\n" +
  12713. " ,proceduretime\n" +
  12714. " ,productiondataid\n" +
  12715. " ,:deleteduserid\n" +
  12716. " ,:deletedusercode\n" +
  12717. " --,inscrapflag\n" +
  12718. " ,logoid\n" +
  12719. " FROM tp_pm_inproduction p\n" +
  12720. " WHERE p.barcode = :barcode\n" +
  12721. " AND p.modeltype not in (1,2,3,6)\n" +
  12722. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  12723. //" AND p.IsReworkFlag <> '1' AND p.InScrapFlag <> '1' \n" +
  12724. " AND p.IsReworkFlag = '0' AND p.InScrapFlag = '0' \n" +
  12725. "";
  12726. Paras = new OracleParameter[] {
  12727. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12728. subbarcodes[i],ParameterDirection.Input),
  12729. new OracleParameter(":deleteduserid",OracleDbType.Int32,
  12730. sUserInfo.UserID,ParameterDirection.Input),
  12731. new OracleParameter(":deletedusercode",OracleDbType.NVarchar2,
  12732. sUserInfo.UserCode,ParameterDirection.Input),
  12733. };
  12734. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12735. // 3 删除在产数据
  12736. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  12737. //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'";
  12738. sql = @" delete from tp_pm_inproduction p where p.barcode =:barcode AND p.modeltype not in (1,2,3,6) AND p.IsReworkFlag = '0' AND p.InScrapFlag = '0'";
  12739. Paras = new OracleParameter[] {
  12740. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12741. subbarcodes[i],ParameterDirection.Input),
  12742. };
  12743. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  12744. if (returnRows > 0)
  12745. {
  12746. // 4. 删除在产生产数据
  12747. sql = @" delete from tp_pm_productiondatain p where p.barcode = :barcode";
  12748. Paras = new OracleParameter[] {
  12749. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  12750. subbarcodes[i],ParameterDirection.Input),
  12751. };
  12752. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12753. }
  12754. }
  12755. if (returnRows <= 0)
  12756. {
  12757. oracleTrConn.Rollback();
  12758. oracleTrConn.Disconnect();
  12759. }
  12760. else
  12761. {
  12762. oracleTrConn.Commit();
  12763. oracleTrConn.Disconnect();
  12764. }
  12765. }
  12766. catch (Exception ex)
  12767. {
  12768. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12769. {
  12770. oracleTrConn.Rollback();
  12771. oracleTrConn.Disconnect();
  12772. }
  12773. throw ex;
  12774. }
  12775. finally
  12776. {
  12777. if (oracleTrConn.ConnState == ConnectionState.Open)
  12778. {
  12779. oracleTrConn.Disconnect();
  12780. }
  12781. }
  12782. return returnRows;
  12783. }
  12784. /// <summary>
  12785. /// 清除未盘点残留数据(根据条件进行选择)
  12786. /// </summary>
  12787. /// <param name="inCheckedID">盘点单ID</param>
  12788. /// <param name="procedureIDs">完成工序集</param>
  12789. /// <param name="goodsCodes">产品编码集</param>
  12790. /// <returns></returns>
  12791. public static int SaveClearInCheckedAll(int inCheckedID, string procedureIDs, string goodsCodes, DateTime? startDateTime, DateTime? endDateTime, SUserInfo sUserInfo)
  12792. {
  12793. int returnRows = 0;
  12794. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12795. try
  12796. {
  12797. OracleParameter[] Paras = null;
  12798. string Insql = "";
  12799. // 1 查出根据条件进行未盘点数据
  12800. // 0.登窑、入窑、出窑工序的产品不能清除
  12801. Insql = @"select p.barcode from TP_PM_INCHECKEDDETAIL p "
  12802. + " inner join tp_pm_inproduction pin on pin.barcode = p.barcode and p.PROCEDUREID = pin.PROCEDUREID"
  12803. + " 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'";
  12804. if (!string.IsNullOrEmpty(procedureIDs))
  12805. {
  12806. Insql += " and p.PROCEDUREID in (" + procedureIDs + ")";
  12807. }
  12808. if (!string.IsNullOrEmpty(goodsCodes))
  12809. {
  12810. Insql += " and p.GoodsID in (" + goodsCodes + ")";
  12811. }
  12812. if (startDateTime != null)
  12813. {
  12814. Insql += Insql + " AND pin.ProcedureTime >= :Createdate AND pin.ProcedureTime <= :EndDate ";
  12815. Paras = new OracleParameter[] {
  12816. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  12817. new OracleParameter(":Createdate", OracleDbType.Date, startDateTime, ParameterDirection.Input),
  12818. new OracleParameter(":EndDate", OracleDbType.Date, endDateTime, ParameterDirection.Input),
  12819. };
  12820. }
  12821. else
  12822. {
  12823. Paras = new OracleParameter[] {
  12824. new OracleParameter(":InCheckedID",OracleDbType.Int32,inCheckedID,ParameterDirection.Input),
  12825. };
  12826. }
  12827. string sql = "";
  12828. // 1.清除未盘点数据
  12829. 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'";
  12830. //Paras = new OracleParameter[] {
  12831. // new OracleParameter(":InCheckedID",OracleDbType.Int32,
  12832. // inCheckedID,ParameterDirection.Input)
  12833. // };
  12834. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12835. // 2. 把在产数据插入到在产临时表中。(数据来源标识0:在产表)
  12836. sql = @"insert into tp_pm_inproduction_tmp
  12837. (
  12838. BARCODE,
  12839. PRODUCTIONLINEID,
  12840. PRODUCTIONLINECODE,
  12841. PRODUCTIONLINENAME,
  12842. PROCEDUREMODEL,
  12843. MODELTYPE,
  12844. REWORKPROCEDUREID,
  12845. ISPUBLICBODY,
  12846. GOODSID,
  12847. GOODSCODE,
  12848. GOODSNAME,
  12849. USERID,
  12850. GROUTINGDAILYID,
  12851. GROUTINGDAILYDETAILID,
  12852. GROUTINGDATE,
  12853. GROUTINGLINEID,
  12854. GROUTINGLINECODE,
  12855. GROUTINGLINENAME,
  12856. GMOULDTYPEID,
  12857. CANMANYTIMES,
  12858. GROUTINGLINEDETAILID,
  12859. GROUTINGMOULDCODE,
  12860. MOULDCODE,
  12861. REMARKS,
  12862. ACCOUNTID,
  12863. VALUEFLAG,
  12864. CREATETIME,
  12865. CREATEUSERID,
  12866. UPDATETIME,
  12867. UPDATEUSERID,
  12868. OPTIMESTAMP,
  12869. ISREFIRE,
  12870. GOODSLEVELID,
  12871. GOODSLEVELTYPEID,
  12872. DEFECTFLAG,
  12873. GROUTINGUSERID,
  12874. GROUTINGUSERCODE,
  12875. GROUTINGNUM,
  12876. KILNID,
  12877. KILNCODE,
  12878. KILNNAME,
  12879. KILNCARID,
  12880. KILNCARCODE,
  12881. KILNCARNAME,
  12882. KILNCARBATCHNO,
  12883. KILNCARPOSITION,
  12884. SPECIALREPAIRFLAG,
  12885. FLOWPROCEDUREID,
  12886. FLOWPROCEDURETIME,
  12887. PROCEDUREID,
  12888. PROCEDURETIME,
  12889. PRODUCTIONDATAID,
  12890. trashflag,
  12891. Deletedtime,
  12892. logoid,
  12893. IsReworkFlag,
  12894. SemiCheckID,
  12895. DELETEDUSERID,
  12896. DELETEDUSERCODE
  12897. )
  12898. select
  12899. BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  12900. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  12901. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  12902. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  12903. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  12904. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  12905. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  12906. CREATEUSERID, UPDATETIME, UPDATEUSERID,optimestamp,
  12907. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  12908. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  12909. KILNID, KILNCODE, KILNNAME, KILNCARID,
  12910. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  12911. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,0,sysdate,logoid,ISREWORKFLAG,SEMICHECKID,"
  12912. + sUserInfo.UserID + ",'" + sUserInfo.UserCode +
  12913. "' from tp_pm_inproduction pp where pp.barcode in (" + Insql + ")";
  12914. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12915. // 4. 删除在产生产数据
  12916. sql = @" delete from tp_pm_productiondatain pp where pp.barcode in(" + Insql + ")";
  12917. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12918. // 3 删除在产数据
  12919. sql = @" delete from tp_pm_inproduction pp where pp.barcode in(" + Insql + ")";
  12920. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12921. sql = @" update TP_PM_INCHECKEDDETAIL p set p.INCHECKEDFLAG = '3' where p.INCHECKEDFLAG='9' and p.InCheckedID=" + inCheckedID;
  12922. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  12923. if (returnRows == 0)
  12924. {
  12925. oracleTrConn.Rollback();
  12926. oracleTrConn.Disconnect();
  12927. }
  12928. else
  12929. {
  12930. oracleTrConn.Commit();
  12931. oracleTrConn.Disconnect();
  12932. }
  12933. }
  12934. catch (Exception ex)
  12935. {
  12936. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  12937. {
  12938. oracleTrConn.Rollback();
  12939. oracleTrConn.Disconnect();
  12940. }
  12941. throw ex;
  12942. }
  12943. finally
  12944. {
  12945. if (oracleTrConn.ConnState == ConnectionState.Open)
  12946. {
  12947. oracleTrConn.Disconnect();
  12948. }
  12949. }
  12950. return returnRows;
  12951. }
  12952. /// <summary>
  12953. /// 设置条码商标
  12954. /// </summary>
  12955. /// <returns></returns>
  12956. public static int SaveBarCodeLogo(string barcode, int logoid, SUserInfo sUserInfo)
  12957. {
  12958. int returnRows = 0;
  12959. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  12960. try
  12961. {
  12962. // 转换条码
  12963. string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  12964. OracleParameter[] paras1 = new OracleParameter[]{
  12965. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  12966. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  12967. };
  12968. barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  12969. OracleParameter[] Paras = null;
  12970. object oldLogoID = null;
  12971. //lsq 20210723 已注浆非产成品没有商标可以变更商标
  12972. //begin
  12973. object pdid = null;
  12974. //end
  12975. object pid = null;
  12976. string sql = "";
  12977. //sql = @"select logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  12978. //oldLogoID = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  12979. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  12980. // });
  12981. //lsq 20210723 已注浆非产成品没有商标可以变更商标
  12982. //begin
  12983. //sql = @"select g.logoid, f.fhuserid from tp_pm_groutingdailydetail g
  12984. // left join tp_pm_finishedproduct f on g.barcode = f.barcode
  12985. // where g.barcode=:barcode";
  12986. sql = @"select g.logoid,g.GROUTINGDAILYDETAILID,f.fhuserid from tp_pm_groutingdailydetail g
  12987. left join tp_pm_finishedproduct f on g.barcode = f.barcode
  12988. where g.barcode=:barcode";
  12989. //end
  12990. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  12991. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  12992. });
  12993. if (dt != null && dt.Rows.Count > 0)
  12994. {
  12995. oldLogoID = dt.Rows[0]["logoid"];
  12996. object fhuserid = dt.Rows[0]["fhuserid"];
  12997. //lsq 20210723 已注浆非产成品没有商标可以变更商标
  12998. //begin
  12999. pdid = dt.Rows[0]["GROUTINGDAILYDETAILID"];
  13000. //if (oldLogoID == null || oldLogoID == DBNull.Value)
  13001. if (pdid == null || pdid == DBNull.Value)
  13002. //end
  13003. {
  13004. // 条码不存在 ——> 该条码未注浆 lsq 20210723
  13005. return -2;
  13006. }
  13007. if (fhuserid != null && fhuserid != DBNull.Value)
  13008. {
  13009. // "已交接的产品不能变更商标";
  13010. return -3;
  13011. }
  13012. }
  13013. // 1.更新注浆明细
  13014. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13015. Paras = new OracleParameter[] {
  13016. new OracleParameter(":logoid",OracleDbType.Int32,
  13017. logoid,ParameterDirection.Input),
  13018. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13019. sUserInfo.UserID,ParameterDirection.Input),
  13020. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13021. barcode,ParameterDirection.Input)
  13022. };
  13023. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13024. // 2.在产产品
  13025. sql = @"update tp_pm_inproduction set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13026. //Paras = new OracleParameter[] {
  13027. // new OracleParameter(":logoid",OracleDbType.Int32,
  13028. // logoid,ParameterDirection.Input),
  13029. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13030. // sUserInfo.UserID,ParameterDirection.Input),
  13031. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13032. // barcode,ParameterDirection.Input)
  13033. // };
  13034. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13035. if (returnRows > 0)
  13036. {
  13037. sql = @"select ProcedureID from tp_pm_inproduction where barcode=:barcode";
  13038. pid = oracleTrConn.GetSqlResultToObj(sql, new OracleParameter[]{
  13039. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  13040. });
  13041. }
  13042. // 3.在产回收站
  13043. sql = @"update tp_pm_inproductiontrash set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13044. //Paras = new OracleParameter[] {
  13045. // new OracleParameter(":logoid",OracleDbType.Int32,
  13046. // logoid,ParameterDirection.Input),
  13047. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13048. // sUserInfo.UserID,ParameterDirection.Input),
  13049. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13050. // barcode,ParameterDirection.Input)
  13051. // };
  13052. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13053. // 4.在产临时表
  13054. sql = @"update tp_pm_inproduction_tmp set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13055. //Paras = new OracleParameter[] {
  13056. // new OracleParameter(":logoid",OracleDbType.Int32,
  13057. // logoid,ParameterDirection.Input),
  13058. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13059. // sUserInfo.UserID,ParameterDirection.Input),
  13060. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13061. // barcode,ParameterDirection.Input)
  13062. // };
  13063. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13064. // 5.成品表
  13065. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13066. //Paras = new OracleParameter[] {
  13067. // new OracleParameter(":logoid",OracleDbType.Int32,
  13068. // logoid,ParameterDirection.Input),
  13069. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13070. // sUserInfo.UserID,ParameterDirection.Input),
  13071. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13072. // barcode,ParameterDirection.Input)
  13073. // };
  13074. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13075. // 6 在产盘点明细
  13076. sql = @"update TP_PM_InCheckedDetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13077. //Paras = new OracleParameter[] {
  13078. // new OracleParameter(":logoid",OracleDbType.Int32,
  13079. // logoid,ParameterDirection.Input),
  13080. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13081. // sUserInfo.UserID,ParameterDirection.Input),
  13082. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13083. // barcode,ParameterDirection.Input)
  13084. // };
  13085. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13086. // 7 半成品检验登记
  13087. sql = @"update TP_PM_SemiCheck set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13088. //Paras = new OracleParameter[] {
  13089. // new OracleParameter(":logoid",OracleDbType.Int32,
  13090. // logoid,ParameterDirection.Input),
  13091. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13092. // sUserInfo.UserID,ParameterDirection.Input),
  13093. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13094. // barcode,ParameterDirection.Input)
  13095. // };
  13096. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13097. // 8 废弃产品
  13098. sql = @"update TP_PM_ScrapProduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13099. //Paras = new OracleParameter[] {
  13100. // new OracleParameter(":logoid",OracleDbType.Int32,
  13101. // logoid,ParameterDirection.Input),
  13102. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13103. // sUserInfo.UserID,ParameterDirection.Input),
  13104. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13105. // barcode,ParameterDirection.Input)
  13106. // };
  13107. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13108. // 9 在产生产数据
  13109. sql = @"update TP_PM_ProductionDataIn set Triggerflag=1, logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13110. //Paras = new OracleParameter[] {
  13111. // new OracleParameter(":logoid",OracleDbType.Int32,
  13112. // logoid,ParameterDirection.Input),
  13113. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13114. // sUserInfo.UserID,ParameterDirection.Input),
  13115. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13116. // barcode,ParameterDirection.Input)
  13117. // };
  13118. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13119. // 10 生产数据
  13120. sql = @"update TP_PM_ProductionData set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13121. //Paras = new OracleParameter[] {
  13122. // new OracleParameter(":logoid",OracleDbType.Int32,
  13123. // logoid,ParameterDirection.Input),
  13124. // new OracleParameter(":updateuserid",OracleDbType.Int32,
  13125. // sUserInfo.UserID,ParameterDirection.Input),
  13126. // new OracleParameter(":barcode",OracleDbType.Varchar2,
  13127. // barcode,ParameterDirection.Input)
  13128. // };
  13129. // ? returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13130. // 变更履历
  13131. sql =
  13132. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  13133. " (BARCODE\n" +
  13134. " ,OLDLOGOID\n" +
  13135. " ,NEWLOGOID\n" +
  13136. " ,PROCEDUREID\n" +
  13137. " ,REMARKS\n" +
  13138. " ,ACCOUNTID\n" +
  13139. " ,CREATETIME\n" +
  13140. " ,CREATEUSERID)\n" +
  13141. "VALUES\n" +
  13142. " (:BARCODE\n" +
  13143. " ,:OLDLOGOID\n" +
  13144. " ,:NEWLOGOID\n" +
  13145. " ,:PROCEDUREID\n" +
  13146. " ,NULL\n" +
  13147. " ,:ACCOUNTID\n" +
  13148. " ,SYSDATE\n" +
  13149. " ,:CREATEUSERID)";
  13150. Paras = new OracleParameter[] {
  13151. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  13152. oldLogoID,ParameterDirection.Input),
  13153. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  13154. logoid,ParameterDirection.Input),
  13155. new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  13156. pid,ParameterDirection.Input),
  13157. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  13158. sUserInfo.AccountID,ParameterDirection.Input),
  13159. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  13160. sUserInfo.UserID,ParameterDirection.Input),
  13161. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  13162. barcode,ParameterDirection.Input)
  13163. };
  13164. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13165. //if (returnRows == 0)
  13166. //{
  13167. // oracleTrConn.Rollback();
  13168. // oracleTrConn.Disconnect();
  13169. //}
  13170. //else
  13171. {
  13172. oracleTrConn.Commit();
  13173. oracleTrConn.Disconnect();
  13174. }
  13175. }
  13176. catch (Exception ex)
  13177. {
  13178. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13179. {
  13180. oracleTrConn.Rollback();
  13181. oracleTrConn.Disconnect();
  13182. }
  13183. throw ex;
  13184. }
  13185. return returnRows;
  13186. }
  13187. /// <summary>
  13188. /// 设置条码商标 釉料
  13189. /// </summary>
  13190. /// <returns></returns>
  13191. public static int SaveBarCodeLogoAndGlazetype(string barcode, int logoid, int glazetypeid,
  13192. SUserInfo sUserInfo)
  13193. {
  13194. int returnRows = 0;
  13195. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13196. try
  13197. {
  13198. // 转换条码
  13199. //string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  13200. //OracleParameter[] paras1 = new OracleParameter[]{
  13201. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  13202. // new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  13203. // };
  13204. //barcode = oracleTrConn.GetSqlResultToStr(sqlString, paras1);
  13205. OracleParameter[] Paras = null;
  13206. string sql = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, t.PROCEDUREID from tp_pm_groutingdailydetail g \n" +
  13207. " left join tp_pm_inproduction t on t.barcode = g.barcode\n" +
  13208. "where g.barcode = :barcode";
  13209. Paras = new OracleParameter[] {
  13210. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13211. barcode,ParameterDirection.Input), };
  13212. DataTable dt = oracleTrConn.GetSqlResultToDt(sql, Paras);
  13213. if (dt == null || dt.Rows.Count == 0)
  13214. {
  13215. return -2;
  13216. }
  13217. // 釉料变更履历
  13218. sql = "insert into TP_PM_GlazetypeRecord\n" +
  13219. //"values\n" + xuwei update 2020-01-02
  13220. " (GROUTINGDAILYDETAILID\n" +
  13221. " ,OldGlazetypeid\n" +
  13222. " ,NewGlazetypeid\n" +
  13223. " ,ProcedureID\n" +
  13224. " ,Remarks\n" +
  13225. " ,AccountID\n" +
  13226. " ,CreateUserID)\n" +
  13227. "values\n" +
  13228. " (:GROUTINGDAILYDETAILID\n" +
  13229. " ,:OldGlazetypeid\n" +
  13230. " ,:NewGlazetypeid\n" +
  13231. " ,:ProcedureID\n" +
  13232. " ,:Remarks\n" +
  13233. " ,:AccountID\n" +
  13234. " ,:CreateUserID)";
  13235. Paras = new OracleParameter[] {
  13236. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  13237. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  13238. new OracleParameter(":OldGlazetypeid",OracleDbType.Int32,
  13239. dt.Rows[0]["glazetypeid"],ParameterDirection.Input),
  13240. new OracleParameter(":NewGlazetypeid",OracleDbType.Int32,
  13241. glazetypeid,ParameterDirection.Input),
  13242. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  13243. dt.Rows[0]["PROCEDUREID"],ParameterDirection.Input),
  13244. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  13245. null,ParameterDirection.Input),
  13246. new OracleParameter(":AccountID",OracleDbType.Int32,
  13247. sUserInfo.AccountID,ParameterDirection.Input),
  13248. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  13249. sUserInfo.UserID,ParameterDirection.Input),
  13250. };
  13251. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13252. // 变更履历
  13253. sql =
  13254. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  13255. " (BARCODE\n" +
  13256. " ,OLDLOGOID\n" +
  13257. " ,NEWLOGOID\n" +
  13258. //" ,PROCEDUREID\n" +
  13259. " ,REMARKS\n" +
  13260. " ,ACCOUNTID\n" +
  13261. " ,CREATETIME\n" +
  13262. " ,CREATEUSERID)\n" +
  13263. "VALUES\n" +
  13264. " (:BARCODE\n" +
  13265. " ,:OLDLOGOID\n" +
  13266. " ,:NEWLOGOID\n" +
  13267. //" ,:PROCEDUREID\n" +
  13268. " ,NULL\n" +
  13269. " ,:ACCOUNTID\n" +
  13270. " ,SYSDATE\n" +
  13271. " ,:CREATEUSERID)";
  13272. Paras = new OracleParameter[] {
  13273. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  13274. dt.Rows[0]["LOGOID"],ParameterDirection.Input),
  13275. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  13276. logoid,ParameterDirection.Input),
  13277. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  13278. // pid,ParameterDirection.Input),
  13279. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  13280. sUserInfo.AccountID,ParameterDirection.Input),
  13281. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  13282. sUserInfo.UserID,ParameterDirection.Input),
  13283. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  13284. barcode,ParameterDirection.Input)
  13285. };
  13286. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13287. // 1.更新注浆明细
  13288. sql = "update tp_pm_groutingdailydetail set logoid=:logoid, glazetypeid =:glazetypeid, updateuserid=:updateuserid where barcode=:barcode";
  13289. Paras = new OracleParameter[] {
  13290. new OracleParameter(":logoid",OracleDbType.Int32,
  13291. logoid,ParameterDirection.Input),
  13292. new OracleParameter(":glazetypeid",OracleDbType.Int32,
  13293. glazetypeid,ParameterDirection.Input),
  13294. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13295. sUserInfo.UserID,ParameterDirection.Input),
  13296. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13297. barcode,ParameterDirection.Input)
  13298. };
  13299. returnRows = oracleTrConn.ExecuteNonQuery(sql, Paras);
  13300. // 1.更新在产
  13301. sql = @"update TP_PM_INPRODUCTION set logoid=:logoid,
  13302. --glazetypeid =:glazetypeid,
  13303. updateuserid=:updateuserid where barcode=:barcode";
  13304. Paras = new OracleParameter[] {
  13305. new OracleParameter(":logoid",OracleDbType.Int32,
  13306. logoid,ParameterDirection.Input),
  13307. //new OracleParameter(":glazetypeid",OracleDbType.Int32,
  13308. // glazetypeid,ParameterDirection.Input),
  13309. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13310. sUserInfo.UserID,ParameterDirection.Input),
  13311. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13312. barcode,ParameterDirection.Input)
  13313. };
  13314. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13315. oracleTrConn.Commit();
  13316. }
  13317. catch (Exception ex)
  13318. {
  13319. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13320. {
  13321. oracleTrConn.Rollback();
  13322. }
  13323. throw ex;
  13324. }
  13325. finally { oracleTrConn.Disconnect(); }
  13326. return returnRows;
  13327. }
  13328. /// <summary>
  13329. /// 设置条码商标 釉料
  13330. /// </summary>
  13331. /// <returns></returns>
  13332. public static int SaveBarCodesLogoAndGlazetype(string barcodesstr, int logoid, int glazetypeid,
  13333. int procedureID, SUserInfo sUserInfo)
  13334. {
  13335. int returnRows = 0;
  13336. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13337. try
  13338. {
  13339. OracleParameter[] Paras = null;
  13340. string sql = "select g.groutingdailydetailid, g.logoid, g.glazetypeid, t.PROCEDUREID from tp_pm_groutingdailydetail g \n" +
  13341. " left join tp_pm_inproduction t on t.barcode = g.barcode\n" +
  13342. "where g.barcode = :barcode";
  13343. string sql0 = "select g.groutingdailydetailid, g.logoid, g.glazetypeid from tp_pm_groutingdailydetail g \n" +
  13344. "where g.barcode = :barcode";
  13345. // 釉料变更履历
  13346. string sql1 = "insert into TP_PM_GlazetypeRecord\n" +
  13347. //"values\n" + xuwei update 2020-01-02
  13348. " (GROUTINGDAILYDETAILID\n" +
  13349. " ,OldGlazetypeid\n" +
  13350. " ,NewGlazetypeid\n" +
  13351. " ,ProcedureID\n" +
  13352. " ,Remarks\n" +
  13353. " ,AccountID\n" +
  13354. " ,CreateUserID)\n" +
  13355. "values\n" +
  13356. " (:GROUTINGDAILYDETAILID\n" +
  13357. " ,:OldGlazetypeid\n" +
  13358. " ,:NewGlazetypeid\n" +
  13359. " ,:ProcedureID\n" +
  13360. " ,:Remarks\n" +
  13361. " ,:AccountID\n" +
  13362. " ,:CreateUserID)";
  13363. // 变更履历
  13364. string sqllogo =
  13365. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  13366. " (BARCODE\n" +
  13367. " ,OLDLOGOID\n" +
  13368. " ,NEWLOGOID\n" +
  13369. //" ,PROCEDUREID\n" +
  13370. " ,REMARKS\n" +
  13371. " ,ACCOUNTID\n" +
  13372. " ,CREATETIME\n" +
  13373. " ,CREATEUSERID)\n" +
  13374. "VALUES\n" +
  13375. " (:BARCODE\n" +
  13376. " ,:OLDLOGOID\n" +
  13377. " ,:NEWLOGOID\n" +
  13378. //" ,:PROCEDUREID\n" +
  13379. " ,NULL\n" +
  13380. " ,:ACCOUNTID\n" +
  13381. " ,SYSDATE\n" +
  13382. " ,:CREATEUSERID)";
  13383. string sql2 = "update tp_pm_groutingdailydetail set logoid=:logoid, glazetypeid =:glazetypeid, updateuserid=:updateuserid where barcode=:barcode";
  13384. // 1.更新在产
  13385. string sqlin = @"update TP_PM_INPRODUCTION set logoid=:logoid,
  13386. --glazetypeid =:glazetypeid,
  13387. updateuserid=:updateuserid where barcode=:barcode";
  13388. //xuwei add 2020-01-02
  13389. string[] barcodes = barcodesstr.Split(',');
  13390. foreach (string barcode in barcodes)
  13391. {
  13392. Paras = new OracleParameter[] {
  13393. new OracleParameter(":barcode",OracleDbType.NVarchar2,
  13394. barcode,ParameterDirection.Input), };
  13395. DataTable dt = null;
  13396. if (procedureID > 0)
  13397. {
  13398. dt = oracleTrConn.GetSqlResultToDt(sql0, Paras);
  13399. }
  13400. else
  13401. {
  13402. dt = oracleTrConn.GetSqlResultToDt(sql, Paras);
  13403. }
  13404. if (dt == null || dt.Rows.Count == 0)
  13405. {
  13406. //continue;
  13407. return -2;
  13408. }
  13409. Paras = new OracleParameter[] {
  13410. new OracleParameter(":GROUTINGDAILYDETAILID",OracleDbType.Int32,
  13411. dt.Rows[0]["GROUTINGDAILYDETAILID"],ParameterDirection.Input),
  13412. new OracleParameter(":OldGlazetypeid",OracleDbType.Int32,
  13413. dt.Rows[0]["glazetypeid"],ParameterDirection.Input),
  13414. new OracleParameter(":NewGlazetypeid",OracleDbType.Int32,
  13415. glazetypeid,ParameterDirection.Input),
  13416. new OracleParameter(":ProcedureID",OracleDbType.Int32,
  13417. (procedureID > 0 ? procedureID : dt.Rows[0]["PROCEDUREID"]),ParameterDirection.Input),
  13418. new OracleParameter(":Remarks",OracleDbType.NVarchar2,
  13419. null,ParameterDirection.Input),
  13420. new OracleParameter(":AccountID",OracleDbType.Int32,
  13421. sUserInfo.AccountID,ParameterDirection.Input),
  13422. new OracleParameter(":CreateUserID",OracleDbType.Int32,
  13423. sUserInfo.UserID,ParameterDirection.Input),
  13424. };
  13425. oracleTrConn.ExecuteNonQuery(sql1, Paras);
  13426. // 商标履历
  13427. Paras = new OracleParameter[] {
  13428. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  13429. dt.Rows[0]["LOGOID"],ParameterDirection.Input),
  13430. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  13431. logoid,ParameterDirection.Input),
  13432. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  13433. // pid,ParameterDirection.Input),
  13434. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  13435. sUserInfo.AccountID,ParameterDirection.Input),
  13436. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  13437. sUserInfo.UserID,ParameterDirection.Input),
  13438. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  13439. barcode,ParameterDirection.Input)
  13440. };
  13441. returnRows += oracleTrConn.ExecuteNonQuery(sqllogo, Paras);
  13442. // 1.更新注浆明细
  13443. Paras = new OracleParameter[] {
  13444. new OracleParameter(":logoid",OracleDbType.Int32,
  13445. logoid,ParameterDirection.Input),
  13446. new OracleParameter(":glazetypeid",OracleDbType.Int32,
  13447. glazetypeid,ParameterDirection.Input),
  13448. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13449. sUserInfo.UserID,ParameterDirection.Input),
  13450. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13451. barcode,ParameterDirection.Input)
  13452. };
  13453. returnRows += oracleTrConn.ExecuteNonQuery(sql2, Paras);
  13454. // 1.更新在产
  13455. Paras = new OracleParameter[] {
  13456. new OracleParameter(":logoid",OracleDbType.Int32,
  13457. logoid,ParameterDirection.Input),
  13458. //new OracleParameter(":glazetypeid",OracleDbType.Int32,
  13459. // glazetypeid,ParameterDirection.Input),
  13460. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13461. sUserInfo.UserID,ParameterDirection.Input),
  13462. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13463. barcode,ParameterDirection.Input)
  13464. };
  13465. returnRows = oracleTrConn.ExecuteNonQuery(sqlin, Paras);
  13466. }
  13467. oracleTrConn.Commit();
  13468. }
  13469. catch (Exception ex)
  13470. {
  13471. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13472. {
  13473. oracleTrConn.Rollback();
  13474. }
  13475. throw ex;
  13476. }
  13477. finally { oracleTrConn.Disconnect(); }
  13478. return returnRows;
  13479. }
  13480. /// <summary>
  13481. /// 设置产成品商标
  13482. /// </summary>
  13483. /// <param name="barcodes"></param>
  13484. /// <param name="logoid"></param>
  13485. /// <param name="sUserInfo"></param>
  13486. /// <returns></returns>
  13487. public static int SetFinishedLogo(string[] barcodes, int logoid, SUserInfo sUserInfo)
  13488. {
  13489. int returnRows = 0;
  13490. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13491. try
  13492. {
  13493. OracleParameter[] Paras = null;
  13494. object oldLogoID = null;
  13495. object gdid = null;
  13496. //object pid = null;
  13497. string sql = "";
  13498. DataTable dataTable = null;
  13499. foreach (string barcode in barcodes)
  13500. {
  13501. sql = @"select groutingdailydetailid, logoid from tp_pm_groutingdailydetail where barcode=:barcode";
  13502. dataTable = oracleTrConn.GetSqlResultToDt(sql, new OracleParameter[]{
  13503. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  13504. });
  13505. if (dataTable == null || dataTable.Rows.Count == 0)
  13506. {
  13507. continue;
  13508. }
  13509. gdid = dataTable.Rows[0]["groutingdailydetailid"];
  13510. oldLogoID = dataTable.Rows[0]["logoid"];
  13511. // 1.更新注浆明细
  13512. sql = @"update tp_pm_groutingdailydetail set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13513. Paras = new OracleParameter[] {
  13514. new OracleParameter(":logoid",OracleDbType.Int32,
  13515. logoid,ParameterDirection.Input),
  13516. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13517. sUserInfo.UserID,ParameterDirection.Input),
  13518. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13519. barcode,ParameterDirection.Input)
  13520. };
  13521. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13522. // 5.成品表
  13523. sql = @"update tp_pm_finishedproduct set logoid=:logoid,updateuserid=:updateuserid where barcode=:barcode";
  13524. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13525. // 变更履历
  13526. sql =
  13527. "INSERT INTO TP_PM_LOGOCHANGEDRECORD\n" +
  13528. " (BARCODE\n" +
  13529. " ,OLDLOGOID\n" +
  13530. " ,NEWLOGOID\n" +
  13531. //" ,PROCEDUREID\n" +
  13532. " ,REMARKS\n" +
  13533. " ,ACCOUNTID\n" +
  13534. " ,CREATETIME\n" +
  13535. " ,CREATEUSERID)\n" +
  13536. "VALUES\n" +
  13537. " (:BARCODE\n" +
  13538. " ,:OLDLOGOID\n" +
  13539. " ,:NEWLOGOID\n" +
  13540. //" ,:PROCEDUREID\n" +
  13541. " ,NULL\n" +
  13542. " ,:ACCOUNTID\n" +
  13543. " ,SYSDATE\n" +
  13544. " ,:CREATEUSERID)";
  13545. Paras = new OracleParameter[] {
  13546. new OracleParameter(":OLDLOGOID",OracleDbType.Int32,
  13547. oldLogoID,ParameterDirection.Input),
  13548. new OracleParameter(":NEWLOGOID",OracleDbType.Int32,
  13549. logoid,ParameterDirection.Input),
  13550. //new OracleParameter(":PROCEDUREID",OracleDbType.Int32,
  13551. // pid,ParameterDirection.Input),
  13552. new OracleParameter(":ACCOUNTID",OracleDbType.Int32,
  13553. sUserInfo.AccountID,ParameterDirection.Input),
  13554. new OracleParameter(":CREATEUSERID",OracleDbType.Int32,
  13555. sUserInfo.UserID,ParameterDirection.Input),
  13556. new OracleParameter(":BARCODE",OracleDbType.Varchar2,
  13557. barcode,ParameterDirection.Input)
  13558. };
  13559. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13560. }
  13561. //if (returnRows == 0)
  13562. //{
  13563. // oracleTrConn.Rollback();
  13564. // oracleTrConn.Disconnect();
  13565. //}
  13566. //else
  13567. {
  13568. oracleTrConn.Commit();
  13569. oracleTrConn.Disconnect();
  13570. }
  13571. }
  13572. catch (Exception ex)
  13573. {
  13574. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13575. {
  13576. oracleTrConn.Rollback();
  13577. oracleTrConn.Disconnect();
  13578. }
  13579. throw ex;
  13580. }
  13581. return returnRows;
  13582. }
  13583. /// <summary>
  13584. /// 设置产成品订单
  13585. /// </summary>
  13586. /// <param name="barcodes"></param>
  13587. /// <param name="orderid"></param>
  13588. /// <param name="sUserInfo"></param>
  13589. /// <returns></returns>
  13590. public static int SetHandoveredOrder(string[] barcodes, int orderID, SUserInfo sUserInfo)
  13591. {
  13592. int returnRows = 0;
  13593. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13594. try
  13595. {
  13596. string sql = @"update tp_pm_finishedproduct set FHOrderID=:FHOrderID,updateuserid=:updateuserid where barcode=:barcode and FHOrderID is not null";
  13597. OracleParameter[] Paras = new OracleParameter[] {
  13598. new OracleParameter(":barcode",OracleDbType.Varchar2,
  13599. "",ParameterDirection.Input),
  13600. new OracleParameter(":FHOrderID",OracleDbType.Int32,
  13601. orderID,ParameterDirection.Input),
  13602. new OracleParameter(":updateuserid",OracleDbType.Int32,
  13603. sUserInfo.UserID,ParameterDirection.Input)
  13604. };
  13605. foreach (string barcode in barcodes)
  13606. {
  13607. Paras[0].Value = barcode;
  13608. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  13609. }
  13610. oracleTrConn.Commit();
  13611. oracleTrConn.Disconnect();
  13612. }
  13613. catch (Exception ex)
  13614. {
  13615. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  13616. {
  13617. oracleTrConn.Rollback();
  13618. oracleTrConn.Disconnect();
  13619. }
  13620. throw ex;
  13621. }
  13622. return returnRows;
  13623. }
  13624. #endregion
  13625. /// <summary>
  13626. /// 添加生产数据
  13627. /// </summary>
  13628. /// <param name="oracleTrConn">连接对象</param>
  13629. /// <param name="accountDate">账务日期</param>
  13630. /// <param name="productionData">生产数据</param>
  13631. /// <param name="sUserInfo">用户基本信息</param>
  13632. /// <returns>string</returns>
  13633. /// <remarks>
  13634. /// 陈冰 2014.09.18 新建
  13635. /// </remarks>
  13636. private static string AddProductionDataWaster(IDBTransaction oracleTrConn, DateTime accountDate, ProductionDataEntity productionData, SUserInfo sUserInfo, out string OutSpecialRepairflag)
  13637. {
  13638. #region 查出产品注浆日期,注浆工号ID,注浆工号编码,注浆次数,注浆模具编号,模具编号
  13639. string selectSql = "";
  13640. string returnVal = "";
  13641. //xuwei fix 2019-09-24 按新规则重新校准NodeType.Begin使后续NodeType.Begin判定是准确的
  13642. //xuwei fix 2019-09-26 使用通用方法判定
  13643. // 2019-1016
  13644. //int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  13645. //if (isNodeBegin == 1) productionData.NodeType = (int)Constant.ProcedureNodeType.Begin;
  13646. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)
  13647. {
  13648. int isNodeBegin = IsNodeBegin<IDBTransaction>(oracleTrConn, productionData.Barcode);
  13649. if (isNodeBegin == 0)
  13650. {
  13651. productionData.NodeType = (int)Constant.ProcedureNodeType.Middle;
  13652. }
  13653. }
  13654. if (productionData.NodeType == (int)Constant.ProcedureNodeType.Begin)//开始节点时从注浆登记取值
  13655. {
  13656. selectSql = @"select TP_PM_GroutingDailyDetail.GroutingDate,
  13657. TP_PM_GroutingDailyDetail.UserID as GroutingUserID,
  13658. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  13659. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  13660. TP_PM_GroutingDailyDetail.GroutingMouldCode,
  13661. TP_PM_GroutingDailyDetail.MouldCode,
  13662. TP_PM_GroutingDailyDetail.GroutingDailyID,
  13663. TP_PM_GroutingDailyDetail.GroutingDailyDetailID,
  13664. TP_PM_GroutingDailyDetail.GroutingLineID,
  13665. TP_PM_GroutingDailyDetail.GroutingLineCode,
  13666. TP_PM_GroutingDailyDetail.GroutingLineName,
  13667. TP_PM_GroutingDailyDetail.GroutingLineDetailID,
  13668. TP_PM_GroutingDailyDetail.SpecialRepairflag,
  13669. (select GMouldTypeID
  13670. from TP_PM_GroutingDaily
  13671. where TP_PM_GroutingDaily.GroutingDailyID =
  13672. TP_PM_GroutingDailyDetail.GroutingDailyID) as GMouldTypeID,
  13673. (select CanManyTimes
  13674. from TP_PM_GroutingDaily
  13675. where TP_PM_GroutingDaily.GroutingDailyID =
  13676. TP_PM_GroutingDailyDetail.GroutingDailyID) as CanManyTimes,
  13677. 0 as IsReFire
  13678. from TP_PM_GroutingDailyDetail
  13679. where TP_PM_GroutingDailyDetail.barcode=:barcode";
  13680. }
  13681. else
  13682. {
  13683. selectSql = @"select
  13684. GroutingDate,
  13685. userid as GroutingUserID,
  13686. usercode as GroutingUserCode,
  13687. Groutingcount as GroutingNum,
  13688. GroutingMouldCode,
  13689. MouldCode,
  13690. GroutingDailyID,
  13691. GroutingDailyDetailID,
  13692. GroutingLineID,
  13693. GroutingLineCode,
  13694. GroutingLineName,
  13695. GMouldTypeID,
  13696. CanManyTimes,
  13697. GroutingLineDetailID,
  13698. SpecialRepairflag,
  13699. 0 as IsReFire,
  13700. logoid
  13701. from TP_PM_GroutingDailyDetail where barcode=:barcode
  13702. ";
  13703. }
  13704. OracleParameter[] selectparas = new OracleParameter[] {
  13705. new OracleParameter(":barcode",productionData.Barcode),
  13706. };
  13707. DataSet dsGroutingProduct = oracleTrConn.GetSqlResultToDs(selectSql, selectparas);
  13708. DateTime GroutingDate = new DateTime();
  13709. int GroutingUserID = 0, GroutingNum = 0, GroutingDailyID = 0, GroutingDailyDetailID = 0, GroutingLineID = 0, GMouldTypeID = 0, CanManyTimes = 0, GroutingLineDetailID = 0, SpecialRepairflag = 0;
  13710. string GroutingUserCode = "", GroutingMouldCode = "", MouldCode = "", GroutingLineCode = "", GroutingLineName = "";
  13711. int IsReFire = 0;
  13712. int? logoID = null;
  13713. if (dsGroutingProduct != null && dsGroutingProduct.Tables[0].Rows.Count > 0)
  13714. {
  13715. GroutingDate = Convert.ToDateTime(dsGroutingProduct.Tables[0].Rows[0]["GroutingDate"]);
  13716. GroutingUserID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingUserID"]);
  13717. GroutingUserCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  13718. GroutingNum = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingNum"]);
  13719. GroutingMouldCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingMouldCode"].ToString();
  13720. MouldCode = dsGroutingProduct.Tables[0].Rows[0]["MouldCode"].ToString();
  13721. GroutingDailyID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyID"]);
  13722. GroutingDailyDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingDailyDetailID"]);
  13723. GroutingLineID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineID"]);
  13724. GroutingLineCode = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineCode"].ToString();
  13725. GroutingLineName = dsGroutingProduct.Tables[0].Rows[0]["GroutingLineName"].ToString();
  13726. GMouldTypeID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GMouldTypeID"]);
  13727. CanManyTimes = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["CanManyTimes"]);
  13728. GroutingLineDetailID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["GroutingLineDetailID"]);
  13729. SpecialRepairflag = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["SpecialRepairflag"]);
  13730. IsReFire = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["IsReFire"]);
  13731. if (IsReFire > 0) //大于零代表重烧过
  13732. {
  13733. productionData.IsReFire = IsReFire;
  13734. productionData.DefectFlag = (int)Constant.GoodsLevelType.Defect;
  13735. }
  13736. if (dsGroutingProduct.Tables[0].Rows[0]["logoID"].ToString() != "")
  13737. {
  13738. logoID = Convert.ToInt32(dsGroutingProduct.Tables[0].Rows[0]["logoID"]);
  13739. }
  13740. //if (productionData.LogoID != null) //当前工序有商标
  13741. //{
  13742. // if (logoID != productionData.LogoID && productionData.LogoID != 0)
  13743. // {
  13744. // logoID = productionData.LogoID;
  13745. // //根据明细ID.update
  13746. // selectSql = "update TP_PM_GroutingDailyDetail set logoid=:logoid where GroutingDailyDetailID=" + GroutingDailyDetailID;
  13747. // OracleParameter[] paras2 = new OracleParameter[] {
  13748. // new OracleParameter(":logoid",productionData.LogoID)
  13749. // };
  13750. // oracleTrConn.ExecuteNonQuery(selectSql, paras2);
  13751. // }
  13752. //}
  13753. returnVal = SpecialRepairflag.ToString();
  13754. }
  13755. #endregion
  13756. #region 更新窑炉窑车属性
  13757. if (productionData.ModelType != 1 && productionData.ModelType != 2 && productionData.ModelType != 3 && productionData.ModelType != 4)
  13758. {
  13759. DataSet ds = GetKilnCarInfo(oracleTrConn, productionData.Barcode, sUserInfo);
  13760. if (ds != null)
  13761. {
  13762. if (ds.Tables[0].Rows[0]["KilnID"].ToString() != "") //表示以前有过窑炉相关信息
  13763. {
  13764. productionData.KilnID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnID"]);
  13765. productionData.KilnCode = ds.Tables[0].Rows[0]["KilnCode"].ToString();
  13766. productionData.KilnName = ds.Tables[0].Rows[0]["KilnName"].ToString();
  13767. productionData.KilnCarID = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarID"]);
  13768. productionData.KilnCarCode = ds.Tables[0].Rows[0]["KilnCarCode"].ToString();
  13769. productionData.KilnCarName = ds.Tables[0].Rows[0]["KilnCarName"].ToString();
  13770. productionData.KilnCarBatchNo = ds.Tables[0].Rows[0]["KilnCarBatchNo"].ToString();
  13771. productionData.KilnCarPosition = Convert.ToInt32(ds.Tables[0].Rows[0]["KilnCarPosition"]);
  13772. }
  13773. }
  13774. }
  13775. #endregion
  13776. #region SQL
  13777. string sql = "insert into tp_pm_productiondataIn"
  13778. + " (productiondataid,"
  13779. + " barcode,"
  13780. + " centralizedbatchno,"
  13781. + " productionlineid,"
  13782. + " productionlinecode,"
  13783. + " productionlinename,"
  13784. + " procedureid,"
  13785. + " procedurecode,"
  13786. + " procedurename,"
  13787. + " proceduremodel,"
  13788. + " modeltype,"
  13789. + " piecetype,"
  13790. + " isreworked,"
  13791. + " nodetype,"
  13792. + " ispublicbody,"
  13793. + " isrefire,"
  13794. + " islengbu,"
  13795. + " organizationid,"
  13796. + " goodsid,"
  13797. + " goodscode,"
  13798. + " goodsname,"
  13799. + " userid,"
  13800. + " usercode,"
  13801. + " username,"
  13802. + " kilnid,"
  13803. + " kilncode,"
  13804. + " kilnname,"
  13805. + " kilncarid,"
  13806. + " kilncarcode,"
  13807. + " kilncarname,"
  13808. + " kilncarbatchno,"
  13809. + " kilncarposition,"
  13810. + " reworkprocedureid,"
  13811. + " reworkprocedurecode,"
  13812. + " reworkprocedurename,"
  13813. + " remarks,"
  13814. + " accountdate,"
  13815. + " accountid,"
  13816. + " GoodsLevelID,"
  13817. + " GoodsLevelTypeID,"
  13818. + " createuserid,"
  13819. + " updateuserid,"
  13820. + " GroutingDate,"
  13821. + " GroutingUserID,"
  13822. + " GroutingUserCode,"
  13823. + " GroutingNum,"
  13824. + " GroutingMouldCode,"
  13825. + " MouldCode,"
  13826. + "GroutingDailyID,"
  13827. + "GroutingDailyDetailID,"
  13828. + "GroutingLineID,"
  13829. + " GroutingLineCode,"
  13830. + "GroutingLineName,"
  13831. + "GMouldTypeID,"
  13832. + "CanManyTimes,"
  13833. + "GroutingLineDetailID,"
  13834. + "SpecialRepairflag,"
  13835. + "ClassesSettingID,"
  13836. + "LogoID"
  13837. + ")"
  13838. + " values"
  13839. + " (:productiondataid,"
  13840. + " :barcode,"
  13841. + " :centralizedbatchno,"
  13842. + " :productionlineid,"
  13843. + " :productionlinecode,"
  13844. + " :productionlinename,"
  13845. + " :procedureid,"
  13846. + " :procedurecode,"
  13847. + " :procedurename,"
  13848. + " :proceduremodel,"
  13849. + " :modeltype,"
  13850. + " :piecetype,"
  13851. + " :isreworked,"
  13852. + " :nodetype,"
  13853. + " :ispublicbody,"
  13854. + " :isrefire,"
  13855. + " :islengbu,"
  13856. + " :organizationid,"
  13857. + " :goodsid,"
  13858. + " :goodscode,"
  13859. + " :goodsname,"
  13860. + " :userid,"
  13861. + " :usercode,"
  13862. + " :username,"
  13863. + " :kilnid,"
  13864. + " :kilncode,"
  13865. + " :kilnname,"
  13866. + " :kilncarid,"
  13867. + " :kilncarcode,"
  13868. + " :kilncarname,"
  13869. + " :kilncarbatchno,"
  13870. + " :kilncarposition,"
  13871. + " :reworkprocedureid,"
  13872. + " :reworkprocedurecode,"
  13873. + " :reworkprocedurename,"
  13874. + " :remarks,"
  13875. + " :accountdata,"
  13876. + " :accountid,"
  13877. + " :GoodsLevelID,"
  13878. + " :GoodsLevelTypeID,"
  13879. + " :createuserid,"
  13880. + " :updateuserid,"
  13881. + " :groutingdate,"
  13882. + " :groutinguserid,"
  13883. + " :groutingusercode,"
  13884. + " :groutingnum,"
  13885. + " :groutingmouldcode,"
  13886. + " :mouldcode,"
  13887. + ":groutingdailyid,"
  13888. + ":groutingdailydetailid,"
  13889. + ":groutinglineid,"
  13890. + " :groutinglinecode,"
  13891. + ":groutinglinename,"
  13892. + ":gmouldtypeid,"
  13893. + ":canmanytimes,"
  13894. + ":groutinglinedetailid,"
  13895. + ":specialRepairflag,"
  13896. + ":classesSettingID,"
  13897. + ":logoID"
  13898. + ")";
  13899. #endregion
  13900. #region OracleParameter
  13901. OracleParameter[] paras = new OracleParameter[] {
  13902. new OracleParameter(":classesSettingID",productionData.ClassesSettingID),
  13903. new OracleParameter(":productiondataid",productionData.ProductionDataID),
  13904. new OracleParameter(":barcode",productionData.Barcode),
  13905. new OracleParameter(":centralizedbatchno",productionData.CentralizedBatchNo),
  13906. new OracleParameter(":productionlineid",productionData.ProductionLineID),
  13907. new OracleParameter(":productionlinecode",productionData.ProductionLineCode),
  13908. new OracleParameter(":productionlinename",productionData.ProductionLineName),
  13909. new OracleParameter(":procedureid",productionData.ProcedureID),
  13910. new OracleParameter(":procedurecode",productionData.ProcedureCode),
  13911. new OracleParameter(":procedurename",productionData.ProcedureName),
  13912. new OracleParameter(":proceduremodel",productionData.ProcedureModel),
  13913. new OracleParameter(":modeltype",productionData.ModelType),
  13914. new OracleParameter(":piecetype",productionData.PieceType),
  13915. new OracleParameter(":isreworked",productionData.IsReworked),
  13916. new OracleParameter(":nodetype",productionData.NodeType),
  13917. new OracleParameter(":ispublicbody",productionData.IsPublicBody),
  13918. new OracleParameter(":isrefire",productionData.IsReFire),
  13919. new OracleParameter(":islengbu",productionData.IsLengBu),
  13920. new OracleParameter(":organizationid",productionData.OrganizationID),
  13921. new OracleParameter(":goodsid",productionData.GoodsID),
  13922. new OracleParameter(":goodscode",productionData.GoodsCode),
  13923. new OracleParameter(":goodsname",productionData.GoodsName),
  13924. new OracleParameter(":userid",productionData.UserID),
  13925. new OracleParameter(":usercode",productionData.UserCode),
  13926. new OracleParameter(":username",productionData.UserName),
  13927. new OracleParameter(":kilnid",productionData.KilnID),
  13928. new OracleParameter(":kilncode",productionData.KilnCode),
  13929. new OracleParameter(":kilnname",productionData.KilnName),
  13930. new OracleParameter(":kilncarid",productionData.KilnCarID),
  13931. new OracleParameter(":kilncarcode",productionData.KilnCarCode),
  13932. new OracleParameter(":kilncarname",productionData.KilnCarName),
  13933. new OracleParameter(":kilncarbatchno",productionData.KilnCarBatchNo),
  13934. new OracleParameter(":kilncarposition",productionData.KilnCarPosition),
  13935. new OracleParameter(":reworkprocedureid",productionData.ReworkProcedureID),
  13936. new OracleParameter(":reworkprocedurecode",productionData.ReworkProcedureCode),
  13937. new OracleParameter(":reworkprocedurename",productionData.ReworkProcedureName),
  13938. new OracleParameter(":remarks",productionData.Remarks),
  13939. new OracleParameter(":accountdata",accountDate),
  13940. new OracleParameter(":accountid",sUserInfo.AccountID),
  13941. new OracleParameter(":GoodsLevelID",productionData.GoodsLevelID),
  13942. new OracleParameter(":GoodsLevelTypeID",productionData.GoodsLevelTypeID),
  13943. new OracleParameter(":createuserid",sUserInfo.UserID),
  13944. new OracleParameter(":updateuserid",sUserInfo.UserID),
  13945. new OracleParameter(":groutingdate",GroutingDate),
  13946. new OracleParameter(":groutinguserid",GroutingUserID),
  13947. new OracleParameter(":groutingusercode",GroutingUserCode),
  13948. new OracleParameter(":groutingnum",GroutingNum),
  13949. new OracleParameter(":groutingmouldcode",GroutingMouldCode),
  13950. new OracleParameter(":mouldcode",MouldCode),
  13951. new OracleParameter(":groutingdailyid",GroutingDailyID),
  13952. new OracleParameter(":groutingdailydetailid",GroutingDailyDetailID),
  13953. new OracleParameter(":groutinglineid",GroutingLineID),
  13954. new OracleParameter(":groutinglinecode",GroutingLineCode),
  13955. new OracleParameter(":groutinglinename",GroutingLineName),
  13956. new OracleParameter(":gmouldtypeid",GMouldTypeID),
  13957. new OracleParameter(":canmanytimes",CanManyTimes),
  13958. new OracleParameter(":groutinglinedetailid",GroutingLineDetailID),
  13959. new OracleParameter(":specialRepairflag",SpecialRepairflag),
  13960. new OracleParameter(":logoID",logoID),
  13961. };
  13962. #endregion
  13963. foreach (OracleParameter para in paras)
  13964. {
  13965. if (string.IsNullOrEmpty(para.Value + ""))
  13966. {
  13967. para.Value = DBNull.Value;
  13968. }
  13969. }
  13970. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  13971. OutSpecialRepairflag = returnVal;
  13972. // 失败
  13973. if (result != Constant.INT_IS_ONE)
  13974. {
  13975. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  13976. }
  13977. // 成功返回null
  13978. return null;
  13979. }
  13980. #region 保存半检登记
  13981. /// <summary>
  13982. /// 保存半检登记
  13983. /// </summary>
  13984. /// <param name="entity">半检实体类</param>
  13985. /// <param name="sUserInfo">用户基本信息</param>
  13986. /// <returns>ServiceResultEntity</returns>
  13987. /// <remarks>
  13988. /// 王鑫 2016.06.27 新建
  13989. /// </remarks>
  13990. public static ServiceResultEntity AddSemiCheck(SemiCheckEntity[] entityobj, SUserInfo sUserInfo)
  13991. {
  13992. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  13993. oracleTrConn.IgnoreCase = false;
  13994. ServiceResultEntity resultEntity = new ServiceResultEntity();
  13995. try
  13996. {
  13997. oracleTrConn.Connect();
  13998. SemiCheckEntity entity = entityobj[0];
  13999. string errMsg = "";
  14000. if (entity.SemiCheckCategory == 1) // 半检登记
  14001. {
  14002. errMsg = AddNormalSemiCheck(oracleTrConn, entity, sUserInfo);
  14003. }
  14004. else if (entity.SemiCheckCategory == 2)// 复检登记
  14005. {
  14006. errMsg = AddReSemiCheck(oracleTrConn, entity, sUserInfo);
  14007. }
  14008. else if (entity.SemiCheckCategory == 3)// 撤销复检
  14009. {
  14010. errMsg = AddCancelSemiCheck(oracleTrConn, entity, sUserInfo);
  14011. }
  14012. // 没有错误 提交事务
  14013. if (string.IsNullOrEmpty(errMsg))
  14014. {
  14015. oracleTrConn.Commit();
  14016. }
  14017. else
  14018. {
  14019. resultEntity.Message = errMsg;
  14020. }
  14021. }
  14022. catch (Exception ex)
  14023. {
  14024. oracleTrConn.Rollback();
  14025. throw ex;
  14026. }
  14027. finally
  14028. {
  14029. // 释放资源
  14030. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  14031. {
  14032. oracleTrConn.Disconnect();
  14033. }
  14034. }
  14035. return resultEntity;
  14036. }
  14037. #endregion
  14038. /// <summary>
  14039. /// 半检数据
  14040. /// </summary>
  14041. /// <param name="oracleTrConn">数据连接对象</param>
  14042. /// <param name="entity">半检实体类</param>
  14043. /// <param name="sUserInfo">用户基本信息</param>
  14044. /// <returns>string</returns>
  14045. /// <remarks>
  14046. /// 王鑫 2016.06.27 新建
  14047. /// </remarks>
  14048. private static string AddNormalSemiCheck(IDBTransaction oracleTrConn,
  14049. SemiCheckEntity entity,
  14050. SUserInfo sUserInfo)
  14051. {
  14052. try
  14053. {
  14054. // 获得账务日期
  14055. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  14056. string errMsg = string.Empty;
  14057. // 本批采集的批次号
  14058. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  14059. // 条码
  14060. string barcode = entity.BarCode;
  14061. if (string.IsNullOrEmpty(barcode))
  14062. {
  14063. throw new Exception("传入的条码号为空");
  14064. }
  14065. // 半检工号ID
  14066. int workUserID = Convert.ToInt32(entity.SemiCheckUserID);
  14067. // 半检工号编码
  14068. string workUserCode = entity.SemiCheckUserCode;
  14069. // 查询新插入的半检数据ID
  14070. string sql = "select SEQ_PM_SemiCheck_ID.nextval from dual";
  14071. string idStr = "";
  14072. if (entity.SemiCheckEditType == 1) //新增
  14073. {
  14074. idStr = oracleTrConn.GetSqlResultToStr(sql);
  14075. }
  14076. else if (entity.SemiCheckEditType == 2) //编辑返工
  14077. {
  14078. if (entity.SemiCheckType != "0") //正常
  14079. {
  14080. idStr = oracleTrConn.GetSqlResultToStr(sql);
  14081. }
  14082. }
  14083. else if (entity.SemiCheckEditType == 3) //编辑不合格
  14084. {
  14085. if (entity.SemiCheckType != "0") //正常
  14086. {
  14087. idStr = oracleTrConn.GetSqlResultToStr(sql);
  14088. }
  14089. }
  14090. // 保存时再验证,前台已有缺陷不能为空的验证,但还是产生了无责任和缺陷记录的数据,后台保存时增加验证。
  14091. if (!string.IsNullOrEmpty(idStr) && (entity.SemiCheckDefects == null || entity.SemiCheckDefects.Count == 0))
  14092. {
  14093. errMsg = "缺陷责任记录不能为空";
  14094. return errMsg;
  14095. }
  14096. if (entity.SemiCheckEditType == 1) //新增
  14097. {
  14098. #region 校验条码有效性
  14099. errMsg = CheckBarcodeByNew(oracleTrConn, barcode, sUserInfo);
  14100. if (!string.IsNullOrEmpty(errMsg))
  14101. {
  14102. return errMsg;
  14103. }
  14104. #endregion
  14105. #region 添加半检数据
  14106. entity.SemiCheckID = Convert.ToInt32(idStr);
  14107. if (entity.SemiCheckType == "2")
  14108. {
  14109. errMsg = AddSemiCheckDataNoPass(oracleTrConn, entity, sUserInfo);
  14110. // 注浆明细 产品等级
  14111. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=13,updateuserid=:updateuserid
  14112. where barcode=:barcode";
  14113. OracleParameter[] oracleParameters = new OracleParameter[] {
  14114. new OracleParameter(":accountid", sUserInfo.AccountID),
  14115. new OracleParameter(":barcode",entity.BarCode),
  14116. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14117. };
  14118. oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14119. }
  14120. else
  14121. {
  14122. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  14123. if (entity.SemiCheckType == "1")
  14124. {
  14125. // 注浆明细 产品等级
  14126. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  14127. where barcode=:barcode";
  14128. OracleParameter[] oracleParameters = new OracleParameter[] {
  14129. new OracleParameter(":accountid", sUserInfo.AccountID),
  14130. new OracleParameter(":barcode",entity.BarCode),
  14131. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14132. };
  14133. oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14134. }
  14135. else
  14136. {
  14137. // 注浆明细 产品等级
  14138. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  14139. where barcode=:barcode";
  14140. OracleParameter[] oracleParameters = new OracleParameter[] {
  14141. new OracleParameter(":accountid", sUserInfo.AccountID),
  14142. new OracleParameter(":barcode",entity.BarCode),
  14143. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14144. };
  14145. oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14146. }
  14147. }
  14148. if (!string.IsNullOrEmpty(errMsg))
  14149. {
  14150. return errMsg;
  14151. }
  14152. #endregion
  14153. #region 条码有缺陷
  14154. #region 是次品 添加废弃产品
  14155. string ResponProcedureidStr = "";
  14156. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  14157. {
  14158. #region 添加废弃产品
  14159. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  14160. #region 属性赋值
  14161. scrapProduct.BarCode = entity.BarCode;
  14162. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  14163. // 不能责任人吗? TODO 单独责任时,没有插入废品数据。
  14164. //scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  14165. scrapProduct.ResponType = (int)Constant.ScrapResponType.Person;
  14166. scrapProduct.ScrapDate = accountDate;// sysdate
  14167. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  14168. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  14169. scrapProduct.Auditor = sUserInfo.UserID;
  14170. scrapProduct.AuditlDate = accountDate;// sysdate
  14171. scrapProduct.AccountDate = accountDate;
  14172. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  14173. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  14174. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14175. {
  14176. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  14177. }
  14178. scrapProduct.GoodsLevelTypeID = 13;
  14179. //scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  14180. // 查询新插入的废弃ID
  14181. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  14182. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  14183. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  14184. scrapProduct.ScrapType = 2;
  14185. #endregion
  14186. // 保存报废
  14187. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  14188. // 保存失败
  14189. if (!string.IsNullOrEmpty(errMsg))
  14190. {
  14191. return errMsg;
  14192. }
  14193. #endregion
  14194. }
  14195. #endregion
  14196. // 存在缺陷 插入缺陷表
  14197. if (entity.SemiCheckDefects != null)
  14198. {
  14199. int row = 0;
  14200. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  14201. {
  14202. if (row == 0)
  14203. {
  14204. #region 保存缺陷
  14205. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  14206. semiCheckDefect.ScrapResponFlag
  14207. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  14208. // 保存缺陷
  14209. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  14210. if (!string.IsNullOrEmpty(errMsg))
  14211. {
  14212. return errMsg;
  14213. }
  14214. #endregion
  14215. #region 是不合格 添加废弃责任工序
  14216. if (entity.SemiCheckType == "2")
  14217. {
  14218. //if (semiCheckDefect.DefectProcedureID != null)
  14219. {
  14220. #region 添加责任工序
  14221. ResponProcedureEntity responProce = new ResponProcedureEntity();
  14222. // 新建-不合格 获取生产线及生产数据ID
  14223. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  14224. OracleParameter[] oracleParameters = new OracleParameter[] {
  14225. new OracleParameter(":barcode",entity.BarCode),
  14226. };
  14227. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  14228. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14229. {
  14230. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  14231. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  14232. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  14233. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  14234. }
  14235. //新建-不合格 获取生产线及生产数据ID end
  14236. #region 属性赋值
  14237. responProce.BarCode = entity.BarCode;
  14238. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  14239. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  14240. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  14241. responProce.UserID = semiCheckDefect.DefectUserID;
  14242. responProce.UserCode = semiCheckDefect.DefectUserCode;
  14243. responProce.UserName = semiCheckDefect.DefectUserName;
  14244. responProce.Remarks = semiCheckDefect.Remarks;
  14245. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  14246. #endregion
  14247. // 保存责任工序
  14248. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  14249. // 保存失败
  14250. if (!string.IsNullOrEmpty(errMsg))
  14251. {
  14252. return errMsg;
  14253. }
  14254. #endregion
  14255. }
  14256. }
  14257. #endregion
  14258. }
  14259. row++;
  14260. }
  14261. }
  14262. #endregion
  14263. #region 条码是不合格 删除在产产品数据
  14264. if (entity.SemiCheckType == "2") //新建时不合格
  14265. {
  14266. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  14267. sql = @"update TP_PM_InProduction set GoodsLevelID=
  14268. (
  14269. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  14270. )
  14271. ,GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  14272. where barcode=:barcode";
  14273. OracleParameter[] oracleParameters = new OracleParameter[] {
  14274. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  14275. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  14276. new OracleParameter(":accountid",sUserInfo.AccountID),
  14277. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  14278. new OracleParameter(":barcode",entity.BarCode),
  14279. // new OracleParameter(":createuserid",sUserInfo.UserID),
  14280. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14281. };
  14282. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14283. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  14284. string sqlInsert = @"insert into TP_PM_InProductionTrash
  14285. (
  14286. BarCode,
  14287. ProductionLineID,
  14288. ProductionLineCode,
  14289. ProductionLineName,
  14290. ProcedureModel,
  14291. ModelType,
  14292. DefectFlag,
  14293. ReworkProcedureID,
  14294. IsPublicBody,
  14295. IsReFire,
  14296. GoodsLevelID,
  14297. GoodsLevelTypeID,
  14298. GoodsID,
  14299. GoodsCode,
  14300. GoodsName,
  14301. UserID,
  14302. GroutingDailyID,
  14303. GroutingDailyDetailID,
  14304. GroutingDate,
  14305. GroutingLineID,
  14306. GroutingLineCode,
  14307. GroutingLineName,
  14308. GMouldTypeID,
  14309. CanManyTimes,
  14310. GroutingLineDetailID,
  14311. GroutingMouldCode,
  14312. MouldCode,
  14313. GroutingUserID,
  14314. GroutingUserCode,
  14315. GroutingNum,
  14316. Remarks,
  14317. KilnID,
  14318. KilnCode,
  14319. KilnName,
  14320. KilnCarID,
  14321. KilnCarCode,
  14322. KilnCarName,
  14323. KilnCarBatchNo,
  14324. KilnCarPosition,
  14325. AccountID,
  14326. ValueFlag,
  14327. CreateUserID,
  14328. UpdateUserID,
  14329. SpecialRepairflag,
  14330. FlowProcedureID,
  14331. FlowProcedureTime,
  14332. ProcedureID,
  14333. ProcedureTime,
  14334. ProductionDataID,
  14335. logoid,
  14336. ISREWORKFLAG, SEMICHECKID
  14337. )
  14338. select
  14339. BarCode,
  14340. ProductionLineID,
  14341. ProductionLineCode,
  14342. ProductionLineName,
  14343. ProcedureModel,
  14344. ModelType,
  14345. DefectFlag,
  14346. ReworkProcedureID,
  14347. IsPublicBody,
  14348. IsReFire,
  14349. -- GoodsLevelID,
  14350. --GoodsLevelTypeID,
  14351. (
  14352. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  14353. )
  14354. ,13,
  14355. GoodsID,
  14356. GoodsCode,
  14357. GoodsName,
  14358. UserID,
  14359. GroutingDailyID,
  14360. GroutingDailyDetailID,
  14361. GroutingDate,
  14362. GroutingLineID,
  14363. GroutingLineCode,
  14364. GroutingLineName,
  14365. GMouldTypeID,
  14366. CanManyTimes,
  14367. GroutingLineDetailID,
  14368. GroutingMouldCode,
  14369. MouldCode,
  14370. GroutingUserID,
  14371. GroutingUserCode,
  14372. GroutingNum,
  14373. Remarks,
  14374. KilnID,
  14375. KilnCode,
  14376. KilnName,
  14377. KilnCarID,
  14378. KilnCarCode,
  14379. KilnCarName,
  14380. KilnCarBatchNo,
  14381. KilnCarPosition,
  14382. AccountID,
  14383. ValueFlag,
  14384. :CreateUserID,
  14385. :UpdateUserID,
  14386. SpecialRepairflag,
  14387. FlowProcedureID,
  14388. FlowProcedureTime,
  14389. FlowProcedureID,
  14390. ProcedureTime,
  14391. ProductionDataID,
  14392. logoid,
  14393. ISREWORKFLAG, SEMICHECKID
  14394. from TP_PM_InProduction
  14395. where barcode=:barcode
  14396. ";
  14397. oracleParameters = new OracleParameter[] {
  14398. new OracleParameter(":barcode",entity.BarCode),
  14399. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  14400. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  14401. new OracleParameter(":accountid",sUserInfo.AccountID),
  14402. };
  14403. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  14404. // 删除在产数据
  14405. sql = "delete tp_pm_inproduction where barcode = :barcode";
  14406. oracleParameters = new OracleParameter[] {
  14407. new OracleParameter(":barcode",entity.BarCode),
  14408. };
  14409. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14410. }
  14411. else if (entity.SemiCheckType == "1") //返工
  14412. {
  14413. sql = @"update TP_PM_InProduction set GoodsLevelTypeID=2,IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  14414. where barcode=:barcode";
  14415. OracleParameter[] oracleParameters = new OracleParameter[] {
  14416. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  14417. new OracleParameter(":barcode",entity.BarCode),
  14418. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14419. };
  14420. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14421. }
  14422. #endregion
  14423. }
  14424. else if (entity.SemiCheckEditType == 2) //编辑返工
  14425. {
  14426. #region 校验条码有效性
  14427. errMsg = CheckBarcodeByEditRework(oracleTrConn, barcode, sUserInfo);
  14428. if (!string.IsNullOrEmpty(errMsg))
  14429. {
  14430. return errMsg;
  14431. }
  14432. #endregion
  14433. #region 删除当前半检数据
  14434. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  14435. if (!string.IsNullOrEmpty(errMsg))
  14436. {
  14437. return errMsg;
  14438. }
  14439. #endregion
  14440. if (entity.SemiCheckType != "0") //正常
  14441. {
  14442. #region 添加半检数据
  14443. entity.SemiCheckID = Convert.ToInt32(idStr);
  14444. errMsg = AddSemiCheckData(oracleTrConn, entity, sUserInfo);
  14445. if (!string.IsNullOrEmpty(errMsg))
  14446. {
  14447. return errMsg;
  14448. }
  14449. #endregion
  14450. }
  14451. #region 条码有缺陷
  14452. #region 是次品 添加废弃产品
  14453. string ResponProcedureidStr = "";
  14454. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  14455. {
  14456. #region 添加废弃产品
  14457. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  14458. #region 属性赋值
  14459. scrapProduct.BarCode = entity.BarCode;
  14460. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  14461. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  14462. scrapProduct.ScrapDate = accountDate;
  14463. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  14464. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  14465. scrapProduct.Auditor = sUserInfo.UserID;
  14466. scrapProduct.AuditlDate = accountDate;
  14467. scrapProduct.AccountDate = accountDate;
  14468. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  14469. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  14470. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  14471. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  14472. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14473. {
  14474. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  14475. }
  14476. scrapProduct.GoodsLevelTypeID = 13;
  14477. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  14478. // 查询新插入的废弃ID
  14479. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  14480. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  14481. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  14482. scrapProduct.ScrapType = 2;
  14483. #endregion
  14484. // 保存报废
  14485. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  14486. // 保存失败
  14487. if (!string.IsNullOrEmpty(errMsg))
  14488. {
  14489. return errMsg;
  14490. }
  14491. #endregion
  14492. }
  14493. #endregion
  14494. // 存在缺陷 插入缺陷表
  14495. if (entity.SemiCheckDefects != null)
  14496. {
  14497. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  14498. {
  14499. #region 保存缺陷
  14500. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  14501. semiCheckDefect.ScrapResponFlag
  14502. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  14503. // 保存缺陷
  14504. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  14505. if (!string.IsNullOrEmpty(errMsg))
  14506. {
  14507. return errMsg;
  14508. }
  14509. #endregion
  14510. #region 是不合格 添加废弃责任工序
  14511. if (entity.SemiCheckType == "2")
  14512. {
  14513. //if (semiCheckDefect.DefectProcedureID != null)
  14514. {
  14515. #region 添加责任工序
  14516. ResponProcedureEntity responProce = new ResponProcedureEntity();
  14517. // 获取生产线及生产数据ID
  14518. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  14519. OracleParameter[] oracleParameters = new OracleParameter[] {
  14520. new OracleParameter(":barcode",entity.BarCode),
  14521. };
  14522. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  14523. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14524. {
  14525. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  14526. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  14527. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  14528. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  14529. }
  14530. //获取生产线及生产数据ID end
  14531. #region 属性赋值
  14532. responProce.BarCode = entity.BarCode;
  14533. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  14534. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  14535. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  14536. responProce.UserID = semiCheckDefect.DefectUserID;
  14537. responProce.UserCode = semiCheckDefect.DefectUserCode;
  14538. responProce.UserName = semiCheckDefect.DefectUserName;
  14539. responProce.Remarks = semiCheckDefect.Remarks;
  14540. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  14541. #endregion
  14542. // 保存责任工序
  14543. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  14544. // 保存失败
  14545. if (!string.IsNullOrEmpty(errMsg))
  14546. {
  14547. return errMsg;
  14548. }
  14549. #endregion
  14550. }
  14551. }
  14552. #endregion
  14553. }
  14554. }
  14555. #endregion
  14556. #region 条码是不合格 删除在产产品数据
  14557. if (entity.SemiCheckType == "2") //编辑时不合格
  14558. {
  14559. // 1.在产表产品设置产品等级【13不合格】,半检登记ID=记录的半检登记ID。
  14560. sql = @"update TP_PM_InProduction set GoodsLevelID= (
  14561. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  14562. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID,IsReworkFlag=0,
  14563. updateuserid=:updateuserid
  14564. where barcode=:barcode";
  14565. OracleParameter[] oracleParameters = new OracleParameter[] {
  14566. //new OracleParameter(":GoodsLevelID",entity.GoodsLevelID),
  14567. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  14568. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  14569. new OracleParameter(":barcode",entity.BarCode),
  14570. //new OracleParameter(":createuserid",sUserInfo.UserID),
  14571. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14572. new OracleParameter(":accountid",sUserInfo.AccountID),
  14573. };
  14574. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14575. // 注浆明细 产品等级
  14576. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=13,updateuserid=:updateuserid
  14577. where barcode=:barcode";
  14578. oracleParameters = new OracleParameter[] {
  14579. new OracleParameter(":accountid", sUserInfo.AccountID),
  14580. new OracleParameter(":barcode",entity.BarCode),
  14581. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14582. };
  14583. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14584. // 2.将在产数据保存到在产回收站表中(产品等级【13不合格】,半检登记ID=记录的半检登记ID)。
  14585. string sqlInsert = @"insert into TP_PM_InProductionTrash
  14586. (
  14587. BarCode,
  14588. ProductionLineID,
  14589. ProductionLineCode,
  14590. ProductionLineName,
  14591. ProcedureModel,
  14592. ModelType,
  14593. DefectFlag,
  14594. ReworkProcedureID,
  14595. IsPublicBody,
  14596. IsReFire,
  14597. GoodsLevelID,
  14598. GoodsLevelTypeID,
  14599. GoodsID,
  14600. GoodsCode,
  14601. GoodsName,
  14602. UserID,
  14603. GroutingDailyID,
  14604. GroutingDailyDetailID,
  14605. GroutingDate,
  14606. GroutingLineID,
  14607. GroutingLineCode,
  14608. GroutingLineName,
  14609. GMouldTypeID,
  14610. CanManyTimes,
  14611. GroutingLineDetailID,
  14612. GroutingMouldCode,
  14613. MouldCode,
  14614. GroutingUserID,
  14615. GroutingUserCode,
  14616. GroutingNum,
  14617. Remarks,
  14618. KilnID,
  14619. KilnCode,
  14620. KilnName,
  14621. KilnCarID,
  14622. KilnCarCode,
  14623. KilnCarName,
  14624. KilnCarBatchNo,
  14625. KilnCarPosition,
  14626. AccountID,
  14627. ValueFlag,
  14628. CreateUserID,
  14629. UpdateUserID,
  14630. SpecialRepairflag,
  14631. FlowProcedureID,
  14632. FlowProcedureTime,
  14633. ProcedureID,
  14634. ProcedureTime,
  14635. ProductionDataID,
  14636. logoid, SEMICHECKID
  14637. )
  14638. select
  14639. BarCode,
  14640. ProductionLineID,
  14641. ProductionLineCode,
  14642. ProductionLineName,
  14643. ProcedureModel,
  14644. ModelType,
  14645. DefectFlag,
  14646. ReworkProcedureID,
  14647. IsPublicBody,
  14648. IsReFire,
  14649. -- GoodsLevelID,
  14650. --GoodsLevelTypeID,
  14651. (
  14652. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  14653. )
  14654. ,13,
  14655. GoodsID,
  14656. GoodsCode,
  14657. GoodsName,
  14658. UserID,
  14659. GroutingDailyID,
  14660. GroutingDailyDetailID,
  14661. GroutingDate,
  14662. GroutingLineID,
  14663. GroutingLineCode,
  14664. GroutingLineName,
  14665. GMouldTypeID,
  14666. CanManyTimes,
  14667. GroutingLineDetailID,
  14668. GroutingMouldCode,
  14669. MouldCode,
  14670. GroutingUserID,
  14671. GroutingUserCode,
  14672. GroutingNum,
  14673. Remarks,
  14674. KilnID,
  14675. KilnCode,
  14676. KilnName,
  14677. KilnCarID,
  14678. KilnCarCode,
  14679. KilnCarName,
  14680. KilnCarBatchNo,
  14681. KilnCarPosition,
  14682. AccountID,
  14683. ValueFlag,
  14684. :CreateUserID,
  14685. :UpdateUserID,
  14686. SpecialRepairflag,
  14687. FlowProcedureID,
  14688. FlowProcedureTime,
  14689. FlowProcedureID,
  14690. ProcedureTime,
  14691. ProductionDataID,
  14692. logoid,
  14693. :SemiCheckID
  14694. from TP_PM_InProduction
  14695. where barcode=:barcode
  14696. ";
  14697. oracleParameters = new OracleParameter[] {
  14698. new OracleParameter(":barcode",entity.BarCode),
  14699. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  14700. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  14701. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  14702. new OracleParameter(":accountid",sUserInfo.AccountID),
  14703. };
  14704. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  14705. // 删除在产数据
  14706. sql = "delete tp_pm_inproduction where barcode = :barcode";
  14707. oracleParameters = new OracleParameter[] {
  14708. new OracleParameter(":barcode",entity.BarCode),
  14709. };
  14710. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14711. }
  14712. else if (entity.SemiCheckType == "1") //返工
  14713. {
  14714. sql = @"update TP_PM_InProduction set GoodsLevelTypeID=2,IsReworkFlag=1,SemiCheckID=:SemiCheckID,updateuserid=:updateuserid
  14715. where barcode=:barcode";
  14716. OracleParameter[] oracleParameters = new OracleParameter[] {
  14717. new OracleParameter(":SemiCheckID",Convert.ToInt32(idStr)),
  14718. new OracleParameter(":barcode",entity.BarCode),
  14719. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14720. };
  14721. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14722. // 注浆明细 产品等级
  14723. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  14724. where barcode=:barcode";
  14725. oracleParameters = new OracleParameter[] {
  14726. new OracleParameter(":accountid", sUserInfo.AccountID),
  14727. new OracleParameter(":barcode",entity.BarCode),
  14728. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14729. };
  14730. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14731. }
  14732. else if (entity.SemiCheckType == "0") //正常
  14733. {
  14734. sql = @"update TP_PM_InProduction set GoodsLevelTypeID=1,IsReworkFlag=0,SemiCheckID=null,updateuserid=:updateuserid
  14735. where barcode=:barcode";
  14736. OracleParameter[] oracleParameters = new OracleParameter[] {
  14737. new OracleParameter(":barcode",entity.BarCode),
  14738. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14739. };
  14740. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14741. // 注浆明细 产品等级
  14742. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  14743. where barcode=:barcode";
  14744. oracleParameters = new OracleParameter[] {
  14745. new OracleParameter(":accountid", sUserInfo.AccountID),
  14746. new OracleParameter(":barcode",entity.BarCode),
  14747. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14748. };
  14749. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14750. }
  14751. #endregion
  14752. }
  14753. else if (entity.SemiCheckEditType == 3) //编辑不合格
  14754. {
  14755. #region 校验条码有效性
  14756. errMsg = CheckBarcodeByEditNoPass(oracleTrConn, barcode, sUserInfo);
  14757. if (!string.IsNullOrEmpty(errMsg))
  14758. {
  14759. return errMsg;
  14760. }
  14761. #endregion
  14762. #region 删除当前半检数据
  14763. errMsg = SetSemiCheckDataValueFlag(oracleTrConn, entity, sUserInfo);
  14764. if (!string.IsNullOrEmpty(errMsg))
  14765. {
  14766. return errMsg;
  14767. }
  14768. #endregion
  14769. if (entity.SemiCheckType != "0") //正常
  14770. {
  14771. #region 添加半检数据
  14772. entity.SemiCheckID = Convert.ToInt32(idStr);
  14773. errMsg = AddSemiCheckDataTrash(oracleTrConn, entity, sUserInfo);
  14774. if (!string.IsNullOrEmpty(errMsg))
  14775. {
  14776. return errMsg;
  14777. }
  14778. #endregion
  14779. }
  14780. #region 条码是不合格 删除在产产品数据
  14781. OracleParameter[] spParameters = null;
  14782. int spResult = 0;
  14783. if (entity.SemiCheckType == "2") //编辑时不合格
  14784. {
  14785. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  14786. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  14787. " from TP_PM_ScrapProduct sp\n" +
  14788. " where sp.barcode = :barcode\n" +
  14789. " and sp.auditstatus = 1\n" +
  14790. " and sp.valueflag = '1'\n" +
  14791. " and sp.scraptype = '2'";
  14792. spParameters = new OracleParameter[] {
  14793. new OracleParameter(":barcode",entity.BarCode),
  14794. };
  14795. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  14796. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  14797. spParameters = new OracleParameter[] {
  14798. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14799. new OracleParameter(":scrapproductid",scrapproductid),
  14800. };
  14801. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  14802. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  14803. //oracleParameters = new OracleParameter[] {
  14804. // new OracleParameter(":barcode",entity.BarCode),
  14805. //};
  14806. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  14807. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  14808. //OracleParameter[] oracleParameters = new OracleParameter[] {
  14809. // new OracleParameter(":barcode",entity.BarCode),
  14810. //};
  14811. //int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14812. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  14813. //oracleParameters = new OracleParameter[] {
  14814. // new OracleParameter(":barcode",entity.BarCode),
  14815. //};
  14816. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14817. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  14818. ////oracleParameters = new OracleParameter[] {
  14819. //// new OracleParameter(":barcode",entity.BarCode),
  14820. ////};
  14821. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14822. #endregion
  14823. #region 2.修改在产回收站表中的数据(产品等级【13不合格】,半检登记ID=新记录的半检登记ID)。
  14824. sql = @"update TP_PM_InProductionTrash set GoodsLevelID= (
  14825. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid
  14826. ),GoodsLevelTypeID=13,SemiCheckID=:SemiCheckID where barcode=:barcode";
  14827. OracleParameter[] oracleParameters = new OracleParameter[] {
  14828. new OracleParameter(":barcode",entity.BarCode),
  14829. new OracleParameter(":accountid",sUserInfo.AccountID),
  14830. //new OracleParameter(":GoodsLevelTypeID",entity.GoodsLevelTypeID),
  14831. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  14832. };
  14833. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14834. // 注浆明细 产品等级
  14835. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=13,updateuserid=:updateuserid
  14836. where barcode=:barcode";
  14837. oracleParameters = new OracleParameter[] {
  14838. new OracleParameter(":accountid", sUserInfo.AccountID),
  14839. new OracleParameter(":barcode",entity.BarCode),
  14840. new OracleParameter(":updateuserid",sUserInfo.UserID),
  14841. };
  14842. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  14843. #endregion
  14844. #region 条码有缺陷
  14845. #region 是次品 添加废弃产品
  14846. string ResponProcedureidStr = "";
  14847. if (entity.SemiCheckType == "2") //新建时不合格,直接报损
  14848. {
  14849. #region 添加废弃产品
  14850. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  14851. #region 属性赋值
  14852. scrapProduct.BarCode = entity.BarCode;
  14853. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  14854. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  14855. scrapProduct.ScrapDate = accountDate;
  14856. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASS;
  14857. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  14858. scrapProduct.Auditor = sUserInfo.UserID;
  14859. scrapProduct.AuditlDate = accountDate;
  14860. scrapProduct.AccountDate = accountDate;
  14861. sql = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=" + sUserInfo.AccountID;
  14862. DataSet ds = oracleTrConn.GetSqlResultToDs(sql);
  14863. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14864. {
  14865. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  14866. }
  14867. scrapProduct.GoodsLevelTypeID = 13;
  14868. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  14869. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  14870. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  14871. // 查询新插入的废弃ID
  14872. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  14873. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  14874. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  14875. scrapProduct.ScrapType = 2;
  14876. #endregion
  14877. // 保存报废
  14878. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  14879. // 保存失败
  14880. if (!string.IsNullOrEmpty(errMsg))
  14881. {
  14882. return errMsg;
  14883. }
  14884. #endregion
  14885. }
  14886. #endregion
  14887. // 存在缺陷 插入缺陷表
  14888. if (entity.SemiCheckDefects != null)
  14889. {
  14890. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  14891. {
  14892. #region 保存缺陷
  14893. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  14894. semiCheckDefect.ScrapResponFlag
  14895. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  14896. // 保存缺陷
  14897. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  14898. if (!string.IsNullOrEmpty(errMsg))
  14899. {
  14900. return errMsg;
  14901. }
  14902. #endregion
  14903. #region 是不合格 添加废弃责任工序
  14904. if (entity.SemiCheckType == "2")
  14905. {
  14906. //if (semiCheckDefect.DefectProcedureID != null)
  14907. {
  14908. #region 添加责任工序
  14909. ResponProcedureEntity responProce = new ResponProcedureEntity();
  14910. // 取生产线及生产数据ID
  14911. sql = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProductionTrash where barcode=:barcode";
  14912. oracleParameters = new OracleParameter[] {
  14913. new OracleParameter(":barcode",entity.BarCode),
  14914. };
  14915. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, oracleParameters);
  14916. if (ds != null && ds.Tables[0].Rows.Count > 0)
  14917. {
  14918. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  14919. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  14920. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  14921. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  14922. }
  14923. //获取生产线及生产数据ID end
  14924. #region 属性赋值
  14925. responProce.BarCode = entity.BarCode;
  14926. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  14927. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  14928. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  14929. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  14930. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  14931. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  14932. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  14933. responProce.UserID = semiCheckDefect.DefectUserID;
  14934. responProce.UserCode = semiCheckDefect.DefectUserCode;
  14935. responProce.UserName = semiCheckDefect.DefectUserName;
  14936. responProce.Remarks = semiCheckDefect.Remarks;
  14937. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  14938. #endregion
  14939. // 保存责任工序
  14940. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  14941. // 保存失败
  14942. if (!string.IsNullOrEmpty(errMsg))
  14943. {
  14944. return errMsg;
  14945. }
  14946. #endregion
  14947. }
  14948. }
  14949. #endregion
  14950. }
  14951. }
  14952. #endregion
  14953. }
  14954. else if (entity.SemiCheckType == "1") //返工
  14955. {
  14956. #region 1.从在产回收站中把数据恢复到在产表中。
  14957. string sqlInsert = @"insert into TP_PM_InProduction
  14958. (
  14959. BarCode,
  14960. ProductionLineID,
  14961. ProductionLineCode,
  14962. ProductionLineName,
  14963. ProcedureModel,
  14964. ModelType,
  14965. DefectFlag,
  14966. ReworkProcedureID,
  14967. IsPublicBody,
  14968. IsReFire,
  14969. GoodsLevelID,
  14970. GoodsLevelTypeID,
  14971. GoodsID,
  14972. GoodsCode,
  14973. GoodsName,
  14974. UserID,
  14975. GroutingDailyID,
  14976. GroutingDailyDetailID,
  14977. GroutingDate,
  14978. GroutingLineID,
  14979. GroutingLineCode,
  14980. GroutingLineName,
  14981. GMouldTypeID,
  14982. CanManyTimes,
  14983. GroutingLineDetailID,
  14984. GroutingMouldCode,
  14985. MouldCode,
  14986. GroutingUserID,
  14987. GroutingUserCode,
  14988. GroutingNum,
  14989. Remarks,
  14990. KilnID,
  14991. KilnCode,
  14992. KilnName,
  14993. KilnCarID,
  14994. KilnCarCode,
  14995. KilnCarName,
  14996. KilnCarBatchNo,
  14997. KilnCarPosition,
  14998. AccountID,
  14999. ValueFlag,
  15000. CreateUserID,
  15001. UpdateUserID,
  15002. SpecialRepairflag,
  15003. FlowProcedureID,
  15004. FlowProcedureTime,
  15005. ProcedureID,
  15006. ProcedureTime,
  15007. ProductionDataID,
  15008. logoid,
  15009. IsReworkFlag,
  15010. SemiCheckID
  15011. )
  15012. select
  15013. BarCode,
  15014. ProductionLineID,
  15015. ProductionLineCode,
  15016. ProductionLineName,
  15017. ProcedureModel,
  15018. ModelType,
  15019. DefectFlag,
  15020. ReworkProcedureID,
  15021. IsPublicBody,
  15022. IsReFire,
  15023. null,
  15024. 2,
  15025. GoodsID,
  15026. GoodsCode,
  15027. GoodsName,
  15028. UserID,
  15029. GroutingDailyID,
  15030. GroutingDailyDetailID,
  15031. GroutingDate,
  15032. GroutingLineID,
  15033. GroutingLineCode,
  15034. GroutingLineName,
  15035. GMouldTypeID,
  15036. CanManyTimes,
  15037. GroutingLineDetailID,
  15038. GroutingMouldCode,
  15039. MouldCode,
  15040. GroutingUserID,
  15041. GroutingUserCode,
  15042. GroutingNum,
  15043. Remarks,
  15044. KilnID,
  15045. KilnCode,
  15046. KilnName,
  15047. KilnCarID,
  15048. KilnCarCode,
  15049. KilnCarName,
  15050. KilnCarBatchNo,
  15051. KilnCarPosition,
  15052. AccountID,
  15053. ValueFlag,
  15054. :CreateUserID,
  15055. :UpdateUserID,
  15056. SpecialRepairflag,
  15057. FlowProcedureID,
  15058. FlowProcedureTime,
  15059. FlowProcedureID,
  15060. ProcedureTime,
  15061. ProductionDataID,
  15062. logoid,
  15063. 1,
  15064. :SemiCheckID
  15065. from TP_PM_InProductionTrash
  15066. where barcode=:barcode
  15067. ";
  15068. OracleParameter[] oracleParameters = new OracleParameter[] {
  15069. new OracleParameter(":barcode",entity.BarCode),
  15070. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  15071. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  15072. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  15073. };
  15074. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  15075. // 注浆明细 产品等级
  15076. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  15077. where barcode=:barcode";
  15078. oracleParameters = new OracleParameter[] {
  15079. new OracleParameter(":accountid", sUserInfo.AccountID),
  15080. new OracleParameter(":barcode",entity.BarCode),
  15081. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15082. };
  15083. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15084. #endregion
  15085. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  15086. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  15087. " from TP_PM_ScrapProduct sp\n" +
  15088. " where sp.barcode = :barcode\n" +
  15089. " and sp.auditstatus = 1\n" +
  15090. " and sp.valueflag = '1'\n" +
  15091. " and sp.scraptype = '2'";
  15092. spParameters = new OracleParameter[] {
  15093. new OracleParameter(":barcode",entity.BarCode),
  15094. };
  15095. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  15096. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  15097. spParameters = new OracleParameter[] {
  15098. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15099. new OracleParameter(":scrapproductid",scrapproductid),
  15100. };
  15101. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  15102. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  15103. //oracleParameters = new OracleParameter[] {
  15104. // new OracleParameter(":barcode",entity.BarCode),
  15105. //};
  15106. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  15107. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  15108. //oracleParameters = new OracleParameter[] {
  15109. // new OracleParameter(":barcode",entity.BarCode),
  15110. //};
  15111. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15112. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  15113. //oracleParameters = new OracleParameter[] {
  15114. // new OracleParameter(":barcode",entity.BarCode),
  15115. //};
  15116. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15117. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  15118. ////oracleParameters = new OracleParameter[] {
  15119. //// new OracleParameter(":barcode",entity.BarCode),
  15120. ////};
  15121. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15122. #endregion
  15123. #region 3.删除在产产品数据
  15124. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  15125. oracleParameters = new OracleParameter[] {
  15126. new OracleParameter(":barcode",entity.BarCode),
  15127. };
  15128. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15129. #endregion
  15130. #region 4.更新半检数据产品分级
  15131. sql = "update TP_PM_SemiCheck set GoodsLevelID=null,GoodsLevelTypeID=null where SemiCheckID=:SemiCheckID";
  15132. oracleParameters = new OracleParameter[] {
  15133. new OracleParameter(":SemiCheckID",idStr),
  15134. };
  15135. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15136. #endregion
  15137. #region 存在缺陷 插入缺陷表
  15138. if (entity.SemiCheckDefects != null)
  15139. {
  15140. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  15141. {
  15142. #region 保存缺陷
  15143. semiCheckDefect.SemiCheckID = Convert.ToInt32(idStr);
  15144. semiCheckDefect.ScrapResponFlag
  15145. = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  15146. // 保存缺陷
  15147. errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  15148. if (!string.IsNullOrEmpty(errMsg))
  15149. {
  15150. return errMsg;
  15151. }
  15152. #endregion
  15153. }
  15154. }
  15155. #endregion
  15156. }
  15157. else if (entity.SemiCheckType == "0") //正常
  15158. {
  15159. #region 1.从在产回收站中把数据恢复到在产表中。
  15160. string sqlInsert = @"insert into TP_PM_InProduction
  15161. (
  15162. BarCode,
  15163. ProductionLineID,
  15164. ProductionLineCode,
  15165. ProductionLineName,
  15166. ProcedureModel,
  15167. ModelType,
  15168. DefectFlag,
  15169. ReworkProcedureID,
  15170. IsPublicBody,
  15171. IsReFire,
  15172. GoodsLevelID,
  15173. GoodsLevelTypeID,
  15174. GoodsID,
  15175. GoodsCode,
  15176. GoodsName,
  15177. UserID,
  15178. GroutingDailyID,
  15179. GroutingDailyDetailID,
  15180. GroutingDate,
  15181. GroutingLineID,
  15182. GroutingLineCode,
  15183. GroutingLineName,
  15184. GMouldTypeID,
  15185. CanManyTimes,
  15186. GroutingLineDetailID,
  15187. GroutingMouldCode,
  15188. MouldCode,
  15189. GroutingUserID,
  15190. GroutingUserCode,
  15191. GroutingNum,
  15192. Remarks,
  15193. KilnID,
  15194. KilnCode,
  15195. KilnName,
  15196. KilnCarID,
  15197. KilnCarCode,
  15198. KilnCarName,
  15199. KilnCarBatchNo,
  15200. KilnCarPosition,
  15201. AccountID,
  15202. ValueFlag,
  15203. CreateUserID,
  15204. UpdateUserID,
  15205. SpecialRepairflag,
  15206. FlowProcedureID,
  15207. FlowProcedureTime,
  15208. ProcedureID,
  15209. ProcedureTime,
  15210. ProductionDataID,
  15211. logoid,
  15212. IsReworkFlag,
  15213. SemiCheckID
  15214. )
  15215. select
  15216. BarCode,
  15217. ProductionLineID,
  15218. ProductionLineCode,
  15219. ProductionLineName,
  15220. ProcedureModel,
  15221. ModelType,
  15222. DefectFlag,
  15223. ReworkProcedureID,
  15224. IsPublicBody,
  15225. IsReFire,
  15226. null,
  15227. 1,
  15228. GoodsID,
  15229. GoodsCode,
  15230. GoodsName,
  15231. UserID,
  15232. GroutingDailyID,
  15233. GroutingDailyDetailID,
  15234. GroutingDate,
  15235. GroutingLineID,
  15236. GroutingLineCode,
  15237. GroutingLineName,
  15238. GMouldTypeID,
  15239. CanManyTimes,
  15240. GroutingLineDetailID,
  15241. GroutingMouldCode,
  15242. MouldCode,
  15243. GroutingUserID,
  15244. GroutingUserCode,
  15245. GroutingNum,
  15246. Remarks,
  15247. KilnID,
  15248. KilnCode,
  15249. KilnName,
  15250. KilnCarID,
  15251. KilnCarCode,
  15252. KilnCarName,
  15253. KilnCarBatchNo,
  15254. KilnCarPosition,
  15255. AccountID,
  15256. ValueFlag,
  15257. :CreateUserID,
  15258. :UpdateUserID,
  15259. SpecialRepairflag,
  15260. FlowProcedureID,
  15261. FlowProcedureTime,
  15262. FlowProcedureID,
  15263. ProcedureTime,
  15264. ProductionDataID,
  15265. logoid,
  15266. 0,
  15267. null
  15268. from TP_PM_InProductionTrash
  15269. where barcode=:barcode
  15270. ";
  15271. OracleParameter[] oracleParameters = new OracleParameter[] {
  15272. new OracleParameter(":barcode",entity.BarCode),
  15273. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  15274. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  15275. };
  15276. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  15277. // 注浆明细 产品等级
  15278. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  15279. where barcode=:barcode";
  15280. oracleParameters = new OracleParameter[] {
  15281. new OracleParameter(":accountid", sUserInfo.AccountID),
  15282. new OracleParameter(":barcode",entity.BarCode),
  15283. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15284. };
  15285. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15286. #endregion
  15287. #region 2.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  15288. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  15289. " from TP_PM_ScrapProduct sp\n" +
  15290. " where sp.barcode = :barcode\n" +
  15291. " and sp.auditstatus = 1\n" +
  15292. " and sp.valueflag = '1'\n" +
  15293. " and sp.scraptype = '2'";
  15294. spParameters = new OracleParameter[] {
  15295. new OracleParameter(":barcode",entity.BarCode),
  15296. };
  15297. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  15298. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  15299. spParameters = new OracleParameter[] {
  15300. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15301. new OracleParameter(":scrapproductid",scrapproductid),
  15302. };
  15303. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  15304. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  15305. //oracleParameters = new OracleParameter[] {
  15306. // new OracleParameter(":barcode",entity.BarCode),
  15307. //};
  15308. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  15309. //sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  15310. //oracleParameters = new OracleParameter[] {
  15311. // new OracleParameter(":barcode",entity.BarCode),
  15312. //};
  15313. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15314. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  15315. //oracleParameters = new OracleParameter[] {
  15316. // new OracleParameter(":barcode",entity.BarCode),
  15317. //};
  15318. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15319. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  15320. ////oracleParameters = new OracleParameter[] {
  15321. //// new OracleParameter(":barcode",entity.BarCode),
  15322. ////};
  15323. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15324. #endregion
  15325. #region 3.删除在产回收站产品数据
  15326. sql = "delete from TP_PM_InProductionTrash where barcode=:barcode";
  15327. oracleParameters = new OracleParameter[] {
  15328. new OracleParameter(":barcode",entity.BarCode),
  15329. };
  15330. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  15331. #endregion
  15332. }
  15333. #endregion
  15334. }
  15335. return errMsg;
  15336. }
  15337. catch (Exception ex)
  15338. {
  15339. throw ex;
  15340. }
  15341. }
  15342. /// <summary>
  15343. /// 校验条码有效(新建)
  15344. /// </summary>
  15345. /// <param name="oracleTrConn">连接对象</param>
  15346. /// <param name="barcode">条码</param>
  15347. /// <param name="sUserInfo">登录用户信息</param>
  15348. /// <returns>string</returns>
  15349. /// <remarks>
  15350. /// 王鑫 2016.06.27 新建
  15351. /// </remarks>
  15352. private static string CheckBarcodeByNew(IDBTransaction oracleTrConn,
  15353. string barcode,
  15354. SUserInfo sUserInfo
  15355. )
  15356. {
  15357. try
  15358. {
  15359. OracleParameter[] paras = new OracleParameter[]{
  15360. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  15361. };
  15362. // 重复登记的问题 for update
  15363. string sql = @"
  15364. select InScrapFlag,
  15365. KilnCarID,
  15366. KilnCarName,
  15367. IsReworkFlag,
  15368. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  15369. ";
  15370. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  15371. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  15372. {
  15373. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  15374. {
  15375. return "条码[" + barcode + "]已经报损待审批";
  15376. }
  15377. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  15378. {
  15379. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  15380. }
  15381. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15382. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  15383. {
  15384. return "条码[" + barcode + "]已经半检返工中";
  15385. }
  15386. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  15387. {
  15388. return "条码[" + barcode + "]已经半检返修中";
  15389. }
  15390. }
  15391. else
  15392. {
  15393. return "条码[" + barcode + "]不在在产流程";
  15394. }
  15395. return null;
  15396. }
  15397. catch (Exception ex)
  15398. {
  15399. throw ex;
  15400. }
  15401. }
  15402. /// <summary>
  15403. /// 校验条码有效(编辑返工)
  15404. /// </summary>
  15405. /// <param name="oracleTrConn">连接对象</param>
  15406. /// <param name="barcode">条码</param>
  15407. /// <param name="sUserInfo">登录用户信息</param>
  15408. /// <returns>string</returns>
  15409. /// <remarks>
  15410. /// 王鑫 2016.06.27 新建
  15411. /// </remarks>
  15412. private static string CheckBarcodeByEditRework(IDBTransaction oracleTrConn,
  15413. string barcode,
  15414. SUserInfo sUserInfo
  15415. )
  15416. {
  15417. try
  15418. {
  15419. OracleParameter[] paras = new OracleParameter[]{
  15420. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  15421. };
  15422. // 重复登记的问题 for update
  15423. string sql = @"
  15424. select InScrapFlag,
  15425. KilnCarID,
  15426. KilnCarName,
  15427. IsReworkFlag,
  15428. SemiCheckID from TP_PM_InProduction where barcode=:barcode for update
  15429. ";
  15430. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  15431. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  15432. {
  15433. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  15434. {
  15435. return "条码[" + barcode + "]已经报损待审批";
  15436. }
  15437. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  15438. {
  15439. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  15440. }
  15441. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  15442. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1")
  15443. {
  15444. return "条码[" + barcode + "]不在返工中";
  15445. }
  15446. }
  15447. else
  15448. {
  15449. return "条码[" + barcode + "]不在在产流程";
  15450. }
  15451. return null;
  15452. }
  15453. catch (Exception ex)
  15454. {
  15455. throw ex;
  15456. }
  15457. }
  15458. /// <summary>
  15459. /// 校验条码有效(编辑不合格)
  15460. /// </summary>
  15461. /// <param name="oracleTrConn">连接对象</param>
  15462. /// <param name="barcode">条码</param>
  15463. /// <param name="sUserInfo">登录用户信息</param>
  15464. /// <returns>string</returns>
  15465. /// <remarks>
  15466. /// 王鑫 2016.06.27 新建
  15467. /// </remarks>
  15468. private static string CheckBarcodeByEditNoPass(IDBTransaction oracleTrConn,
  15469. string barcode,
  15470. SUserInfo sUserInfo
  15471. )
  15472. {
  15473. try
  15474. {
  15475. OracleParameter[] paras = new OracleParameter[]{
  15476. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  15477. };
  15478. // 重复登记的问题 for update
  15479. string sql = @" select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=13 for update";
  15480. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  15481. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  15482. {
  15483. return "条码[" + barcode + "]不在在产回收站中";
  15484. }
  15485. return null;
  15486. }
  15487. catch (Exception ex)
  15488. {
  15489. throw ex;
  15490. }
  15491. }
  15492. /// <summary>
  15493. /// 添加半成品检验数据
  15494. /// </summary>
  15495. /// <param name="oracleTrConn">连接对象</param>
  15496. /// <param name="accountDate">账务日期</param>
  15497. /// <param name="productionData">生产数据</param>
  15498. /// <param name="sUserInfo">用户基本信息</param>
  15499. /// <returns>string</returns>
  15500. /// <remarks>
  15501. /// 陈冰 2014.09.18 新建
  15502. /// </remarks>
  15503. private static string AddSemiCheckData(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  15504. {
  15505. #region SQL
  15506. string sql = "insert into tp_pm_semicheck"
  15507. + " (semicheckid,"
  15508. + " barcode,"
  15509. + " productionlineid,"
  15510. + " procedureid,"
  15511. + " proceduretime,"
  15512. + " proceduremodel,"
  15513. + " modeltype,"
  15514. + " organizationid,"
  15515. + " goodsid,"
  15516. + " goodscode,"
  15517. + " userid,"
  15518. + " usercode,"
  15519. + " productiondataid,"
  15520. + " logoid,"
  15521. + " ispublicbody,"
  15522. + " specialrepairflag,"
  15523. + " goodslevelid,"
  15524. + " goodsleveltypeid,"
  15525. + " groutingdailyid,"
  15526. + " groutingdailydetailid,"
  15527. + " groutinglineid,"
  15528. + " groutinglinecode,"
  15529. + " groutinglinename,"
  15530. + " gmouldtypeid,"
  15531. + " canmanytimes,"
  15532. + " groutinglinedetailid,"
  15533. + " groutingdate,"
  15534. + " groutingmouldcode,"
  15535. + " mouldcode,"
  15536. + " groutinguserid,"
  15537. + " groutingusercode,"
  15538. + " groutingnum,"
  15539. + " semichecktype,"
  15540. + " semicheckuserID,"
  15541. + " semicheckusercode,"
  15542. + " semichecktime,"
  15543. + " remarks,"
  15544. + " accountid,"
  15545. + " createuserid,"
  15546. + " updateuserid,"
  15547. + " reworkprocedureid,"
  15548. + " reworkprocedurecode,"
  15549. + " reworkuserid,"
  15550. + " reworkusercode"
  15551. + ")"
  15552. + " select"
  15553. + " :semicheckid,"
  15554. + " TP_PM_InProduction.barcode,"
  15555. + " TP_PM_InProduction.productionlineid,"
  15556. + " TP_PM_InProduction.procedureid,"
  15557. + " TP_PM_InProduction.proceduretime,"
  15558. + " TP_PM_InProduction.proceduremodel,"
  15559. + " TP_PM_InProduction.modeltype,"
  15560. + " tp_pc_procedure.organizationid,"
  15561. + " TP_PM_InProduction.goodsid,"
  15562. + " TP_PM_InProduction.goodscode,"
  15563. + " TP_PM_InProduction.userid,"
  15564. + " tp_mst_user.usercode,"
  15565. + " TP_PM_InProduction.productiondataid,"
  15566. + " TP_PM_InProduction.logoid,"
  15567. + " TP_PM_InProduction.ispublicbody,"
  15568. + " TP_PM_InProduction.specialrepairflag,"
  15569. + " TP_PM_InProduction.goodslevelid,"
  15570. + " TP_PM_InProduction.goodsleveltypeid,"
  15571. + " TP_PM_InProduction.groutingdailyid,"
  15572. + " TP_PM_InProduction.groutingdailydetailid,"
  15573. + " TP_PM_InProduction.groutinglineid,"
  15574. + " TP_PM_InProduction.groutinglinecode,"
  15575. + " TP_PM_InProduction.groutinglinename,"
  15576. + " TP_PM_InProduction.gmouldtypeid,"
  15577. + " TP_PM_InProduction.canmanytimes,"
  15578. + " TP_PM_InProduction.groutinglinedetailid,"
  15579. + " TP_PM_InProduction.groutingdate,"
  15580. + " TP_PM_InProduction.groutingmouldcode,"
  15581. + " TP_PM_InProduction.mouldcode,"
  15582. + " TP_PM_InProduction.groutinguserid,"
  15583. + " TP_PM_InProduction.groutingusercode,"
  15584. + " TP_PM_InProduction.groutingnum,"
  15585. + " :semichecktype,"
  15586. + " :semicheckuserID,"
  15587. + " :semicheckusercode,"
  15588. + " sysdate,"
  15589. + " :remarks,"
  15590. + " :accountid,"
  15591. + " :createuserid,"
  15592. + " :updateuserid,"
  15593. + " :reworkprocedureid,"
  15594. + " :reworkprocedurecode,"
  15595. + " :reworkuserid,"
  15596. + " :reworkusercode"
  15597. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  15598. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  15599. + " where TP_PM_InProduction.barcode=:barcode";
  15600. #endregion
  15601. #region OracleParameter
  15602. OracleParameter[] paras = new OracleParameter[] {
  15603. new OracleParameter(":semicheckid",entity.SemiCheckID),
  15604. new OracleParameter(":semichecktype",entity.SemiCheckType),
  15605. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  15606. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  15607. new OracleParameter(":remarks",entity.Remarks),
  15608. new OracleParameter(":accountid",sUserInfo.AccountID),
  15609. new OracleParameter(":createuserid",sUserInfo.UserID),
  15610. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15611. new OracleParameter(":barcode",entity.BarCode),
  15612. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  15613. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  15614. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  15615. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  15616. };
  15617. #endregion
  15618. foreach (OracleParameter para in paras)
  15619. {
  15620. if (string.IsNullOrEmpty(para.Value + ""))
  15621. {
  15622. para.Value = DBNull.Value;
  15623. }
  15624. }
  15625. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  15626. // 失败
  15627. if (result != Constant.INT_IS_ONE)
  15628. {
  15629. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  15630. }
  15631. // 成功返回null
  15632. return null;
  15633. }
  15634. /// <summary>
  15635. /// 添加半成品检验数据(不合格)
  15636. /// </summary>
  15637. /// <param name="oracleTrConn">连接对象</param>
  15638. /// <param name="accountDate">账务日期</param>
  15639. /// <param name="productionData">生产数据</param>
  15640. /// <param name="sUserInfo">用户基本信息</param>
  15641. /// <returns>string</returns>
  15642. /// <remarks>
  15643. /// 陈冰 2014.09.18 新建
  15644. /// </remarks>
  15645. private static string AddSemiCheckDataNoPass(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  15646. {
  15647. #region SQL
  15648. string sql = "insert into tp_pm_semicheck"
  15649. + " (semicheckid,"
  15650. + " barcode,"
  15651. + " productionlineid,"
  15652. + " procedureid,"
  15653. + " proceduretime,"
  15654. + " proceduremodel,"
  15655. + " modeltype,"
  15656. + " organizationid,"
  15657. + " goodsid,"
  15658. + " goodscode,"
  15659. + " userid,"
  15660. + " usercode,"
  15661. + " productiondataid,"
  15662. + " logoid,"
  15663. + " ispublicbody,"
  15664. + " specialrepairflag,"
  15665. + " goodslevelid,"
  15666. + " goodsleveltypeid,"
  15667. + " groutingdailyid,"
  15668. + " groutingdailydetailid,"
  15669. + " groutinglineid,"
  15670. + " groutinglinecode,"
  15671. + " groutinglinename,"
  15672. + " gmouldtypeid,"
  15673. + " canmanytimes,"
  15674. + " groutinglinedetailid,"
  15675. + " groutingdate,"
  15676. + " groutingmouldcode,"
  15677. + " mouldcode,"
  15678. + " groutinguserid,"
  15679. + " groutingusercode,"
  15680. + " groutingnum,"
  15681. + " semichecktype,"
  15682. + " semicheckuserID,"
  15683. + " semicheckusercode,"
  15684. + " semichecktime,"
  15685. + " remarks,"
  15686. + " accountid,"
  15687. + " createuserid,"
  15688. + " updateuserid,"
  15689. + " reworkprocedureid,"
  15690. + " reworkprocedurecode,"
  15691. + " reworkuserid,"
  15692. + " reworkusercode"
  15693. + ")"
  15694. + " select"
  15695. + " :semicheckid,"
  15696. + " TP_PM_InProduction.barcode,"
  15697. + " TP_PM_InProduction.productionlineid,"
  15698. + " TP_PM_InProduction.procedureid,"
  15699. + " TP_PM_InProduction.proceduretime,"
  15700. + " TP_PM_InProduction.proceduremodel,"
  15701. + " TP_PM_InProduction.modeltype,"
  15702. + " tp_pc_procedure.organizationid,"
  15703. + " TP_PM_InProduction.goodsid,"
  15704. + " TP_PM_InProduction.goodscode,"
  15705. + " TP_PM_InProduction.userid,"
  15706. + " tp_mst_user.usercode,"
  15707. + " TP_PM_InProduction.productiondataid,"
  15708. + " TP_PM_InProduction.logoid,"
  15709. + " TP_PM_InProduction.ispublicbody,"
  15710. + " TP_PM_InProduction.specialrepairflag,"
  15711. + " (select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=13 and accountid=:accountid),"
  15712. + " 13,"
  15713. + " TP_PM_InProduction.groutingdailyid,"
  15714. + " TP_PM_InProduction.groutingdailydetailid,"
  15715. + " TP_PM_InProduction.groutinglineid,"
  15716. + " TP_PM_InProduction.groutinglinecode,"
  15717. + " TP_PM_InProduction.groutinglinename,"
  15718. + " TP_PM_InProduction.gmouldtypeid,"
  15719. + " TP_PM_InProduction.canmanytimes,"
  15720. + " TP_PM_InProduction.groutinglinedetailid,"
  15721. + " TP_PM_InProduction.groutingdate,"
  15722. + " TP_PM_InProduction.groutingmouldcode,"
  15723. + " TP_PM_InProduction.mouldcode,"
  15724. + " TP_PM_InProduction.groutinguserid,"
  15725. + " TP_PM_InProduction.groutingusercode,"
  15726. + " TP_PM_InProduction.groutingnum,"
  15727. + " :semichecktype,"
  15728. + " :semicheckuserID,"
  15729. + " :semicheckusercode,"
  15730. + " sysdate,"
  15731. + " :remarks,"
  15732. + " :accountid,"
  15733. + " :createuserid,"
  15734. + " :updateuserid,"
  15735. + " :reworkprocedureid,"
  15736. + " :reworkprocedurecode,"
  15737. + " :reworkuserid,"
  15738. + " :reworkusercode"
  15739. + " from TP_PM_InProduction left join tp_mst_user on TP_PM_InProduction.UserID=tp_mst_user.userid "
  15740. + " left join tp_pc_procedure on TP_PM_InProduction.ProcedureID=tp_pc_procedure.ProcedureID "
  15741. + " where TP_PM_InProduction.barcode=:barcode";
  15742. #endregion
  15743. #region OracleParameter
  15744. OracleParameter[] paras = new OracleParameter[] {
  15745. new OracleParameter(":semicheckid",entity.SemiCheckID),
  15746. new OracleParameter(":semichecktype",entity.SemiCheckType),
  15747. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  15748. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  15749. new OracleParameter(":remarks",entity.Remarks),
  15750. new OracleParameter(":accountid",sUserInfo.AccountID),
  15751. new OracleParameter(":createuserid",sUserInfo.UserID),
  15752. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15753. new OracleParameter(":accountid",sUserInfo.AccountID),
  15754. new OracleParameter(":barcode",entity.BarCode),
  15755. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  15756. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  15757. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  15758. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  15759. };
  15760. #endregion
  15761. foreach (OracleParameter para in paras)
  15762. {
  15763. if (string.IsNullOrEmpty(para.Value + ""))
  15764. {
  15765. para.Value = DBNull.Value;
  15766. }
  15767. }
  15768. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  15769. // 失败
  15770. if (result != Constant.INT_IS_ONE)
  15771. {
  15772. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  15773. }
  15774. // 成功返回null
  15775. return null;
  15776. }
  15777. /// <summary>
  15778. /// 添加半成品检验数据
  15779. /// </summary>
  15780. /// <param name="oracleTrConn">连接对象</param>
  15781. /// <param name="accountDate">账务日期</param>
  15782. /// <param name="productionData">生产数据</param>
  15783. /// <param name="sUserInfo">用户基本信息</param>
  15784. /// <returns>string</returns>
  15785. /// <remarks>
  15786. /// 陈冰 2014.09.18 新建
  15787. /// </remarks>
  15788. private static string AddSemiCheckDataTrash(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  15789. {
  15790. #region SQL
  15791. string sql = "insert into tp_pm_semicheck"
  15792. + " (semicheckid,"
  15793. + " barcode,"
  15794. + " productionlineid,"
  15795. + " procedureid,"
  15796. + " proceduretime,"
  15797. + " proceduremodel,"
  15798. + " modeltype,"
  15799. + " organizationid,"
  15800. + " goodsid,"
  15801. + " goodscode,"
  15802. + " userid,"
  15803. + " usercode,"
  15804. + " productiondataid,"
  15805. + " logoid,"
  15806. + " ispublicbody,"
  15807. + " specialrepairflag,"
  15808. + " goodslevelid,"
  15809. + " goodsleveltypeid,"
  15810. + " groutingdailyid,"
  15811. + " groutingdailydetailid,"
  15812. + " groutinglineid,"
  15813. + " groutinglinecode,"
  15814. + " groutinglinename,"
  15815. + " gmouldtypeid,"
  15816. + " canmanytimes,"
  15817. + " groutinglinedetailid,"
  15818. + " groutingdate,"
  15819. + " groutingmouldcode,"
  15820. + " mouldcode,"
  15821. + " groutinguserid,"
  15822. + " groutingusercode,"
  15823. + " groutingnum,"
  15824. + " semichecktype,"
  15825. + " semicheckuserID,"
  15826. + " semicheckusercode,"
  15827. + " semichecktime,"
  15828. + " remarks,"
  15829. + " accountid,"
  15830. + " createuserid,"
  15831. + " updateuserid,"
  15832. + " reworkprocedureid,"
  15833. + " reworkprocedurecode,"
  15834. + " reworkuserid,"
  15835. + " reworkusercode"
  15836. + ")"
  15837. + " select"
  15838. + " :semicheckid,"
  15839. + " trash.barcode,"
  15840. + " trash.productionlineid,"
  15841. + " trash.procedureid,"
  15842. + " trash.proceduretime,"
  15843. + " trash.proceduremodel,"
  15844. + " trash.modeltype,"
  15845. + " tp_pc_procedure.organizationid,"
  15846. + " trash.goodsid,"
  15847. + " trash.goodscode,"
  15848. + " trash.userid,"
  15849. + " tp_mst_user.usercode,"
  15850. + " trash.productiondataid,"
  15851. + " trash.logoid,"
  15852. + " trash.ispublicbody,"
  15853. + " trash.specialrepairflag,"
  15854. + " trash.goodslevelid,"
  15855. + " trash.goodsleveltypeid,"
  15856. + " trash.groutingdailyid,"
  15857. + " trash.groutingdailydetailid,"
  15858. + " trash.groutinglineid,"
  15859. + " trash.groutinglinecode,"
  15860. + " trash.groutinglinename,"
  15861. + " trash.gmouldtypeid,"
  15862. + " trash.canmanytimes,"
  15863. + " trash.groutinglinedetailid,"
  15864. + " trash.groutingdate,"
  15865. + " trash.groutingmouldcode,"
  15866. + " trash.mouldcode,"
  15867. + " trash.groutinguserid,"
  15868. + " trash.groutingusercode,"
  15869. + " trash.groutingnum,"
  15870. + " :semichecktype,"
  15871. + " :semicheckuserID,"
  15872. + " :semicheckusercode,"
  15873. + " sysdate,"
  15874. + " :remarks,"
  15875. + " :accountid,"
  15876. + " :createuserid,"
  15877. + " :updateuserid,"
  15878. + " :reworkprocedureid,"
  15879. + " :reworkprocedurecode,"
  15880. + " :reworkuserid,"
  15881. + " :reworkusercode"
  15882. + " from TP_PM_InProductionTrash trash left join tp_mst_user on trash.UserID=tp_mst_user.userid "
  15883. + " left join tp_pc_procedure on trash.ProcedureID=tp_pc_procedure.ProcedureID "
  15884. + " where trash.barcode=:barcode";
  15885. #endregion
  15886. #region OracleParameter
  15887. OracleParameter[] paras = new OracleParameter[] {
  15888. new OracleParameter(":semicheckid",entity.SemiCheckID),
  15889. new OracleParameter(":semichecktype",entity.SemiCheckType),
  15890. new OracleParameter(":semicheckuserID",entity.SemiCheckUserID),
  15891. new OracleParameter(":semicheckusercode",entity.SemiCheckUserCode),
  15892. new OracleParameter(":remarks",entity.Remarks),
  15893. new OracleParameter(":accountid",sUserInfo.AccountID),
  15894. new OracleParameter(":createuserid",sUserInfo.UserID),
  15895. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15896. new OracleParameter(":barcode",entity.BarCode),
  15897. new OracleParameter(":reworkprocedureid",entity.ReworkProcedureID),
  15898. new OracleParameter(":reworkprocedurecode",entity.ReworkProcedureCode),
  15899. new OracleParameter(":reworkuserid",entity.ReworkUserID),
  15900. new OracleParameter(":reworkusercode",entity.ReworkUserCode),
  15901. };
  15902. #endregion
  15903. foreach (OracleParameter para in paras)
  15904. {
  15905. if (string.IsNullOrEmpty(para.Value + ""))
  15906. {
  15907. para.Value = DBNull.Value;
  15908. }
  15909. }
  15910. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  15911. // 失败
  15912. if (result != Constant.INT_IS_ONE)
  15913. {
  15914. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  15915. }
  15916. // 成功返回null
  15917. return null;
  15918. }
  15919. /// <summary>
  15920. /// 添加半成品检验数据
  15921. /// </summary>
  15922. /// <param name="oracleTrConn">连接对象</param>
  15923. /// <param name="accountDate">账务日期</param>
  15924. /// <param name="productionData">生产数据</param>
  15925. /// <param name="sUserInfo">用户基本信息</param>
  15926. /// <returns>string</returns>
  15927. /// <remarks>
  15928. /// 陈冰 2014.09.18 新建
  15929. /// </remarks>
  15930. private static string SetSemiCheckDataValueFlag(IDBTransaction oracleTrConn, SemiCheckEntity entity, SUserInfo sUserInfo)
  15931. {
  15932. #region SQL
  15933. string sql = @"update TP_PM_SemiCheck
  15934. set BackOutUserID=:BackOutUserID,
  15935. BackOutUserCode=:BackOutUserCode,
  15936. BackOutFlag=1,
  15937. BackOutTime=sysdate,
  15938. ValueFlag='0',
  15939. updateuserid=:updateuserid
  15940. where semicheckid=:semicheckid";
  15941. #region OracleParameter
  15942. OracleParameter[] paras = new OracleParameter[] {
  15943. new OracleParameter(":semicheckid",entity.SemiCheckID),
  15944. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15945. new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  15946. new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  15947. };
  15948. #endregion
  15949. int result = oracleTrConn.ExecuteNonQuery(sql, paras);
  15950. string sql2 = @"update TP_PM_SemiCheckDefect
  15951. set
  15952. ValueFlag='0',
  15953. updateuserid=:updateuserid
  15954. where semicheckid=:semicheckid";
  15955. string sql3 = @"update TP_PM_SCDefectResponsible
  15956. set
  15957. ValueFlag='0',
  15958. updateuserid=:updateuserid
  15959. where semicheckid=:semicheckid";
  15960. #endregion
  15961. #region OracleParameter
  15962. paras = new OracleParameter[] {
  15963. new OracleParameter(":semicheckid",entity.SemiCheckID),
  15964. new OracleParameter(":updateuserid",sUserInfo.UserID),
  15965. };
  15966. #endregion
  15967. foreach (OracleParameter para in paras)
  15968. {
  15969. if (string.IsNullOrEmpty(para.Value + ""))
  15970. {
  15971. para.Value = DBNull.Value;
  15972. }
  15973. }
  15974. result += oracleTrConn.ExecuteNonQuery(sql2, paras);
  15975. result += oracleTrConn.ExecuteNonQuery(sql3, paras);
  15976. // 失败
  15977. if (result == Constant.INT_IS_ZERO)
  15978. {
  15979. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  15980. }
  15981. // 成功返回null
  15982. return null;
  15983. }
  15984. /// <summary>
  15985. /// 保存半检缺陷
  15986. /// </summary>
  15987. /// <param name="oracleTrConn">连接对象</param>
  15988. /// <param name="productionDefect">缺陷数据</param>
  15989. /// <param name="sUserInfo">用户基本信息</param>
  15990. /// <returns>string</returns>
  15991. private static string AddSemiCheckDefect(IDBTransaction oracleTrConn, SemiCheckDefectEntity semiCheckDefect, SUserInfo sUserInfo)
  15992. {
  15993. // 查询新插入的半检缺陷ID
  15994. string sql = "select SEQ_PM_SemiCheckDefect_ID.nextval from dual";
  15995. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  15996. int semiCheckDefectID = 0;
  15997. if (!string.IsNullOrEmpty(idStr))
  15998. {
  15999. semiCheckDefectID = int.Parse(idStr);
  16000. }
  16001. else
  16002. {
  16003. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16004. }
  16005. #region SQL
  16006. sql = "insert into TP_PM_SemiCheckDefect"
  16007. + " (semicheckdefectid,"
  16008. + " semicheckid,"
  16009. + " defectid,"
  16010. + " defectcode,"
  16011. + " defectname,"
  16012. + " defectpositionid,"
  16013. + " defectpositioncode,"
  16014. + " defectpositionname,"
  16015. + " scrapResponFlag,"
  16016. + " defectproductiondataid,"
  16017. + " defectprocedureid,"
  16018. + " defectuserid,"
  16019. + " defectusercode,"
  16020. + " remarks,"
  16021. + " accountid,"
  16022. + " createuserid,"
  16023. + " updateuserid)"
  16024. + " values"
  16025. + " ("
  16026. + " :semicheckdefectid,"
  16027. + " :semicheckid,"
  16028. + " :defectid,"
  16029. + " :defectcode,"
  16030. + " :defectname,"
  16031. + " :defectpositionid,"
  16032. + " :defectpositioncode,"
  16033. + " :defectpositionname,"
  16034. + " :scrapResponFlag,"
  16035. + " :defectproductiondataid,"
  16036. + " :defectprocedureid,"
  16037. + " :defectuserid,"
  16038. + " :defectusercode,"
  16039. + " :remarks,"
  16040. + " :accountid,"
  16041. + " :createuserid,"
  16042. + " :updateuserid)";
  16043. #endregion
  16044. #region 参数
  16045. OracleParameter[] oracleParameters = new OracleParameter[] {
  16046. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  16047. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  16048. new OracleParameter(":defectid",semiCheckDefect.DefectID),
  16049. new OracleParameter(":defectcode",semiCheckDefect.DefectCode),
  16050. new OracleParameter(":defectname",semiCheckDefect.DefectName),
  16051. new OracleParameter(":defectpositionid",semiCheckDefect.DefectPositionID),
  16052. new OracleParameter(":defectpositioncode",semiCheckDefect.DefectPositionCode),
  16053. new OracleParameter(":defectpositionname",semiCheckDefect.DefectPositionName),
  16054. new OracleParameter(":scrapResponFlag",semiCheckDefect.ScrapResponFlag),
  16055. new OracleParameter(":defectproductiondataid",semiCheckDefect.DefectProductionDataID),
  16056. new OracleParameter(":defectprocedureid",semiCheckDefect.DefectProcedureID),
  16057. new OracleParameter(":defectuserid",semiCheckDefect.DefectUserID),
  16058. new OracleParameter(":defectusercode",semiCheckDefect.DefectUserCode),
  16059. new OracleParameter(":remarks",semiCheckDefect.Remarks),
  16060. new OracleParameter(":accountid",sUserInfo.AccountID),
  16061. new OracleParameter(":createuserid",sUserInfo.UserID),
  16062. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16063. };
  16064. #endregion
  16065. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16066. // 保存失败
  16067. if (result != Constant.INT_IS_ONE)
  16068. {
  16069. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16070. }
  16071. #region 插入生产缺陷责任者
  16072. if (semiCheckDefect.DefectResponsibles != null)
  16073. {
  16074. foreach (SemiCheckResponsibleEntity DefectResponsible in semiCheckDefect.DefectResponsibles)
  16075. {
  16076. #region SQL
  16077. sql = "insert into TP_PM_SCDefectResponsible"
  16078. + " (semicheckdefectid,"
  16079. + " staffid,"
  16080. + " semicheckid,"
  16081. + " userid,"
  16082. + " usercode,"
  16083. + " Ujobsid,"
  16084. + " SJobsID,"
  16085. + " staffstatus,"
  16086. + " accountid,"
  16087. + " createuserid,"
  16088. + " updateuserid)"
  16089. + " values"
  16090. + " (:semicheckdefectid,"
  16091. + " :staffid,"
  16092. + " :semicheckid,"
  16093. + " :userid,"
  16094. + " :usercode,"
  16095. + " :ujobsid,"
  16096. + " :sjobsid,"
  16097. + " :staffstatus,"
  16098. + " :accountid,"
  16099. + " :createuserid,"
  16100. + " :updateuserid)";
  16101. #endregion
  16102. #region 参数
  16103. oracleParameters = new OracleParameter[] {
  16104. new OracleParameter(":semicheckdefectid",semiCheckDefectID),
  16105. new OracleParameter(":staffid",DefectResponsible.StaffID),
  16106. new OracleParameter(":semicheckid",semiCheckDefect.SemiCheckID),
  16107. new OracleParameter(":userid",DefectResponsible.UserID),
  16108. new OracleParameter(":usercode",DefectResponsible.UserCode),
  16109. new OracleParameter(":ujobsid",DefectResponsible.UJobsID),
  16110. new OracleParameter(":sjobsid",DefectResponsible.SJobsID),
  16111. new OracleParameter(":staffstatus",DefectResponsible.StaffStatus),
  16112. new OracleParameter(":accountid",sUserInfo.AccountID),
  16113. new OracleParameter(":createuserid",sUserInfo.UserID),
  16114. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16115. };
  16116. #endregion
  16117. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16118. // 保存失败
  16119. if (result != Constant.INT_IS_ONE)
  16120. {
  16121. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16122. }
  16123. }
  16124. }
  16125. #endregion
  16126. return null;
  16127. }
  16128. /// <summary>
  16129. /// 添加责任工序
  16130. /// </summary>
  16131. /// <param name="oracleTrConn">连接对象</param>
  16132. /// <param name="responProce">责任工序</param>
  16133. /// <param name="productionDefect">缺陷数据</param>
  16134. /// <param name="sUserInfo">用户基本信息</param>
  16135. /// <returns>string</returns>
  16136. private static string AddSemiCheckResponProcedure(IDBTransaction oracleTrConn, ResponProcedureEntity responProce, SemiCheckDefectEntity productionDefect, SUserInfo sUserInfo)
  16137. {
  16138. OracleParameter[] oracleParameters = null;
  16139. string sql = null;
  16140. int result = 0;
  16141. // 查询新插入ID
  16142. if (responProce.ProcedureID != null)
  16143. {
  16144. sql = "select SEQ_PM_ResponProcedure_ID.nextval from dual";
  16145. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  16146. if (!string.IsNullOrEmpty(idStr))
  16147. {
  16148. responProce.ResponProcedureID = int.Parse(idStr);
  16149. }
  16150. else
  16151. {
  16152. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16153. }
  16154. #region SQL
  16155. sql = "insert into tp_pm_responprocedure"
  16156. + " (ResponProcedureID,"
  16157. + " scrapproductid,"
  16158. + " barcode,"
  16159. + " productiondataid,"
  16160. + " productionlineid,"
  16161. + " productionlinecode,"
  16162. + " productionlinename,"
  16163. + " procedureid,"
  16164. + " procedurecode,"
  16165. + " procedurename,"
  16166. + " userid,"
  16167. + " usercode,"
  16168. + " username,"
  16169. + " remarks,"
  16170. + " accountid,"
  16171. + " createuserid,"
  16172. + " updateuserid)"
  16173. + " values"
  16174. + " ("
  16175. + " :ResponProcedureID,"
  16176. + " :scrapproductid,"
  16177. + " :barcode,"
  16178. + " :productiondataid,"
  16179. + " :productionlineid,"
  16180. + " :productionlinecode,"
  16181. + " :productionlinename,"
  16182. + " :procedureid,"
  16183. + " :procedurecode,"
  16184. + " :procedurename,"
  16185. + " :userid,"
  16186. + " :usercode,"
  16187. + " :username,"
  16188. + " :remarks,"
  16189. + " :accountid,"
  16190. + " :createuserid,"
  16191. + " :updateuserid)";
  16192. #endregion
  16193. #region 参数
  16194. oracleParameters = new OracleParameter[] {
  16195. new OracleParameter(":ResponProcedureID",responProce.ResponProcedureID),
  16196. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  16197. new OracleParameter(":barcode",responProce.BarCode),
  16198. new OracleParameter(":productiondataid",responProce.ProductionDataID),
  16199. new OracleParameter(":productionlineid",responProce.ProductionLineID),
  16200. new OracleParameter(":productionlinecode",responProce.ProductionLineCode),
  16201. new OracleParameter(":productionlinename",responProce.ProductionLineName),
  16202. new OracleParameter(":procedureid",responProce.ProcedureID),
  16203. new OracleParameter(":procedurecode",responProce.ProcedureCode),
  16204. new OracleParameter(":procedurename",responProce.ProcedureName),
  16205. new OracleParameter(":userid",responProce.UserID),
  16206. new OracleParameter(":usercode",responProce.UserCode),
  16207. new OracleParameter(":username",responProce.UserName),
  16208. new OracleParameter(":remarks",responProce.Remarks),
  16209. new OracleParameter(":accountid",sUserInfo.AccountID),
  16210. new OracleParameter(":createuserid",sUserInfo.UserID),
  16211. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16212. };
  16213. #endregion
  16214. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16215. // 保存失败
  16216. if (result != Constant.INT_IS_ONE)
  16217. {
  16218. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16219. }
  16220. //// 查询新插入ID
  16221. //sql = "select SEQ_PM_ResponProcedure_ID.Currval from dual";
  16222. //string idStr = oracleTrConn.GetSqlResultToStr(sql);
  16223. //if (!string.IsNullOrEmpty(idStr))
  16224. //{
  16225. // responProce.ResponProcedureID = int.Parse(idStr);
  16226. //}
  16227. //else
  16228. //{
  16229. // return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16230. //}
  16231. }
  16232. #region 插入责任人
  16233. foreach (SemiCheckResponsibleEntity defectResponsible in productionDefect.DefectResponsibles)
  16234. {
  16235. #region SQL
  16236. sql = "insert into tp_pm_scrapresponsible"
  16237. + " (barcode,"
  16238. + " scrapproductid,"
  16239. + " staffid,"
  16240. + " userid,"
  16241. + " usercode,"
  16242. + " ujobsid,"
  16243. + " sjobsid,"
  16244. + " staffstatus,"
  16245. + " accountid,"
  16246. + " createuserid,"
  16247. + " updateuserid,"
  16248. + " responprocedureid,"
  16249. + " respontype)"
  16250. + " values"
  16251. + " (:barcode,"
  16252. + " :scrapproductid,"
  16253. + " :staffid,"
  16254. + " :userid,"
  16255. + " :usercode,"
  16256. + " :ujobsid,"
  16257. + " :sjobsid,"
  16258. + " :staffstatus,"
  16259. + " :accountid,"
  16260. + " :createuserid,"
  16261. + " :updateuserid,"
  16262. + " :responprocedureid,"
  16263. + " :respontype)";
  16264. #endregion
  16265. #region 参数
  16266. oracleParameters = new OracleParameter[] {
  16267. new OracleParameter(":scrapproductid",responProce.ScrapProductID),
  16268. new OracleParameter(":barcode",responProce.BarCode),
  16269. new OracleParameter(":staffid",defectResponsible.StaffID),
  16270. new OracleParameter(":userid",defectResponsible.UserID),
  16271. new OracleParameter(":usercode",defectResponsible.UserCode),
  16272. new OracleParameter(":ujobsid",defectResponsible.UJobsID),
  16273. new OracleParameter(":sjobsid",defectResponsible.SJobsID),
  16274. new OracleParameter(":staffstatus",defectResponsible.StaffStatus),
  16275. new OracleParameter(":accountid",sUserInfo.AccountID),
  16276. new OracleParameter(":createuserid",sUserInfo.UserID),
  16277. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16278. new OracleParameter(":responprocedureid",responProce.ResponProcedureID),
  16279. new OracleParameter(":respontype", (responProce.ResponProcedureID == null? (int)Constant.ScrapResponType.Person:(int)Constant.ScrapResponType.Procedure)),
  16280. };
  16281. #endregion
  16282. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16283. // 保存失败
  16284. if (result != Constant.INT_IS_ONE)
  16285. {
  16286. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16287. }
  16288. }
  16289. #endregion
  16290. return null;
  16291. }
  16292. #region 复检
  16293. /// <summary>
  16294. /// 复检数据
  16295. /// </summary>
  16296. /// <param name="oracleTrConn">数据连接对象</param>
  16297. /// <param name="entity">半检实体类</param>
  16298. /// <param name="sUserInfo">用户基本信息</param>
  16299. /// <returns>string</returns>
  16300. /// <remarks>
  16301. /// 王鑫 2016.06.28 新建
  16302. /// </remarks>
  16303. private static string AddReSemiCheck(IDBTransaction oracleTrConn,
  16304. SemiCheckEntity entity,
  16305. SUserInfo sUserInfo)
  16306. {
  16307. try
  16308. {
  16309. // 获得账务日期
  16310. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  16311. string errMsg = string.Empty;
  16312. #region 校验条码有效性
  16313. errMsg = CheckBarcodeByEditRework(oracleTrConn, entity.BarCode, sUserInfo);
  16314. if (!string.IsNullOrEmpty(errMsg))
  16315. {
  16316. return errMsg;
  16317. }
  16318. #endregion
  16319. //------------------------------
  16320. #region 条码是不合格 删除在产产品数据
  16321. if (entity.ReSemiCheckType == "2") //编辑时不合格
  16322. {
  16323. #region 修改半检登记的复检状态=2不合格(返)、复检工号=当前工号、复检时间=sysdate。
  16324. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='2' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  16325. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  16326. OracleParameter[] oracleParameters = new OracleParameter[] {
  16327. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  16328. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  16329. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16330. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16331. };
  16332. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  16333. // 保存失败
  16334. if (result != Constant.INT_IS_ONE)
  16335. {
  16336. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16337. }
  16338. #endregion
  16339. #region 条码有缺陷
  16340. #region 是次品 添加废弃产品
  16341. string ResponProcedureidStr = "";
  16342. if (entity.ReSemiCheckType == "2") //新建时不合格,直接报损
  16343. {
  16344. #region 添加废弃产品
  16345. ScrapProductEntity scrapProduct = new ScrapProductEntity();
  16346. #region 属性赋值
  16347. scrapProduct.BarCode = entity.BarCode;
  16348. scrapProduct.ScrapType = Constant.ScrapType.Substandard.GetHashCode();
  16349. scrapProduct.ResponType = Constant.ScrapResponType.Procedure.GetHashCode();
  16350. scrapProduct.ScrapDate = accountDate;
  16351. scrapProduct.Rreason = Constant.SCRAPTYPE_NOPASSREWORK;
  16352. scrapProduct.AuditStatus = Constant.AuditStatus.Agree.GetHashCode();
  16353. scrapProduct.Auditor = sUserInfo.UserID;
  16354. scrapProduct.AuditlDate = accountDate;
  16355. scrapProduct.AccountDate = accountDate;
  16356. sqlUpdate = "select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=" + sUserInfo.AccountID;
  16357. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate);
  16358. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16359. {
  16360. scrapProduct.GoodsLevelID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelID"]);
  16361. }
  16362. scrapProduct.GoodsLevelTypeID = 14;
  16363. //scrapProduct.GoodsLevelID = entity.GoodsLevelID;
  16364. //scrapProduct.GoodsLevelTypeID = entity.GoodsLevelTypeID;
  16365. scrapProduct.IsPublicBody = IsPubilcByBarCode(oracleTrConn, entity.BarCode);
  16366. // 查询新插入的废弃ID
  16367. string ResponProceduresql = "select SEQ_PM_ScrapProduct_ID.nextval from dual";
  16368. ResponProcedureidStr = oracleTrConn.GetSqlResultToStr(ResponProceduresql);
  16369. scrapProduct.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16370. scrapProduct.ScrapType = 3;
  16371. #endregion
  16372. // 保存报废
  16373. errMsg = AddScrapProduct(oracleTrConn, scrapProduct, sUserInfo);
  16374. // 保存失败
  16375. if (!string.IsNullOrEmpty(errMsg))
  16376. {
  16377. return errMsg;
  16378. }
  16379. #endregion
  16380. }
  16381. #endregion
  16382. // 存在缺陷 插入缺陷表
  16383. if (entity.SemiCheckDefects != null)
  16384. {
  16385. foreach (SemiCheckDefectEntity semiCheckDefect in entity.SemiCheckDefects)
  16386. {
  16387. #region 保存缺陷
  16388. //semiCheckDefect.SemiCheckID = Convert.ToInt32(semiCheckDefect.SemiCheckID);
  16389. //semiCheckDefect.ScrapResponFlag
  16390. // = string.IsNullOrEmpty(semiCheckDefect.ScrapResponFlag) ? "0" : semiCheckDefect.ScrapResponFlag;
  16391. //// 保存缺陷
  16392. //errMsg = AddSemiCheckDefect(oracleTrConn, semiCheckDefect, sUserInfo);
  16393. //if (!string.IsNullOrEmpty(errMsg))
  16394. //{
  16395. // return errMsg;
  16396. //}
  16397. #endregion
  16398. #region 是不合格 添加废弃责任工序
  16399. if (entity.ReSemiCheckType == "2")
  16400. {
  16401. //if (semiCheckDefect.DefectProcedureID != null)
  16402. {
  16403. #region 添加责任工序
  16404. ResponProcedureEntity responProce = new ResponProcedureEntity();
  16405. #region 属性赋值
  16406. responProce.BarCode = entity.BarCode;
  16407. // 新建-不合格 获取生产线及生产数据ID
  16408. sqlUpdate = "select ProductionLineID,ProductionLineCode,ProductionLineName,ProductionDataID from TP_PM_InProduction where barcode=:barcode";
  16409. oracleParameters = new OracleParameter[] {
  16410. new OracleParameter(":barcode",entity.BarCode),
  16411. };
  16412. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlUpdate, oracleParameters);
  16413. if (ds != null && ds.Tables[0].Rows.Count > 0)
  16414. {
  16415. responProce.ProductionDataID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  16416. responProce.ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  16417. responProce.ProductionLineCode = ds.Tables[0].Rows[0]["ProductionLineCode"].ToString();
  16418. responProce.ProductionLineName = ds.Tables[0].Rows[0]["ProductionLineName"].ToString();
  16419. }
  16420. //responProce.ProductionDataID = semiCheckDefect.ProductionDataID;
  16421. //responProce.ProductionLineID = semiCheckDefect.ProductionLineID;
  16422. //responProce.ProductionLineCode = semiCheckDefect.ProductionLineCode;
  16423. //responProce.ProductionLineName = semiCheckDefect.ProductionLineName;
  16424. responProce.ProcedureID = semiCheckDefect.DefectProcedureID;
  16425. responProce.ProcedureCode = semiCheckDefect.DefectProcedureCode;
  16426. responProce.ProcedureName = semiCheckDefect.DefectProcedureName;
  16427. responProce.UserID = semiCheckDefect.DefectUserID;
  16428. responProce.UserCode = semiCheckDefect.DefectUserCode;
  16429. responProce.UserName = semiCheckDefect.DefectUserName;
  16430. responProce.Remarks = semiCheckDefect.Remarks;
  16431. responProce.ScrapProductID = Convert.ToInt32(ResponProcedureidStr);
  16432. #endregion
  16433. // 保存责任工序
  16434. errMsg = AddSemiCheckResponProcedure(oracleTrConn, responProce, semiCheckDefect, sUserInfo);
  16435. // 保存失败
  16436. if (!string.IsNullOrEmpty(errMsg))
  16437. {
  16438. return errMsg;
  16439. }
  16440. #endregion
  16441. }
  16442. }
  16443. #endregion
  16444. }
  16445. }
  16446. #endregion
  16447. // 1.在产表产品设置产品等级【14不合格返】。
  16448. string sql = @"update TP_PM_InProduction set GoodsLevelID=
  16449. (
  16450. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  16451. ),GoodsLevelTypeID=14,updateuserid=:updateuserid
  16452. where barcode=:barcode";
  16453. oracleParameters = new OracleParameter[] {
  16454. new OracleParameter(":accountid", sUserInfo.AccountID),
  16455. // new OracleParameter(":updateuserid",scrapProduct.GoodsLevelTypeID),
  16456. new OracleParameter(":barcode",entity.BarCode),
  16457. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16458. };
  16459. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16460. // 注浆明细 产品等级
  16461. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=14,updateuserid=:updateuserid
  16462. where barcode=:barcode";
  16463. oracleParameters = new OracleParameter[] {
  16464. new OracleParameter(":accountid", sUserInfo.AccountID),
  16465. new OracleParameter(":barcode",entity.BarCode),
  16466. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16467. };
  16468. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16469. // 2.将在产数据保存到在产回收站表中(产品等级【14不合格返】)。
  16470. string sqlInsert = @"insert into TP_PM_InProductionTrash
  16471. (
  16472. BarCode,
  16473. ProductionLineID,
  16474. ProductionLineCode,
  16475. ProductionLineName,
  16476. ProcedureModel,
  16477. ModelType,
  16478. DefectFlag,
  16479. ReworkProcedureID,
  16480. IsPublicBody,
  16481. IsReFire,
  16482. GoodsLevelID,
  16483. GoodsLevelTypeID,
  16484. GoodsID,
  16485. GoodsCode,
  16486. GoodsName,
  16487. UserID,
  16488. GroutingDailyID,
  16489. GroutingDailyDetailID,
  16490. GroutingDate,
  16491. GroutingLineID,
  16492. GroutingLineCode,
  16493. GroutingLineName,
  16494. GMouldTypeID,
  16495. CanManyTimes,
  16496. GroutingLineDetailID,
  16497. GroutingMouldCode,
  16498. MouldCode,
  16499. GroutingUserID,
  16500. GroutingUserCode,
  16501. GroutingNum,
  16502. Remarks,
  16503. KilnID,
  16504. KilnCode,
  16505. KilnName,
  16506. KilnCarID,
  16507. KilnCarCode,
  16508. KilnCarName,
  16509. KilnCarBatchNo,
  16510. KilnCarPosition,
  16511. AccountID,
  16512. ValueFlag,
  16513. CreateUserID,
  16514. UpdateUserID,
  16515. SpecialRepairflag,
  16516. FlowProcedureID,
  16517. FlowProcedureTime,
  16518. ProcedureID,
  16519. ProcedureTime,
  16520. ProductionDataID,
  16521. logoid,ISREWORKFLAG,
  16522. SemiCheckID
  16523. )
  16524. select
  16525. BarCode,
  16526. ProductionLineID,
  16527. ProductionLineCode,
  16528. ProductionLineName,
  16529. ProcedureModel,
  16530. ModelType,
  16531. DefectFlag,
  16532. ReworkProcedureID,
  16533. IsPublicBody,
  16534. IsReFire,
  16535. --GoodsLevelID,
  16536. --GoodsLevelTypeID,
  16537. (
  16538. select GoodsLevelID from tp_mst_goodslevel where GoodsLevelTypeID=14 and accountid=:accountid
  16539. ),14,
  16540. GoodsID,
  16541. GoodsCode,
  16542. GoodsName,
  16543. UserID,
  16544. GroutingDailyID,
  16545. GroutingDailyDetailID,
  16546. GroutingDate,
  16547. GroutingLineID,
  16548. GroutingLineCode,
  16549. GroutingLineName,
  16550. GMouldTypeID,
  16551. CanManyTimes,
  16552. GroutingLineDetailID,
  16553. GroutingMouldCode,
  16554. MouldCode,
  16555. GroutingUserID,
  16556. GroutingUserCode,
  16557. GroutingNum,
  16558. Remarks,
  16559. KilnID,
  16560. KilnCode,
  16561. KilnName,
  16562. KilnCarID,
  16563. KilnCarCode,
  16564. KilnCarName,
  16565. KilnCarBatchNo,
  16566. KilnCarPosition,
  16567. AccountID,
  16568. ValueFlag,
  16569. :CreateUserID,
  16570. :UpdateUserID,
  16571. SpecialRepairflag,
  16572. FlowProcedureID,
  16573. FlowProcedureTime,
  16574. FlowProcedureID,
  16575. ProcedureTime,
  16576. ProductionDataID,
  16577. logoid,ISREWORKFLAG,
  16578. SemiCheckID
  16579. from TP_PM_InProduction
  16580. where barcode=:barcode
  16581. ";
  16582. oracleParameters = new OracleParameter[] {
  16583. new OracleParameter(":barcode",entity.BarCode),
  16584. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16585. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16586. new OracleParameter(":accountid", sUserInfo.AccountID),
  16587. };
  16588. result += oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16589. // 删除在产数据
  16590. sql = "delete tp_pm_inproduction where barcode = :barcode";
  16591. oracleParameters = new OracleParameter[] {
  16592. new OracleParameter(":barcode",entity.BarCode),
  16593. };
  16594. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16595. }
  16596. else if (entity.ReSemiCheckType == "1") //正常
  16597. {
  16598. #region 修改半检登记的复检状态=1合格(返)、复检工号=当前工号、复检时间=sysdate。
  16599. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='1' ,ReSemiCheckUserID=:ReSemiCheckUserID,
  16600. ReSemiCheckUserCode=:ReSemiCheckUserCode,ReSemiCheckTime=sysdate,updateuserid=:updateuserid where SemiCheckID=:SemiCheckID";
  16601. OracleParameter[] oracleParameters = new OracleParameter[] {
  16602. new OracleParameter(":ReSemiCheckUserID",sUserInfo.UserID),
  16603. new OracleParameter(":ReSemiCheckUserCode",sUserInfo.UserCode),
  16604. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16605. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16606. };
  16607. int result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  16608. // 保存失败
  16609. if (result != Constant.INT_IS_ONE)
  16610. {
  16611. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16612. }
  16613. #endregion
  16614. #region 3.修改在产产品数据,在产表产品设置非返工状态(IsReworkFlag = '0'),半检登记ID=null(半检登记ID不变)。
  16615. string sql = "update tp_pm_inproduction set GoodsLevelTypeID=1, IsReworkFlag='0',UpdateUserID=:UpdateUserID where barcode = :barcode";
  16616. oracleParameters = new OracleParameter[] {
  16617. new OracleParameter(":barcode",entity.BarCode),
  16618. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16619. };
  16620. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16621. // 注浆明细 产品等级
  16622. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=1,updateuserid=:updateuserid
  16623. where barcode=:barcode";
  16624. oracleParameters = new OracleParameter[] {
  16625. new OracleParameter(":accountid", sUserInfo.AccountID),
  16626. new OracleParameter(":barcode",entity.BarCode),
  16627. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16628. };
  16629. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16630. #endregion
  16631. }
  16632. #endregion
  16633. //------------------------------
  16634. return errMsg;
  16635. }
  16636. catch (Exception ex)
  16637. {
  16638. throw ex;
  16639. }
  16640. }
  16641. #endregion
  16642. #region 撤销复检
  16643. /// <summary>
  16644. /// 撤销复检数据
  16645. /// </summary>
  16646. /// <param name="oracleTrConn">数据连接对象</param>
  16647. /// <param name="entity">半检实体类</param>
  16648. /// <param name="sUserInfo">用户基本信息</param>
  16649. /// <returns>string</returns>
  16650. /// <remarks>
  16651. /// 王鑫 2016.06.28 新建
  16652. /// </remarks>
  16653. private static string AddCancelSemiCheck(IDBTransaction oracleTrConn,
  16654. SemiCheckEntity entity,
  16655. SUserInfo sUserInfo)
  16656. {
  16657. try
  16658. {
  16659. // 获得账务日期
  16660. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  16661. string errMsg = string.Empty;
  16662. string sql = null;
  16663. #region 校验条码有效性
  16664. if (entity.ReSemiCheckType == "1") //撤销合格
  16665. {
  16666. errMsg = CheckBarcodeByCancelReSemiCheckPass(oracleTrConn, entity.BarCode, sUserInfo);
  16667. }
  16668. else if (entity.ReSemiCheckType == "2") //撤销不合格
  16669. {
  16670. errMsg = CheckBarcodeByCancelReSemiCheckNoPass(oracleTrConn, entity.BarCode, sUserInfo);
  16671. }
  16672. if (!string.IsNullOrEmpty(errMsg))
  16673. {
  16674. return errMsg;
  16675. }
  16676. #endregion
  16677. if (entity.ReSemiCheckType == "1") //撤销合格
  16678. {
  16679. #region 在产表产品设置返工状态(IsReworkFlag = '1')。
  16680. sql = "update tp_pm_inproduction set GoodsLevelTypeID=2, IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  16681. OracleParameter[] oracleParameters = new OracleParameter[] {
  16682. new OracleParameter(":barcode",entity.BarCode),
  16683. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16684. };
  16685. int result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16686. // 注浆明细 产品等级
  16687. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  16688. where barcode=:barcode";
  16689. oracleParameters = new OracleParameter[] {
  16690. new OracleParameter(":accountid", sUserInfo.AccountID),
  16691. new OracleParameter(":barcode",entity.BarCode),
  16692. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16693. };
  16694. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16695. #endregion
  16696. #region .半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  16697. // 复检撤销不需要记录撤销标识 - chenxy
  16698. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  16699. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  16700. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  16701. where SemiCheckID=:SemiCheckID";
  16702. oracleParameters = new OracleParameter[] {
  16703. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16704. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16705. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  16706. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  16707. };
  16708. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  16709. // 保存失败
  16710. if (result != Constant.INT_IS_ONE)
  16711. {
  16712. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16713. }
  16714. #endregion
  16715. }
  16716. else if (entity.ReSemiCheckType == "2") //撤销不合格
  16717. {
  16718. #region 从在产回收站中把数据恢复到在产表中。
  16719. string sqlInsert = @"insert into TP_PM_InProduction
  16720. (
  16721. BarCode,
  16722. ProductionLineID,
  16723. ProductionLineCode,
  16724. ProductionLineName,
  16725. ProcedureModel,
  16726. ModelType,
  16727. DefectFlag,
  16728. ReworkProcedureID,
  16729. IsPublicBody,
  16730. IsReFire,
  16731. GoodsLevelID,
  16732. GoodsLevelTypeID,
  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. ProcedureID,
  16768. ProcedureTime,
  16769. ProductionDataID,
  16770. logoid,ISREWORKFLAG,
  16771. SemiCheckID
  16772. )
  16773. select
  16774. BarCode,
  16775. ProductionLineID,
  16776. ProductionLineCode,
  16777. ProductionLineName,
  16778. ProcedureModel,
  16779. ModelType,
  16780. DefectFlag,
  16781. ReworkProcedureID,
  16782. IsPublicBody,
  16783. IsReFire,
  16784. GoodsLevelID,
  16785. GoodsLevelTypeID,
  16786. GoodsID,
  16787. GoodsCode,
  16788. GoodsName,
  16789. UserID,
  16790. GroutingDailyID,
  16791. GroutingDailyDetailID,
  16792. GroutingDate,
  16793. GroutingLineID,
  16794. GroutingLineCode,
  16795. GroutingLineName,
  16796. GMouldTypeID,
  16797. CanManyTimes,
  16798. GroutingLineDetailID,
  16799. GroutingMouldCode,
  16800. MouldCode,
  16801. GroutingUserID,
  16802. GroutingUserCode,
  16803. GroutingNum,
  16804. Remarks,
  16805. KilnID,
  16806. KilnCode,
  16807. KilnName,
  16808. KilnCarID,
  16809. KilnCarCode,
  16810. KilnCarName,
  16811. KilnCarBatchNo,
  16812. KilnCarPosition,
  16813. AccountID,
  16814. ValueFlag,
  16815. :CreateUserID,
  16816. :UpdateUserID,
  16817. SpecialRepairflag,
  16818. FlowProcedureID,
  16819. FlowProcedureTime,
  16820. FlowProcedureID,
  16821. ProcedureTime,
  16822. ProductionDataID,
  16823. logoid,ISREWORKFLAG,
  16824. SemiCheckID
  16825. from TP_PM_InProductionTrash
  16826. where barcode=:barcode
  16827. ";
  16828. OracleParameter[] oracleParameters = new OracleParameter[] {
  16829. new OracleParameter(":barcode",entity.BarCode),
  16830. new OracleParameter(":CreateUserID",sUserInfo.UserID),
  16831. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16832. };
  16833. int result = oracleTrConn.ExecuteNonQuery(sqlInsert, oracleParameters);
  16834. #endregion
  16835. #region 1.废弃产品表中对应的总单数据和明细数据valueflag='0'。
  16836. OracleParameter[] spParameters = null;
  16837. int spResult = 0;
  16838. string sqlString = "select max(sp.scrapproductid) scrapproductid\n" +
  16839. " from TP_PM_ScrapProduct sp\n" +
  16840. " where sp.barcode = :barcode\n" +
  16841. " and sp.auditstatus = 1\n" +
  16842. " and sp.valueflag = '1'\n" +
  16843. " and sp.scraptype = '3'";
  16844. spParameters = new OracleParameter[] {
  16845. new OracleParameter(":barcode",entity.BarCode),
  16846. };
  16847. string scrapproductid = oracleTrConn.GetSqlResultToStr(sqlString, spParameters);
  16848. sqlString = @"update TP_PM_ScrapProduct set valueflag='0', updateuserid=:updateuserid, backouttime=sysdate where scrapproductid=:scrapproductid";
  16849. spParameters = new OracleParameter[] {
  16850. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16851. new OracleParameter(":scrapproductid",scrapproductid),
  16852. };
  16853. spResult = oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16854. sqlString = @"update TP_PM_ResponProcedure set valueflag='0', updateuserid=:updateuserid where scrapproductid=:scrapproductid";
  16855. //oracleParameters = new OracleParameter[] {
  16856. // new OracleParameter(":barcode",entity.BarCode),
  16857. //};
  16858. spResult += oracleTrConn.ExecuteNonQuery(sqlString, spParameters);
  16859. //string sql = @"update TP_PM_ScrapProduct set valueflag='0' where barcode=:barcode";
  16860. //oracleParameters = new OracleParameter[] {
  16861. // new OracleParameter(":barcode",entity.BarCode),
  16862. // };
  16863. //result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16864. //sql = @"update TP_PM_ResponProcedure set valueflag='0' where barcode=:barcode";
  16865. //oracleParameters = new OracleParameter[] {
  16866. // new OracleParameter(":barcode",entity.BarCode),
  16867. // };
  16868. //result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16869. ////sql = @"update TP_PM_ScrapResponsible set valueflag='0' where barcode=:barcode";
  16870. ////oracleParameters = new OracleParameter[] {
  16871. //// new OracleParameter(":barcode",entity.BarCode),
  16872. //// };
  16873. ////result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16874. #endregion
  16875. #region 删除在产回收站数据
  16876. sql = "delete TP_PM_InProductionTrash where barcode = :barcode";
  16877. oracleParameters = new OracleParameter[] {
  16878. new OracleParameter(":barcode",entity.BarCode),
  16879. };
  16880. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16881. #endregion
  16882. #region .在产表产品设置返工状态(IsReworkFlag = '1')。
  16883. sql = "update tp_pm_inproduction set GoodsLevelTypeID=2,IsReworkFlag='1',UpdateUserID=:UpdateUserID where barcode = :barcode";
  16884. oracleParameters = new OracleParameter[] {
  16885. new OracleParameter(":barcode",entity.BarCode),
  16886. new OracleParameter(":UpdateUserID",sUserInfo.UserID),
  16887. };
  16888. result += oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16889. // 注浆明细 产品等级
  16890. sql = @"update tp_pm_groutingdailydetail set GoodsLevelTypeID=2,updateuserid=:updateuserid
  16891. where barcode=:barcode";
  16892. oracleParameters = new OracleParameter[] {
  16893. new OracleParameter(":accountid", sUserInfo.AccountID),
  16894. new OracleParameter(":barcode",entity.BarCode),
  16895. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16896. };
  16897. result = oracleTrConn.ExecuteNonQuery(sql, oracleParameters);
  16898. #endregion
  16899. #region 6.半检登记的复检状态=0未复检,复检工号=null,复检时间=null。
  16900. // 复检撤销不需要记录撤销标识 - chenxy
  16901. string sqlUpdate = @"update TP_PM_SemiCheck set ReSemiCheckType='0' ,ReSemiCheckUserID=null,
  16902. ReSemiCheckUserCode=null,ReSemiCheckTime=null,updateuserid=:updateuserid
  16903. --,BackOutFlag=1,BackOutTime=sysdate,BackOutUserID=:BackOutUserID,BackOutUserCode=:BackOutUserCode
  16904. where SemiCheckID=:SemiCheckID";
  16905. oracleParameters = new OracleParameter[] {
  16906. //new OracleParameter(":ReSemiCheckUserID",entity.ReSemiCheckUserID),
  16907. //new OracleParameter(":ReSemiCheckUserCode",entity.ReSemiCheckUserCode),
  16908. new OracleParameter(":SemiCheckID",entity.SemiCheckID),
  16909. new OracleParameter(":updateuserid",sUserInfo.UserID),
  16910. //new OracleParameter(":BackOutUserID",sUserInfo.UserID),
  16911. //new OracleParameter(":BackOutUserCode",sUserInfo.UserCode),
  16912. };
  16913. result = oracleTrConn.ExecuteNonQuery(sqlUpdate, oracleParameters);
  16914. // 保存失败
  16915. if (result != Constant.INT_IS_ONE)
  16916. {
  16917. errMsg = string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  16918. }
  16919. #endregion
  16920. }
  16921. return errMsg;
  16922. }
  16923. catch (Exception ex)
  16924. {
  16925. throw ex;
  16926. }
  16927. }
  16928. #endregion
  16929. /// <summary>
  16930. /// 校验条码有效(撤销复检-不合格)
  16931. /// </summary>
  16932. /// <param name="oracleTrConn">连接对象</param>
  16933. /// <param name="barcode">条码</param>
  16934. /// <param name="sUserInfo">登录用户信息</param>
  16935. /// <returns>string</returns>
  16936. /// <remarks>
  16937. /// 王鑫 2016.06.28 新建
  16938. /// </remarks>
  16939. private static string CheckBarcodeByCancelReSemiCheckNoPass(IDBTransaction oracleTrConn,
  16940. string barcode,
  16941. SUserInfo sUserInfo
  16942. )
  16943. {
  16944. try
  16945. {
  16946. OracleParameter[] paras = new OracleParameter[]{
  16947. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  16948. };
  16949. string sql = @"
  16950. select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null
  16951. ";
  16952. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  16953. if (dsResult != null && dsResult.Tables[0].Rows.Count == 0)
  16954. {
  16955. return "条码[" + barcode + "]不在在产回收站中";
  16956. }
  16957. return null;
  16958. }
  16959. catch (Exception ex)
  16960. {
  16961. throw ex;
  16962. }
  16963. }
  16964. /// <summary>
  16965. /// 校验条码有效(撤销复检-合格)
  16966. /// </summary>
  16967. /// <param name="oracleTrConn">连接对象</param>
  16968. /// <param name="barcode">条码</param>
  16969. /// <param name="sUserInfo">登录用户信息</param>
  16970. /// <returns>string</returns>
  16971. /// <remarks>
  16972. /// 王鑫 2016.06.28 新建
  16973. /// </remarks>
  16974. private static string CheckBarcodeByCancelReSemiCheckPass(IDBTransaction oracleTrConn,
  16975. string barcode,
  16976. SUserInfo sUserInfo
  16977. )
  16978. {
  16979. try
  16980. {
  16981. OracleParameter[] paras = new OracleParameter[]{
  16982. new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  16983. };
  16984. string sql = @"
  16985. select InScrapFlag,
  16986. KilnCarID,
  16987. KilnCarName,
  16988. IsReworkFlag,
  16989. SemiCheckID from TP_PM_InProduction where barcode=:barcode
  16990. ";
  16991. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  16992. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  16993. {
  16994. if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1")
  16995. {
  16996. return "条码[" + barcode + "]已经报损待审批";
  16997. }
  16998. if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString()))
  16999. {
  17000. return "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ;
  17001. }
  17002. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  17003. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1")
  17004. {
  17005. return "条码[" + barcode + "]是半检返工状态";
  17006. }
  17007. if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2")
  17008. {
  17009. return "条码[" + barcode + "]是半检返修状态";
  17010. }
  17011. if (string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["SemiCheckID"].ToString()))
  17012. {
  17013. return "条码[" + barcode + "]已经做过其他操作,不能撤销";
  17014. }
  17015. }
  17016. else
  17017. {
  17018. return "条码[" + barcode + "]不在在产流程";
  17019. }
  17020. return null;
  17021. }
  17022. catch (Exception ex)
  17023. {
  17024. throw ex;
  17025. }
  17026. }
  17027. #region 生产订单 wangx 2017-2-7
  17028. /// <summary>
  17029. /// 保存订单
  17030. /// </summary>
  17031. /// <param name="order"></param>
  17032. /// <param name="sUserInfo"></param>
  17033. /// <returns></returns>
  17034. public static ServiceResultEntity SaveOrder(OrderEntity order, SUserInfo sUserInfo)
  17035. {
  17036. ServiceResultEntity entity = new ServiceResultEntity();
  17037. int returnRows = 0;
  17038. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17039. try
  17040. {
  17041. string sql = string.Empty;
  17042. OracleParameter[] Paras = null;
  17043. DataSet ds = null;
  17044. #region 查询订单号是否有重复
  17045. sql = "select OrderID from TP_PM_Order where OrderNo=:OrderNo and AccountID=:AccountID";
  17046. Paras = new OracleParameter[] {
  17047. new OracleParameter(":OrderNo",OracleDbType.Varchar2,
  17048. order.OrderNo,ParameterDirection.Input),
  17049. new OracleParameter(":AccountID",OracleDbType.Int32,
  17050. sUserInfo.AccountID,ParameterDirection.Input)
  17051. };
  17052. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  17053. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17054. {
  17055. if (order.OrderID == 0 || (order.OrderID != Convert.ToInt32(ds.Tables[0].Rows[0]["OrderID"])))
  17056. {
  17057. //重复订单号
  17058. returnRows = -1;
  17059. oracleTrConn.Rollback();
  17060. oracleTrConn.Disconnect();
  17061. entity.Result = returnRows;
  17062. entity.Message = "系统存在相同的生产订单号!";
  17063. return entity;
  17064. }
  17065. }
  17066. #endregion
  17067. #region 添加、编辑生产订单
  17068. if (order.OrderID == 0)
  17069. {
  17070. string sqlText = "SELECT SEQ_PM_Order_OrderID.NEXTVAL FROM dual";
  17071. int newOrderID = int.Parse(oracleTrConn.GetSqlResultToStr(sqlText));
  17072. sql = @"Insert into TP_PM_Order
  17073. (
  17074. OrderID,
  17075. OrderNo,
  17076. OrderDate,
  17077. Remarks,
  17078. AccountID,
  17079. ValueFlag,
  17080. DisplayNo,
  17081. CreateTime,
  17082. CreateUserID,
  17083. UpdateTime,
  17084. UpdateUserID
  17085. )
  17086. Values
  17087. (
  17088. :OrderID,
  17089. :OrderNo,
  17090. :OrderDate,
  17091. :Remarks,
  17092. :AccountID,
  17093. :ValueFlag,
  17094. :DisplayNo,
  17095. sysdate,
  17096. :CreateUserID,
  17097. sysdate,
  17098. :UpdateUserID
  17099. )";
  17100. Paras = new OracleParameter[] {
  17101. new OracleParameter(":OrderID",OracleDbType.Int32,newOrderID,ParameterDirection.Input),
  17102. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  17103. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  17104. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  17105. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  17106. new OracleParameter(":DisplayNo",OracleDbType.Int32,order.DisplayNo,ParameterDirection.Input),
  17107. new OracleParameter(":CreateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  17108. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  17109. new OracleParameter(":AccountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  17110. };
  17111. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17112. order.OrderID = newOrderID;
  17113. }
  17114. else
  17115. {
  17116. sql = @"Update TP_PM_Order
  17117. set
  17118. OrderNo=:OrderNo,
  17119. OrderDate=:OrderDate,
  17120. Remarks=:Remarks,
  17121. ValueFlag=:ValueFlag,
  17122. DisplayNo=:DisplayNo,
  17123. UpdateUserID=:UpdateUserID
  17124. where OrderID=:OrderID
  17125. ";
  17126. Paras = new OracleParameter[] {
  17127. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  17128. new OracleParameter(":OrderNo",OracleDbType.Varchar2,order.OrderNo,ParameterDirection.Input),
  17129. new OracleParameter(":OrderDate",OracleDbType.Date,order.OrderDate,ParameterDirection.Input),
  17130. new OracleParameter(":Remarks",OracleDbType.Varchar2,order.Remarks,ParameterDirection.Input),
  17131. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  17132. new OracleParameter(":DisplayNo",OracleDbType.Int32,order.DisplayNo,ParameterDirection.Input),
  17133. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  17134. };
  17135. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17136. }
  17137. #endregion
  17138. #region 保存订单明细
  17139. if (order.OrderDetail != null)
  17140. {
  17141. // 删除明细
  17142. sql = "DELETE FROM tp_pm_orderdetail od WHERE od.orderid = :orderid";
  17143. Paras = new OracleParameter[] { new OracleParameter(":orderid", order.OrderID) };
  17144. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17145. // 新建明细
  17146. sql = "INSERT INTO tp_pm_orderdetail\n" +
  17147. " (orderid\n" +
  17148. " ,materialcode\n" +
  17149. " ,accountid\n" +
  17150. " ,createuserid)\n" +
  17151. "VALUES\n" +
  17152. " (:orderid\n" +
  17153. " ,:materialcode\n" +
  17154. " ,:accountid\n" +
  17155. " ,:createuserid)";
  17156. foreach (DataRow row in order.OrderDetail.Rows)
  17157. {
  17158. Paras = new OracleParameter[]
  17159. {
  17160. new OracleParameter(":orderid", order.OrderID),
  17161. new OracleParameter(":materialcode", (row["materialcode"]+"").ToUpper().Trim()),
  17162. new OracleParameter(":createuserid",sUserInfo.UserID),
  17163. new OracleParameter(":accountid",sUserInfo.AccountID)
  17164. };
  17165. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17166. }
  17167. }
  17168. #endregion
  17169. if (returnRows <= 0)
  17170. {
  17171. oracleTrConn.Rollback();
  17172. oracleTrConn.Disconnect();
  17173. }
  17174. else
  17175. {
  17176. oracleTrConn.Commit();
  17177. oracleTrConn.Disconnect();
  17178. }
  17179. }
  17180. catch (Exception ex)
  17181. {
  17182. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17183. {
  17184. oracleTrConn.Rollback();
  17185. oracleTrConn.Disconnect();
  17186. }
  17187. throw ex;
  17188. }
  17189. finally
  17190. {
  17191. if (oracleTrConn.ConnState == ConnectionState.Open)
  17192. {
  17193. oracleTrConn.Disconnect();
  17194. }
  17195. }
  17196. entity.Result = returnRows;
  17197. return entity;
  17198. }
  17199. /// <summary>
  17200. /// 启用、停用订单标识
  17201. /// </summary>
  17202. /// <param name="order"></param>
  17203. /// <param name="sUserInfo"></param>
  17204. /// <returns></returns>
  17205. public static ServiceResultEntity ChangeOrderFlag(OrderEntity order, SUserInfo sUserInfo)
  17206. {
  17207. ServiceResultEntity entity = new ServiceResultEntity();
  17208. int returnRows = 0;
  17209. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17210. try
  17211. {
  17212. string sql = string.Empty;
  17213. OracleParameter[] Paras = null;
  17214. #region 添加、编辑生产订单
  17215. sql = @"Update TP_PM_Order
  17216. set
  17217. ValueFlag=:ValueFlag,
  17218. UpdateUserID=:UpdateUserID
  17219. where OrderID=:OrderID
  17220. ";
  17221. Paras = new OracleParameter[] {
  17222. new OracleParameter(":ValueFlag",OracleDbType.Int32,order.ValueFlag,ParameterDirection.Input),
  17223. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  17224. new OracleParameter(":OrderID",OracleDbType.Int32,order.OrderID,ParameterDirection.Input),
  17225. };
  17226. returnRows += oracleTrConn.ExecuteNonQuery(sql, Paras);
  17227. #endregion
  17228. if (returnRows <= 0)
  17229. {
  17230. oracleTrConn.Rollback();
  17231. oracleTrConn.Disconnect();
  17232. }
  17233. else
  17234. {
  17235. oracleTrConn.Commit();
  17236. oracleTrConn.Disconnect();
  17237. }
  17238. }
  17239. catch (Exception ex)
  17240. {
  17241. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  17242. {
  17243. oracleTrConn.Rollback();
  17244. oracleTrConn.Disconnect();
  17245. }
  17246. throw ex;
  17247. }
  17248. entity.Result = returnRows;
  17249. return entity;
  17250. }
  17251. #endregion
  17252. #region 保存交接
  17253. /// <summary>
  17254. /// 保存交接校验
  17255. /// </summary>
  17256. /// <param name="orderid"></param>
  17257. /// <param name="dtData"></param>
  17258. /// <param name="sUserInfo"></param>
  17259. /// <returns></returns>
  17260. public static ServiceResultEntity SaveFinishedHandover(int orderid, DataTable dtData, SUserInfo sUserInfo, string sapName = "")
  17261. {
  17262. ServiceResultEntity sre = new ServiceResultEntity();
  17263. string logid_bg = "0";
  17264. OracleParameter[] Paras = null;
  17265. // 条码串
  17266. string fifter = " AND (bar.barcode = '";
  17267. foreach (DataRow row in dtData.Rows)
  17268. {
  17269. fifter += row["barcode"] + "' OR bar.barcode = '";
  17270. }
  17271. fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  17272. IDBTransaction oracleTrConn2 = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17273. try
  17274. {
  17275. #region 判断订单是否有明细
  17276. DataTable dtMaterialcode = null;
  17277. string sql =
  17278. "SELECT COUNT(1) AS detailcount\n" +
  17279. " FROM tp_pm_orderdetail od\n" +
  17280. " WHERE od.orderid = :orderid and od.valueflag = '1'";
  17281. Paras = new OracleParameter[]
  17282. {
  17283. new OracleParameter(":orderid", orderid)
  17284. };
  17285. bool isExistsDetail = true;
  17286. object detailcount = oracleTrConn2.GetSqlResultToObj(sql, Paras);
  17287. if (detailcount == null || detailcount == DBNull.Value || Convert.ToInt32(detailcount) == 0)
  17288. {
  17289. isExistsDetail = false;
  17290. }
  17291. #endregion
  17292. for (int i = 0; i < dtData.Rows.Count; i++)
  17293. {
  17294. if (isExistsDetail)
  17295. {
  17296. #region 校验产品是否在订单里
  17297. sql = "SELECT gdd.materialcode\n" +
  17298. " ,(select od.materialcode from tp_pm_orderdetail od where od.orderid = :orderid AND od.valueflag = '1' and gdd.materialcode = od.materialcode) " +
  17299. " AS ordermaterialcode\n" +
  17300. " FROM tp_pm_groutingdailydetail gdd\n" +
  17301. " WHERE gdd.barcode = :barcode";
  17302. Paras = new OracleParameter[]
  17303. {
  17304. new OracleParameter(":orderid", orderid),
  17305. new OracleParameter(":barcode", dtData.Rows[i]["barcode"].ToString())
  17306. };
  17307. dtMaterialcode = oracleTrConn2.GetSqlResultToDt(sql, Paras);
  17308. if (dtMaterialcode == null || dtMaterialcode.Rows.Count == 0)
  17309. {
  17310. sre.Result = -2;
  17311. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}不存在";
  17312. return sre;
  17313. }
  17314. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["materialcode"] + ""))
  17315. {
  17316. sre.Result = -2;
  17317. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}没有物料编码,不能上传数据";
  17318. return sre;
  17319. }
  17320. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["ordermaterialcode"] + ""))
  17321. {
  17322. sre.Result = -2;
  17323. sre.Message = "此订单不包含【" + dtMaterialcode.Rows[0]["materialcode"] + "】物料,不能上传数据";
  17324. return sre;
  17325. }
  17326. #endregion
  17327. }
  17328. #region 产品是否在产成表中
  17329. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  17330. Paras = new OracleParameter[]{
  17331. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  17332. };
  17333. DataSet ds = oracleTrConn2.GetSqlResultToDs(sql, Paras);
  17334. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17335. {
  17336. #region 是否交接过
  17337. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  17338. if (!string.IsNullOrEmpty(fhUserCode))
  17339. {
  17340. sre.Result = -2; //已交接,不能再次进行交接
  17341. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  17342. return sre;
  17343. }
  17344. #endregion
  17345. }
  17346. else
  17347. {
  17348. #region 不是产成品
  17349. sre.Result = -1; //不是产成品
  17350. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  17351. return sre;
  17352. #endregion
  17353. }
  17354. #endregion
  17355. }
  17356. sql = @"
  17357. SELECT COUNT(DISTINCT FINISHEDLOADBATCHNO) CC
  17358. FROM TP_PM_FINISHEDPRODUCT BAR
  17359. WHERE 1 = 1 " + fifter;
  17360. string cc = oracleTrConn2.GetSqlResultToStr(sql);
  17361. if (!"1".Equals(cc))
  17362. {
  17363. sre.Result = -2;
  17364. sre.Message = "不允许多板一起交接";
  17365. return sre;
  17366. }
  17367. sql = @"
  17368. SELECT DISTINCT BGLOGID
  17369. FROM TP_PM_FINISHEDPRODUCT BAR
  17370. WHERE 1 = 1 " + fifter;
  17371. string currentBGlogid = oracleTrConn2.GetSqlResultToStr(sql);
  17372. if (string.IsNullOrEmpty(currentBGlogid))
  17373. {
  17374. logid_bg = oracleTrConn2.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  17375. sql = @"
  17376. UPDATE TP_PM_FINISHEDPRODUCT BAR
  17377. SET BAR.BGLOGIDCX = NULL
  17378. ,BAR.BGLOGID = " + logid_bg + @"
  17379. WHERE 1 = 1 " + fifter;
  17380. int r2 = oracleTrConn2.ExecuteNonQuery(sql);
  17381. }
  17382. else
  17383. {
  17384. logid_bg = currentBGlogid;
  17385. }
  17386. oracleTrConn2.Commit();
  17387. oracleTrConn2.Disconnect();
  17388. }
  17389. catch (Exception ex)
  17390. {
  17391. throw ex;
  17392. }
  17393. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  17394. try
  17395. {
  17396. #region 产成品交接
  17397. if (dtData == null || dtData.Rows.Count == 0)
  17398. {
  17399. sre.Result = -2;
  17400. sre.Message = "条码信息不能为空";
  17401. return sre;
  17402. }
  17403. string sql = string.Empty;
  17404. DataSet ds = null;
  17405. oracleTrConn.Connect();
  17406. // 包装装板,产成品交接不限制
  17407. //string GoodsModel = string.Empty;
  17408. //int? logoID = null;
  17409. //string logoName = string.Empty;
  17410. //int PlateLimitNum = 0;
  17411. //string _isEnable_S_PM_011 = "0";
  17412. //// 2.产成品交接是否限制同型号
  17413. //string _isEnable_S_PM_012 = "0";
  17414. //// 3.产成品交接是否限制每板装板数量(必须先启用限制同型号);
  17415. //string _isEnable_S_PM_013 = "0";
  17416. //// 读取系统设置
  17417. //sql = "select settingcode,settingvalue from tp_mst_systemsetting where settingcode in ('S_PM_011','S_PM_012','S_PM_013') and accountid=" + sUserInfo.AccountID;
  17418. //ds = oracleTrConn.GetSqlResultToDs(sql);
  17419. //foreach (DataRow dr in ds.Tables[0].Rows)
  17420. //{
  17421. // if (dr["settingcode"] == "S_PM_011")
  17422. // _isEnable_S_PM_011 = dr["settingcode"].ToString();
  17423. // else if (dr["settingcode"] == "S_PM_012")
  17424. // _isEnable_S_PM_012 = dr["settingcode"].ToString();
  17425. // else if (dr["settingcode"] == "S_PM_013")
  17426. // _isEnable_S_PM_013 = dr["settingcode"].ToString();
  17427. //}
  17428. // 本批交接的批次号
  17429. #region 判断订单是否有明细
  17430. string fhBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  17431. DataTable dtMaterialcode = null;
  17432. sql = "SELECT COUNT(1) AS detailcount\n" +
  17433. " FROM tp_pm_orderdetail od\n" +
  17434. " WHERE od.orderid = :orderid and od.valueflag = '1'";
  17435. Paras = new OracleParameter[]
  17436. {
  17437. new OracleParameter(":orderid", orderid)
  17438. };
  17439. bool isExistsDetail = true;
  17440. object detailcount = oracleTrConn.GetSqlResultToObj(sql, Paras);
  17441. if (detailcount == null || detailcount == DBNull.Value || Convert.ToInt32(detailcount) == 0)
  17442. {
  17443. isExistsDetail = false;
  17444. }
  17445. #endregion
  17446. for (int i = 0; i < dtData.Rows.Count; i++)
  17447. {
  17448. if (isExistsDetail)
  17449. {
  17450. #region 校验产品是否在订单里
  17451. //sql = "SELECT gdd.materialcode\n" +
  17452. //" ,od.materialcode AS ordermaterialcode\n" +
  17453. //" FROM tp_pm_groutingdailydetail gdd\n" +
  17454. //" LEFT JOIN tp_pm_orderdetail od\n" +
  17455. //" ON gdd.materialcode = od.materialcode\n" +
  17456. //" AND od.orderid = :orderid\n" +
  17457. //" AND od.valueflag = '1'\n" +
  17458. //" WHERE gdd.barcode = :barcode";
  17459. sql = "SELECT gdd.materialcode\n" +
  17460. " ,(select od.materialcode from tp_pm_orderdetail od where od.orderid = :orderid AND od.valueflag = '1' and gdd.materialcode = od.materialcode) " +
  17461. " AS ordermaterialcode\n" +
  17462. " FROM tp_pm_groutingdailydetail gdd\n" +
  17463. " WHERE gdd.barcode = :barcode";
  17464. Paras = new OracleParameter[]
  17465. {
  17466. new OracleParameter(":orderid", orderid),
  17467. new OracleParameter(":barcode", dtData.Rows[i]["barcode"].ToString())
  17468. };
  17469. dtMaterialcode = oracleTrConn.GetSqlResultToDt(sql, Paras);
  17470. if (dtMaterialcode == null || dtMaterialcode.Rows.Count == 0)
  17471. {
  17472. sre.Result = -2;
  17473. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}不存在";
  17474. return sre;
  17475. }
  17476. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["materialcode"] + ""))
  17477. {
  17478. sre.Result = -2;
  17479. sre.Message = $"当前产品条码{dtData.Rows[i]["barcode"]}没有物料编码,不能上传数据";
  17480. return sre;
  17481. }
  17482. if (string.IsNullOrWhiteSpace(dtMaterialcode.Rows[0]["ordermaterialcode"] + ""))
  17483. {
  17484. sre.Result = -2;
  17485. sre.Message = "此订单不包含【" + dtMaterialcode.Rows[0]["materialcode"] + "】物料,不能上传数据";
  17486. return sre;
  17487. }
  17488. #endregion
  17489. }
  17490. #region 产品是否在产成表中
  17491. sql = "select FHUserCode,GoodsCode,GoodsID from TP_PM_FinishedProduct where Barcode=:Barcode";
  17492. Paras = new OracleParameter[]{
  17493. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  17494. };
  17495. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  17496. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17497. {
  17498. #region 是否交接过
  17499. string fhUserCode = ds.Tables[0].Rows[0]["FHUserCode"].ToString();
  17500. if (!string.IsNullOrEmpty(fhUserCode))
  17501. {
  17502. sre.Result = -2; //已交接,不能再次进行交接
  17503. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】已交接,不能再次进行交接";
  17504. return sre;
  17505. }
  17506. #endregion
  17507. }
  17508. else
  17509. {
  17510. #region 不是产成品
  17511. sre.Result = -1; //不是产成品
  17512. sre.Message = "此产品【" + dtData.Rows[i]["barcode"].ToString() + "】不是产成品";
  17513. return sre;
  17514. #endregion
  17515. }
  17516. #endregion
  17517. /* 包装装板,产成品交接不限制
  17518. if (i == 0)
  17519. {
  17520. #region 记录产品型号,最大限制数量,商标
  17521. GoodsModel = dtData.Rows[i]["GoodsModel"].ToString();
  17522. logoID = Convert.ToInt32(dtData.Rows[i]["logoID"]);
  17523. logoName = dtData.Rows[i]["logoName"].ToString();
  17524. sql = "select PlateLimitNum from TP_MST_Goods where GoodsID=:GoodsID";
  17525. Paras = new OracleParameter[]{
  17526. new OracleParameter(":GoodsID",OracleDbType.Int32, ds.Tables[0].Rows[0]["GoodsID"],ParameterDirection.Input),
  17527. };
  17528. ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  17529. if (ds != null && ds.Tables[0].Rows.Count > 0)
  17530. {
  17531. if (_isEnable_S_PM_013 == "1" && _isEnable_S_PM_012 == "1")
  17532. {
  17533. PlateLimitNum = Convert.ToInt32(ds.Tables[0].Rows[0]["PlateLimitNum"]);
  17534. }
  17535. }
  17536. #endregion
  17537. }
  17538. else
  17539. {
  17540. #region 启用限制同商标
  17541. if (_isEnable_S_PM_011 == "1")
  17542. {
  17543. if (Convert.ToInt32(dtData.Rows[0]["logoid"]) != logoID)
  17544. {
  17545. sre.Result = -3;
  17546. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的商标【"
  17547. + dtData.Rows[0]["logoname"] + "】与此批次商标【" + logoName + "】不同,不能进行该操作。 ";
  17548. isError = true;
  17549. break;
  17550. }
  17551. }
  17552. #endregion
  17553. #region 启用限制同型号
  17554. if (_isEnable_S_PM_012 == "1")
  17555. {
  17556. if (dtData.Rows[0]["GoodsModel"].ToString() != GoodsModel)
  17557. {
  17558. sre.Result = -4;
  17559. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】的型号【"
  17560. + dtData.Rows[0]["GoodsModel"] + "】与此批次型号【" + GoodsModel + "】不同,不能进行该操作。 ";
  17561. isError = true;
  17562. break;
  17563. }
  17564. }
  17565. #endregion
  17566. #region 产品列表是否大于限制条数
  17567. if (PlateLimitNum > 0)
  17568. {
  17569. if (dtData.Rows.Count > PlateLimitNum)
  17570. {
  17571. sre.Result = -5;
  17572. sre.Message = "产品列表数量大于每板装板数量【" + PlateLimitNum + "】";
  17573. isError = true;
  17574. break;
  17575. }
  17576. }
  17577. #endregion
  17578. }
  17579. */
  17580. #region 更新产成品相关信息
  17581. sql = @"update TP_PM_FinishedProduct
  17582. set FHUserID=:FHUserID,
  17583. FHUserCode=:FHUserCode,
  17584. FHBatchNo=:FHBatchNo,
  17585. FHTime=sysdate,
  17586. FHOrderID=:FHOrderID,
  17587. UpdateUserID=:UpdateUserID
  17588. where Barcode=:Barcode";
  17589. Paras = new OracleParameter[]{
  17590. new OracleParameter(":Barcode",OracleDbType.Varchar2, dtData.Rows[i]["barcode"].ToString(),ParameterDirection.Input),
  17591. new OracleParameter(":FHUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  17592. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  17593. new OracleParameter(":FHUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  17594. new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  17595. new OracleParameter(":FHOrderID",OracleDbType.Int32, orderid,ParameterDirection.Input),
  17596. };
  17597. oracleTrConn.ExecuteNonQuery(sql, Paras);
  17598. #endregion
  17599. }
  17600. #endregion
  17601. #region 同步SAP
  17602. #region 同步日志
  17603. object isExists;
  17604. string sqlString = string.Empty;
  17605. OracleParameter[] oracleParameter = null;
  17606. int r = 0;
  17607. // 条码串
  17608. //string fifter = " AND (bar.barcode = '";
  17609. //foreach (DataRow row in dtData.Rows)
  17610. //{
  17611. // fifter += row["barcode"] + "' OR bar.barcode = '";
  17612. //}
  17613. //fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  17614. //sqlString = "SELECT 1\n" +
  17615. //" FROM tp_pm_groutingdailydetail bar\n" +
  17616. //" WHERE bar.issync = '1'\n" + fifter;
  17617. //object isExists = oracleTrConn.GetSqlResultToObj(sqlString, oracleParameter);
  17618. //if (isExists != null)
  17619. //{
  17620. // sre.Result = -2;
  17621. // sre.Message = "当前产品已经同步过,不能重复同步。";
  17622. // return sre;
  17623. //}
  17624. DateTime date = DateTime.Now;
  17625. string yyyymmdd = date.ToString("yyyyMMdd");
  17626. sqlString = "select workcode from tp_mst_account where rownum = 1";
  17627. string workcode = oracleTrConn.GetSqlResultToStr(sqlString);
  17628. //DateTime datebegin = date.Date;
  17629. //DateTime dateend = date.Date.AddDays(1);
  17630. //sqlString =
  17631. //"SELECT :yyyymmdd AS yyyymmdd\n" +
  17632. //" ,SYSDATE AS createtime\n" +
  17633. //" ,tt.goodscode\n" +
  17634. //" ,tt.sapcode\n" +
  17635. //" ,tt.usercode\n" +
  17636. //" ,tt.ordercode\n" +
  17637. //" ,tt.orderitem\n" +
  17638. //" ,tt.zscs\n" +
  17639. //" ,to_char(tt.outputnum) AS outputnum\n" +
  17640. //" ,to_char(tt.recoverynum) AS recoverynum\n" +
  17641. //" FROM (SELECT t.goodscode\n" +
  17642. //" ,t.sapcode\n" +
  17643. //" ,t.usercode\n" +
  17644. //" ,t.ordercode\n" +
  17645. //" ,t.orderitem\n" +
  17646. //" ,t.zscs\n" +
  17647. //" ,SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  17648. //" ,SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  17649. //" FROM (SELECT gh.goodscode\n" +
  17650. //" ,gh.sapcode\n" +
  17651. //" ,u.usercode\n" +
  17652. //" ,o.orderno\n" +
  17653. //" ,bar.recyclingflag\n" +
  17654. //" ,gh.datatype\n" +
  17655. //" ,'' zscs\n" +
  17656. ////" ,g.goods_line_code zscs\n" +
  17657. //" ,CASE\n" +
  17658. //" WHEN o.orderid IS NULL\n" +
  17659. //" OR o.orderno LIKE 'HEGII%' THEN\n" +
  17660. //" ' '\n" +
  17661. //" WHEN instr(o.orderno, '/') = 0 THEN\n" +
  17662. //" to_char(o.orderno)\n" +
  17663. //" ELSE\n" +
  17664. //" to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  17665. //" END ordercode -- 销售凭证\n" +
  17666. //" ,CASE\n" +
  17667. //" WHEN o.orderid IS NULL\n" +
  17668. //" OR o.orderno LIKE 'HEGII%'\n" +
  17669. //" OR instr(o.orderno, '/') = 0 THEN\n" +
  17670. //" '0'\n" +
  17671. //" WHEN instr(o.orderno, '#') = 0 THEN\n" +
  17672. //" to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  17673. //" ELSE\n" +
  17674. //" to_char(substr(o.orderno\n" +
  17675. //" ,instr(o.orderno, '/') + 1\n" +
  17676. //" ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  17677. //" END orderitem -- 销售凭证项目\n" +
  17678. //" FROM (SELECT gch.goodscode\n" +
  17679. //" ,gch.sapcode\n" +
  17680. //" ,decode(gch.datatype, 53, 51, gch.datatype) datatype\n" +
  17681. //" ,gch.userid\n" +
  17682. //" ,gch.groutingdailydetailid\n" +
  17683. //" ,gch.otherid\n" +
  17684. //" FROM tp_pm_goodschangehistory gch\n" +
  17685. //" WHERE gch.datatype IN (51, 52, 53)\n" +
  17686. //" UNION ALL\n" +
  17687. //" SELECT gch.goodscode\n" +
  17688. //" ,gch.sapcode\n" +
  17689. //" ,52 datatype\n" +
  17690. //" ,gch.userid\n" +
  17691. //" ,gch.groutingdailydetailid\n" +
  17692. //" ,gch.goodsidafter\n" +
  17693. //" FROM tp_pm_goodschangehistory gch\n" +
  17694. //" WHERE gch.datatype = 53) gh\n" +
  17695. //" INNER JOIN tp_mst_user u\n" +
  17696. //" ON u.userid = gh.userid\n" +
  17697. //" INNER JOIN tp_pm_groutingdailydetail bar\n" +
  17698. //" ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" + fifter +
  17699. ////" AND bar.barcode IN (" + fifter + ")\n" +
  17700. //" INNER JOIN tp_mst_goods g\n" +
  17701. //" ON g.goodsid = bar.goodsid\n" +
  17702. //" LEFT JOIN tp_pm_order o\n" +
  17703. //" ON o.orderid = gh.otherid) t\n" +
  17704. //" GROUP BY t.goodscode\n" +
  17705. //" ,t.sapcode\n" +
  17706. //" ,t.usercode\n" +
  17707. //" ,t.ordercode\n" +
  17708. //" ,t.orderitem,t.zscs) tt\n" +
  17709. //" WHERE tt.outputnum <> 0\n" +
  17710. //" OR tt.recoverynum <> 0\n" +
  17711. //" ORDER BY tt.goodscode\n" +
  17712. //" ,tt.sapcode\n" +
  17713. //" ,tt.usercode\n" +
  17714. //" ,tt.ordercode\n" +
  17715. //" ,tt.orderitem,tt.zscs";
  17716. sqlString =
  17717. "SELECT :yyyymmdd AS yyyymmdd\n" +
  17718. " ,SYSDATE AS createtime\n" +
  17719. " ,tt.goodscode\n" +
  17720. " ,tt.sapcode\n" +
  17721. " ,tt.usercode\n" +
  17722. " ,tt.ordercode\n" +
  17723. " ,tt.orderitem\n" +
  17724. " ,tt.testmouldflag\n" +
  17725. " ,tt.zscs\n" +
  17726. " ,to_char(tt.outputnum) AS outputnum\n" +
  17727. " ,to_char(tt.recoverynum) AS recoverynum\n" +
  17728. " FROM (SELECT t.goodscode\n" +
  17729. " ,t.sapcode\n" +
  17730. " ,t.usercode\n" +
  17731. " ,t.ordercode\n" +
  17732. " ,t.orderitem\n" +
  17733. " ,t.testmouldflag\n" +
  17734. " ,t.zscs\n" +
  17735. //" ,SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  17736. //" ,SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  17737. " ,SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum\n" +
  17738. " ,SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum\n" +
  17739. " FROM (SELECT bar.goodscode\n" +
  17740. //" ,gh.sapcode\n" +
  17741. //" ,u.usercode\n" +
  17742. " ,bar.materialcode sapcode\n" +
  17743. " ,gh.fhusercode usercode\n" +
  17744. " ,o.orderno\n" +
  17745. " ,bar.recyclingflag\n" +
  17746. //" ,gh.datatype\n" +
  17747. //" ,'' zscs\n" +
  17748. //" ,case when g.goods_line_type = 1 or gl.highpressureflag = '1' then 'G' else 'L' end zscs\n" +
  17749. " ,bar.testmouldflag" +
  17750. " ,decode(bar.testmouldflag,'0', '', decode(g.goods_line_code,'G','A','M','A','L','B','')) as zscs\n" +
  17751. " ,CASE\n" +
  17752. " WHEN o.orderid IS NULL\n" +
  17753. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  17754. " ' '\n" +
  17755. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  17756. " to_char(o.orderno)\n" +
  17757. " ELSE\n" +
  17758. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  17759. " END ordercode -- 销售凭证\n" +
  17760. " ,CASE\n" +
  17761. " WHEN o.orderid IS NULL\n" +
  17762. " OR o.orderno LIKE 'HEGII%'\n" +
  17763. " OR instr(o.orderno, '/') = 0 THEN\n" +
  17764. " '0'\n" +
  17765. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  17766. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  17767. " ELSE\n" +
  17768. " to_char(substr(o.orderno\n" +
  17769. " ,instr(o.orderno, '/') + 1\n" +
  17770. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  17771. " END orderitem -- 销售凭证项目\n" +
  17772. " FROM tp_pm_groutingdailydetail bar\n" +
  17773. //" INNER JOIN tp_mst_user u\n" +
  17774. //" ON u.userid = gh.userid\n" +
  17775. " INNER JOIN tp_pm_finishedproduct gh\n" +
  17776. " ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" +
  17777. //" AND bar.barcode IN (" + fifter + ")\n" +
  17778. //" INNER JOIN tp_pc_groutingline gl\n" +
  17779. //" ON gl.groutinglineid = bar.groutinglineid\n" +
  17780. " INNER JOIN tp_mst_goods g\n" +
  17781. " ON g.goodsid = bar.goodsid\n" +
  17782. " LEFT JOIN tp_pm_order o\n" +
  17783. " ON o.orderid = gh.fhorderid where 1=1 " + fifter + ") t\n" +
  17784. " GROUP BY t.goodscode\n" +
  17785. " ,t.sapcode\n" +
  17786. " ,t.usercode\n" +
  17787. " ,t.ordercode\n" +
  17788. " ,t.orderitem,t.testmouldflag,t.zscs) tt\n" +
  17789. " WHERE tt.outputnum <> 0\n" +
  17790. " OR tt.recoverynum <> 0\n" +
  17791. " ORDER BY tt.goodscode\n" +
  17792. " ,tt.sapcode\n" +
  17793. " ,tt.usercode\n" +
  17794. " ,tt.ordercode\n" +
  17795. " ,tt.orderitem,tt.zscs";
  17796. oracleParameter = new OracleParameter[]
  17797. {
  17798. new OracleParameter(":yyyymmdd", yyyymmdd)
  17799. };
  17800. DataTable workData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  17801. // 同步日志ID
  17802. string logid = oracleTrConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  17803. //string msg = "data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  17804. // dateend.ToString("yyyyMMdd-HHmm");
  17805. string msg = $"整板条码[{logid}]:" + dtData.Rows[0]["barcode"];
  17806. sqlString = "insert into tsap_hegii_datalog\n" +
  17807. " (LogID\n" +
  17808. " ,LogType\n" +
  17809. " ,BeginTime\n" +
  17810. " ,YYYYMMDD\n" +
  17811. " ,WorkCode\n" +
  17812. " ,DataCode\n" +
  17813. " ,DataStuts\n" +
  17814. " ,DataMSG\n" +
  17815. " ,CreateUserID\n" +
  17816. " ,DataLogID)\n" +
  17817. "values\n" +
  17818. " (:LogID\n" +
  17819. " ,'2'\n" +
  17820. " ,sysdate\n" +
  17821. " ,:YYYYMMDD\n" +
  17822. " ,:WorkCode\n" +
  17823. " ,'60'\n" +
  17824. " ,'S'\n" +
  17825. " ,:DataMSG\n" +
  17826. " ,:CreateUserID\n" +
  17827. " ,:LogID)";
  17828. oracleParameter = new OracleParameter[]
  17829. {
  17830. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  17831. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  17832. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  17833. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  17834. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  17835. };
  17836. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  17837. #endregion
  17838. #region 同步条码明细
  17839. sqlString =
  17840. "INSERT INTO tsap_hegii_finishedproduct\n" +
  17841. " (yyyymmdd\n" +
  17842. " ,workcode\n" +
  17843. " ,barcode\n" +
  17844. " ,outcode\n" +
  17845. " ,goodscode\n" +
  17846. " ,sapcode\n" +
  17847. " ,sapflbatchno\n" +
  17848. " ,sapfhundoflag\n" +
  17849. " ,ordercode\n" +
  17850. " ,orderitem, LOGID\n" +
  17851. " ,securitycode,ZTYPE)\n" +
  17852. " SELECT :yyyymmdd\n" +
  17853. " ,:workcode\n" +
  17854. " ,bar.barcode\n" +
  17855. " ,nvl(gdd.outlabelcode, (g.materialcode || :workcode || gdd.onlycode))\n" +
  17856. " ,gdd.goodscode\n" +
  17857. " ,nvl(gdd.materialcode, nvl(g.materialcode, g.goodscode))\n" +
  17858. " ,nvl(bar.finishedloadbatchno, bar.fhbatchno)\n" +
  17859. //" ,decode(gdd.sapfhundoflag, '1', 'X', ' ')\n" +
  17860. " ,' '\n" +
  17861. " ,CASE\n" +
  17862. " WHEN o.orderid IS NULL\n" +
  17863. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  17864. " NULL\n" +
  17865. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  17866. " to_char(o.orderno)\n" +
  17867. " ELSE\n" +
  17868. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  17869. " END ordercode -- 销售凭证\n" +
  17870. " ,CASE\n" +
  17871. " WHEN o.orderid IS NULL\n" +
  17872. " OR o.orderno LIKE 'HEGII%'\n" +
  17873. " OR instr(o.orderno, '/') = 0 THEN\n" +
  17874. " '0'\n" +
  17875. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  17876. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  17877. " ELSE\n" +
  17878. " to_char(substr(o.orderno\n" +
  17879. " ,instr(o.orderno, '/') + 1\n" +
  17880. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  17881. " END orderitem -- 销售凭证项目\n" +
  17882. " ,:LOGID\n" +
  17883. " ,gdd.securitycode,'S'\n" +
  17884. " FROM tp_pm_finishedproduct bar\n" +
  17885. " INNER JOIN tp_pm_groutingdailydetail gdd\n" +
  17886. " ON gdd.barcode = bar.barcode\n" +
  17887. " INNER JOIN tp_mst_goods g\n" +
  17888. " ON g.goodsid = gdd.goodsid\n" +
  17889. " LEFT JOIN tp_pm_order o\n" +
  17890. " ON o.orderid = bar.fhorderid\n" +
  17891. " WHERE 1 = 1 " + fifter;
  17892. //" WHERE :FHBatchNo = fhBatchNo";
  17893. oracleParameter = new OracleParameter[]
  17894. {
  17895. //new OracleParameter(":FHBatchNo",OracleDbType.Varchar2, fhBatchNo,ParameterDirection.Input),
  17896. new OracleParameter(":yyyymmdd", yyyymmdd),
  17897. new OracleParameter(":workcode", workcode),
  17898. new OracleParameter(":LOGID", logid)
  17899. };
  17900. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  17901. sqlString =
  17902. "select bar.yyyymmdd\n" +
  17903. " ,bar.workcode\n" +
  17904. " ,bar.barcode\n" +
  17905. " ,bar.outcode\n" +
  17906. " ,bar.goodscode\n" +
  17907. " ,bar.sapcode\n" +
  17908. " ,bar.sapflbatchno\n" +
  17909. " ,bar.sapfhundoflag\n" +
  17910. " ,bar.ordercode\n" +
  17911. " ,bar.orderitem\n" +
  17912. " ,bar.securitycode\n" +
  17913. //" from tsap_hegii_finishedproduct bar where ztype is null " + fifter +
  17914. " from tsap_hegii_finishedproduct bar where LOGID=:LOGID " +
  17915. " order by bar.sapflbatchno, bar.barcode";
  17916. oracleParameter = new OracleParameter[]
  17917. {
  17918. new OracleParameter(":LOGID", logid)
  17919. };
  17920. DataTable fpData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  17921. #region 注销
  17922. //// 单次传输最大条数
  17923. //int maxCount = 100000;
  17924. //List<Zppfm010> sapParameterList = new List<Zppfm010>();
  17925. //if (fpData != null && fpData.Rows.Count > 0)
  17926. //{
  17927. // int index = 0;
  17928. // //Zppfm010 sapParameter = new Zppfm010();
  17929. // //sapParameter.Zsum = maxCount;
  17930. // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  17931. // List<ZSPP110> tableInList = new List<ZSPP110>();
  17932. // foreach (DataRow item in fpData.Rows)
  17933. // {
  17934. // if (index >= maxCount)
  17935. // {
  17936. // Zppfm010 sapItem = new Zppfm010();
  17937. // sapItem.ZSUM = tableInList.Count;
  17938. // sapItem.TABLE_IN = tableInList.ToArray();
  17939. // sapParameterList.Add(sapItem);
  17940. // index = 0;
  17941. // tableInList.Clear();
  17942. // }
  17943. // ZSPP110 info110 = new ZSPP110();
  17944. // // 时间戳
  17945. // info110.ZSCNU = yyyymmdd;
  17946. // // 工厂
  17947. // info110.WERKS = workcode;
  17948. // // 生产条码
  17949. // info110.ZSCTM = item["barcode"].ToString();
  17950. // //生产防伪码 xuwei add 2021-12-09
  17951. // info110.SECURITYCODE = item["securitycode"].ToString();
  17952. // // 包装条码
  17953. // info110.ZBZTM = item["outcode"].ToString();
  17954. // // 产品编码
  17955. // info110.ZCPBM = item["goodscode"].ToString();
  17956. // // 物料编号
  17957. // info110.MATNR = item["sapcode"].ToString();
  17958. // // 包装整板标识
  17959. // info110.ZBZBS = item["sapflbatchno"].ToString();
  17960. // // 重新绑定标识
  17961. // info110.ZCXBD = item["sapfhundoflag"].ToString();
  17962. // // 销售凭证
  17963. // info110.KDAUF = item["ordercode"].ToString();
  17964. // // 销售凭证项目
  17965. // info110.KDPOS = item["orderitem"].ToString();
  17966. // info110.UZEIT = date.ToString("HH:mm:ss");
  17967. // info110.ZCODEN = "";
  17968. // info110.ZCODEYZM = "";
  17969. // //if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  17970. // //{
  17971. // // continue;
  17972. // //}
  17973. // tableInList.Add(info110);
  17974. // index++;
  17975. // }
  17976. // Zppfm010 sapParameter010 = new Zppfm010();
  17977. // sapParameter010.ZSUM = tableInList.Count;
  17978. // sapParameter010.TABLE_IN = tableInList.ToArray();
  17979. // sapParameterList.Add(sapParameter010);
  17980. // index = 0;
  17981. // tableInList.Clear();
  17982. //}
  17983. //else
  17984. //{
  17985. // Zppfm010 sapParameter010 = new Zppfm010();
  17986. // sapParameter010.ZSUM = 0;
  17987. // sapParameter010.TABLE_IN = new ZSPP110[sapParameter010.ZSUM];
  17988. // sapParameterList.Add(sapParameter010);
  17989. //}
  17990. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  17991. //// 当前时间
  17992. //DateTime dateTimeNow = DateTime.Now;
  17993. //DateTime setTime = new DateTime(2022, 10, 1, 0, 0, 0);
  17994. //if (dateTimeNow < setTime)
  17995. //{
  17996. // //foreach (Zppfm010 sapParameter010 in sapParameterList)
  17997. // //{
  17998. // // //ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd);
  17999. // // //ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010_240(sapParameter010, yyyymmdd, sapName);
  18000. // // ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd, sapName);
  18001. // // //sre.Message = result010.ZMSG;
  18002. // // sre.Message = $"{result010.ZMSG}({sapParameter010.ZSUM})";
  18003. // // sre.Result = result010.ZTYPE;
  18004. // // if (result010.TABLE_OUT != null && result010.TABLE_OUT.Length > 0)
  18005. // // {
  18006. // // sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where barcode=:barcode and sapflbatchno=:sapflbatchno and logid=:logid";
  18007. // // foreach (ZSPP110 item in result010.TABLE_OUT)
  18008. // // {
  18009. // // oracleParameter = new OracleParameter[]
  18010. // // {
  18011. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  18012. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  18013. // // new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  18014. // // new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input),
  18015. // // new OracleParameter(":logid", logid)
  18016. // // };
  18017. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18018. // // }
  18019. // // }
  18020. // // if (result010.ZTYPE != "S")
  18021. // // {
  18022. // // sre.Result = -2;
  18023. // // sre.Message = "同步条码失败," + result010.ZMSG;
  18024. // // return sre;
  18025. // // }
  18026. // //}
  18027. //}
  18028. #endregion
  18029. #endregion
  18030. #region 同步产量
  18031. //Zppfm008 sapParameter = new Zppfm008();
  18032. if (workData != null && workData.Rows.Count > 0)
  18033. {
  18034. //sapParameter.ZSUM = workData.Rows.Count;
  18035. //sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  18036. sqlString = "insert into TSAP_HEGII_WorkData\n" +
  18037. " (YYYYMMDD\n" +
  18038. " ,WorkCode\n" +
  18039. " ,DataCode\n" +
  18040. " ,GoodsCode\n" +
  18041. " ,SAPCode\n" +
  18042. " ,UserCode\n" +
  18043. " ,OutputNum\n" +
  18044. " ,RECOVERYNUM\n" +
  18045. " ,ORDERCODE\n" +
  18046. " ,ORDERITEM\n" +
  18047. " ,testmouldflag\n" +
  18048. " ,zscs\n" +
  18049. " ,LogID,createtime)\n" +
  18050. "values\n" +
  18051. " ('" + yyyymmdd + "'\n" +
  18052. " ,'" + workcode + "'\n" +
  18053. " ,'60'\n" +
  18054. " ,:GoodsCode\n" +
  18055. " ,:SAPCode\n" +
  18056. " ,:UserCode\n" +
  18057. " ,:OutputNum\n" +
  18058. " ,:RECOVERYNUM\n" +
  18059. " ,:ORDERCODE\n" +
  18060. " ,:ORDERITEM\n" +
  18061. " ,:testmouldflag\n" +
  18062. " ,:zscs\n" +
  18063. " ," + logid + ",:createtime)";
  18064. //int index = 0;
  18065. //DateTime now = DateTime.Now;
  18066. foreach (DataRow item in workData.Rows)
  18067. {
  18068. //ZSPP100 info100 = new ZSPP100();
  18069. //// 工厂
  18070. //info100.WERKS = workcode;
  18071. //// 型号
  18072. //info100.GROES = item["GoodsCode"].ToString();
  18073. //// 物料编号
  18074. //info100.MATNR = item["SAPCode"].ToString();
  18075. //// 生产工号
  18076. //info100.ZGHNU = item["UserCode"].ToString();
  18077. //// 数据节点
  18078. //info100.ZJDNU = "60";
  18079. //// 时间戳
  18080. //info100.ZSCNU = yyyymmdd;
  18081. //// 销售凭证
  18082. //info100.VBELN = item["ORDERCODE"].ToString().Trim();
  18083. //// 销售凭证项目
  18084. //info100.POSNR = item["ORDERITEM"].ToString();
  18085. //// 产量
  18086. //info100.ZCLNG = item["OutputNum"].ToString();
  18087. //// 损坯
  18088. //info100.ZSPNG = "0";
  18089. //// 清除
  18090. //info100.ZQCNG = "0";
  18091. //// 回收
  18092. //info100.ZHSNG = item["RECOVERYNUM"].ToString();
  18093. //// 干补
  18094. //info100.ZGBNG = "0";
  18095. //// 注浆类型 G高压 L普通 M粘接高压(三车间)
  18096. //info100.ZSCS = item["ZSCS"].ToString();
  18097. //info100.ZKSSJ = now.ToString("HHmmss");
  18098. //info100.ZJSRQ = Convert.ToDecimal(now.ToString("yyyyMMddHHmmss"));
  18099. oracleParameter = new OracleParameter[]
  18100. {
  18101. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input),
  18102. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input),
  18103. new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input),
  18104. new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input),
  18105. new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input),
  18106. new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input),
  18107. new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input),
  18108. new OracleParameter(":testmouldflag",OracleDbType.Varchar2, item["TESTMOULDFLAG"], ParameterDirection.Input),
  18109. new OracleParameter(":ZSCS",OracleDbType.Varchar2, item["ZSCS"], ParameterDirection.Input),
  18110. new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input),
  18111. };
  18112. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18113. //sapParameter.TABLE_IN[index++] = info100;
  18114. }
  18115. }
  18116. //else
  18117. //{
  18118. // sapParameter.ZSUM = 0;
  18119. // sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  18120. //}
  18121. #endregion
  18122. #region 注销
  18123. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  18124. //if (dateTimeNow < setTime)
  18125. //{
  18126. // ////ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60");
  18127. // //ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60", sapName);
  18128. // ////ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008_240(sapParameter, yyyymmdd, "60", sapName);
  18129. // ////if (result.Ztype == "E")
  18130. // ////{
  18131. // //// sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  18132. // //// oracleParameter = new OracleParameter[]
  18133. // //// {
  18134. // //// new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  18135. // //// new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  18136. // //// };
  18137. // //// r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  18138. // ////}
  18139. // ////else
  18140. // //if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  18141. // //{
  18142. // // sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  18143. // // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  18144. // // "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  18145. // // "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  18146. // // foreach (ZSPP100 item in result.TABLE_OUT)
  18147. // // {
  18148. // // string posnr = item.POSNR.TrimStart('0');
  18149. // // oracleParameter = new OracleParameter[]
  18150. // // {
  18151. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  18152. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  18153. // // new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  18154. // // new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  18155. // // new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  18156. // // new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  18157. // // new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  18158. // // };
  18159. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18160. // // }
  18161. // // //:msg||chr(13)||DataMSG
  18162. // // result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  18163. // // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  18164. // // oracleParameter = new OracleParameter[]
  18165. // // {
  18166. // // new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  18167. // // new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  18168. // // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  18169. // // };
  18170. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18171. // //}
  18172. // //if (result.ZTYPE != "S")
  18173. // //{
  18174. // // sre.Result = -2;
  18175. // // sre.Message = "同步产量失败," + result.ZMSG;
  18176. // // return sre;
  18177. // //}
  18178. // //sqlString =
  18179. // //"UPDATE tp_pm_groutingdailydetail bar\n" +
  18180. // //" SET bar.issync = '1'\n" +
  18181. // //" WHERE 1 = 1" + fifter;
  18182. // //r = oracleTrConn.ExecuteNonQuery(sqlString);
  18183. //}
  18184. //else
  18185. #endregion
  18186. #region 调用新报工接口
  18187. workcode = "5000";
  18188. sqlString = @"
  18189. SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') AS YYYYMMDD,
  18190. SYSDATE AS CREATETIME,
  18191. TT.GOODSCODE GROES,
  18192. TT.SAPCODE MATNR,
  18193. TT.USERCODE ZGHNU,
  18194. TT.ORDERCODE VBELN,
  18195. TT.ORDERITEM POSNR,
  18196. DECODE(TT.TESTMOULDFLAG, 0, 'C', 1, 'Y', '') ZSCMS,
  18197. 'T' AS ZSCS,
  18198. TO_CHAR(TT.OUTPUTNUM) AS ZCLNG,
  18199. TO_CHAR(TT.RECOVERYNUM) AS ZHSNG,
  18200. :WORKCODE WERKS,
  18201. '60' ZJDNU,
  18202. TO_CHAR(SYSDATE, 'YYYYMMDD') ZSCNU,
  18203. TO_CHAR(SYSDATE, 'HH24MISS') ZKSSJ,
  18204. TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ,
  18205. '0' ZSPNG,
  18206. '0' ZQCNG,
  18207. '0' ZGBNG,
  18208. TO_CHAR(TT.WORKSHOP) ZSCCJ,
  18209. '60' DATACODE,
  18210. TT.CHARG
  18211. FROM (SELECT T.GOODSCODE,
  18212. T.SAPCODE,
  18213. T.USERCODE,
  18214. T.ORDERCODE,
  18215. T.ORDERITEM,
  18216. T.TESTMOULDFLAG,
  18217. T.ZSCS,
  18218. T.WORKSHOP,
  18219. T.CHARG,
  18220. SUM(DECODE(T.RECYCLINGFLAG, '1', 0, 1)) OUTPUTNUM,
  18221. SUM(DECODE(T.RECYCLINGFLAG, '0', 0, 1)) RECOVERYNUM
  18222. FROM (SELECT BAR.GOODSCODE,
  18223. BAR.MATERIALCODE SAPCODE,
  18224. GH.FHUSERCODE USERCODE,
  18225. O.ORDERNO,
  18226. BAR.RECYCLINGFLAG,
  18227. BAR.TESTMOULDFLAG,
  18228. DECODE(BAR.TESTMOULDFLAG
  18229. ,'0'
  18230. ,''
  18231. ,DECODE(G.GOODS_LINE_CODE, 'G', 'A', 'M', 'A', 'L', 'B', '')) AS ZSCS,
  18232. CASE
  18233. WHEN O.ORDERID IS NULL
  18234. OR O.ORDERNO LIKE 'HEGII%' THEN
  18235. ' '
  18236. WHEN INSTR(O.ORDERNO, '/') = 0 THEN
  18237. TO_CHAR(O.ORDERNO)
  18238. ELSE
  18239. TO_CHAR(SUBSTR(O.ORDERNO, 1, INSTR(O.ORDERNO, '/') - 1))
  18240. END ORDERCODE -- 销售凭证
  18241. ,
  18242. CASE
  18243. WHEN O.ORDERID IS NULL
  18244. OR O.ORDERNO LIKE 'HEGII%'
  18245. OR INSTR(O.ORDERNO, '/') = 0 THEN
  18246. '0'
  18247. WHEN INSTR(O.ORDERNO, '#') = 0 THEN
  18248. TO_CHAR(SUBSTR(O.ORDERNO, INSTR(O.ORDERNO, '/') + 1))
  18249. ELSE
  18250. TO_CHAR(SUBSTR(O.ORDERNO
  18251. ,INSTR(O.ORDERNO, '/') + 1
  18252. ,INSTR(O.ORDERNO, '#') - INSTR(O.ORDERNO, '/') - 1))
  18253. END ORDERITEM,
  18254. CASE
  18255. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  18256. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  18257. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  18258. 1
  18259. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  18260. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  18261. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  18262. 2
  18263. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  18264. 3
  18265. ELSE
  18266. 9
  18267. END AS WORKSHOP,
  18268. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  18269. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  18270. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  18271. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  18272. INNER JOIN TP_MST_GOODS G
  18273. ON G.GOODSID = BAR.GOODSID
  18274. INNER JOIN TP_MST_GOODSTYPE GT
  18275. ON GT.GOODSTYPEID = G.GOODSTYPEID
  18276. LEFT JOIN TP_PM_ORDER O
  18277. ON O.ORDERID = GH.FHORDERID
  18278. WHERE 1 = 1 " + fifter + @") T
  18279. GROUP BY T.GOODSCODE,
  18280. T.SAPCODE,
  18281. T.USERCODE,
  18282. T.ORDERCODE,
  18283. T.ORDERITEM,
  18284. T.TESTMOULDFLAG,
  18285. T.ZSCS,
  18286. T.WORKSHOP,
  18287. T.CHARG) TT
  18288. WHERE TT.OUTPUTNUM <> 0
  18289. OR TT.RECOVERYNUM <> 0
  18290. ORDER BY TT.GOODSCODE,
  18291. TT.SAPCODE,
  18292. TT.USERCODE,
  18293. TT.ORDERCODE,
  18294. TT.ORDERITEM,
  18295. TT.ZSCS,
  18296. TT.WORKSHOP,
  18297. TT.CHARG ";
  18298. oracleParameter = new OracleParameter[]
  18299. {
  18300. new OracleParameter(":WORKCODE", workcode)
  18301. };
  18302. DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  18303. //string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  18304. sqlString = "insert into TSAP_HEGII_DATALOG_BG\n" +
  18305. " (LogID\n" +
  18306. " ,LogType\n" +
  18307. " ,BeginTime\n" +
  18308. " ,YYYYMMDD\n" +
  18309. " ,WorkCode\n" +
  18310. " ,DataCode\n" +
  18311. " ,DataStuts\n" +
  18312. " ,DataMSG\n" +
  18313. " ,DATALOGID\n" +
  18314. " ,EXECUTEDATEBEGIN\n" +
  18315. " ,EXECUTEDATEEND,SAPGUID)\n" +
  18316. "values\n" +
  18317. " (:LogID\n" +
  18318. " ,'2'\n" +
  18319. " ,sysdate\n" +
  18320. " ,:YYYYMMDD\n" +
  18321. " ,'5000'\n" +
  18322. " ,'60'\n" +
  18323. " ,'F'\n" +
  18324. " ,:DataMSG\n" +
  18325. " ,:LogID\n" +
  18326. " ,sysdate\n" +
  18327. " ,sysdate,sys_guid())";
  18328. oracleParameter = new OracleParameter[]
  18329. {
  18330. new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  18331. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  18332. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input),
  18333. };
  18334. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18335. //DateTime now = DateTime.Now;
  18336. sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" +
  18337. " (YYYYMMDD\n" +
  18338. " ,WorkCode\n" +
  18339. " ,DataCode\n" +
  18340. " ,GoodsCode\n" +
  18341. " ,SAPCode\n" +
  18342. " ,UserCode\n" +
  18343. " ,WORKSHOP\n" +
  18344. " ,OutputNum\n" +
  18345. " ,RECOVERYNUM\n" +
  18346. " ,ORDERCODE\n" +
  18347. " ,ORDERITEM\n" +
  18348. " ,testmouldflag\n" +
  18349. " ,zscs\n" +
  18350. " ,LogID,createtime,workdataid,charg)\n" +
  18351. "values\n" +
  18352. " ('" + yyyymmdd + "'\n" +
  18353. " ,'5000'\n" +
  18354. " ,'60'\n" +
  18355. " ,:GoodsCode\n" +
  18356. " ,:SAPCode\n" +
  18357. " ,:UserCode\n" +
  18358. " ,:ZSCCJ\n" +
  18359. " ,:OutputNum\n" +
  18360. " ,:RECOVERYNUM\n" +
  18361. " ,:ORDERCODE\n" +
  18362. " ,:ORDERITEM\n" +
  18363. " ,:testmouldflag\n" +
  18364. " ,:zscs\n" +
  18365. " ," + logid_bg + ",:createtime,:workdataid,:charg)";
  18366. foreach (DataRow item in workData5000.Rows)
  18367. {
  18368. string workdataid = oracleTrConn.GetSqlResultToStr("select SEQ_HEGII_WORKDATA_BG.Nextval from dual");
  18369. oracleParameter = new OracleParameter[]
  18370. {
  18371. new OracleParameter(":GoodsCode", item["GROES"].ToString()),
  18372. new OracleParameter(":SAPCode", item["MATNR"].ToString()),
  18373. new OracleParameter(":UserCode", item["ZGHNU"].ToString()),
  18374. new OracleParameter(":ZSCCJ", item["ZSCCJ"].ToString()),
  18375. new OracleParameter(":OutputNum", item["ZCLNG"].ToString()),
  18376. new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()),
  18377. new OracleParameter(":ORDERCODE", item["VBELN"].ToString()),
  18378. new OracleParameter(":ORDERITEM", item["POSNR"].ToString()),
  18379. new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()),
  18380. new OracleParameter(":zscs", item["ZSCS"].ToString()),
  18381. new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input),
  18382. new OracleParameter(":workdataid", workdataid),
  18383. new OracleParameter(":charg", item["CHARG"].ToString()),
  18384. };
  18385. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18386. }
  18387. sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  18388. " ,TO_CHAR(5000) WERKS\n" +
  18389. " ,TO_CHAR(wd.goodscode) GROES\n" +
  18390. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  18391. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  18392. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  18393. " ,to_char(sysdate, 'YYYYMMDD' ) ZSCNU\n" +
  18394. " ,to_char(sysdate, 'HH24MISS' ) ZKSSJ\n" +
  18395. " ,to_char(sysdate, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  18396. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  18397. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  18398. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  18399. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  18400. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  18401. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  18402. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  18403. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  18404. " -- ,TO_CHAR(wd.zscs) zscs\n" +
  18405. " ,'T' AS zscs\n" +
  18406. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  18407. " ,WD.CHARG\n" +
  18408. " ,TO_CHAR(60) datacode\n" +
  18409. " ,'5000' || LPAD(DL.LOGID, 10,'0') AS ZID\n" +
  18410. " FROM tsap_hegii_workdata_bg wd\n" +
  18411. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  18412. " ON wd.LOGID = DL.LOGID \n" +
  18413. " WHERE wd.logid = :logid";
  18414. OracleParameter[] par = null;
  18415. par = new OracleParameter[]
  18416. {
  18417. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  18418. };
  18419. DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par);
  18420. int num = dtt.Rows.Count;
  18421. //string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  18422. //string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq);
  18423. //if (SAP_ING_NEW == "1")
  18424. //if (true)
  18425. //{
  18426. // 调用SAP接口
  18427. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(dtt)) + "}}";
  18428. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  18429. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  18430. //string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  18431. // 调外公司接口如何不背锅第一要义:
  18432. // 1、post的时候,一定要加上try catch。出现错误一定要把是哪个公司哪个接口的错误信息,简单明了的显示给客户。千万不要就弹个系统异常,请联系管理员。
  18433. // 2、post前后,一定要把传入传出的json存到log里,日后扯皮时一定有用。
  18434. string result = string.Empty;
  18435. try
  18436. {
  18437. result = SAPDataLogic.PostData(url030, postString, "POST");
  18438. }
  18439. catch (Exception ex)
  18440. {
  18441. sre.Result = -2;
  18442. sre.Message = "sap030接口同步失败," + ex.Message;
  18443. return sre;
  18444. }
  18445. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  18446. {
  18447. sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg +
  18448. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  18449. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  18450. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  18451. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  18452. object TABLE_OUT;
  18453. obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  18454. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  18455. object item1;
  18456. obj.TryGetValue("item", out item1);
  18457. JArray arr = JArray.FromObject(item1);
  18458. foreach (JObject item60 in arr)
  18459. {
  18460. string posnr = item60["POSNR"].ToString().TrimStart('0');
  18461. oracleParameter = new OracleParameter[]
  18462. {
  18463. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input),
  18464. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input),
  18465. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input),
  18466. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input),
  18467. new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input),
  18468. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input),
  18469. new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  18470. };
  18471. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18472. }
  18473. //:msg||chr(13)||DataMSG
  18474. JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}(" + num + ")";
  18475. sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  18476. oracleParameter = new OracleParameter[]
  18477. {
  18478. new OracleParameter(":DataStuts",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  18479. new OracleParameter(":msg",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  18480. new OracleParameter(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  18481. };
  18482. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18483. }
  18484. if (JObject.Parse(result)["ZTYPE"].ToString() != "S")
  18485. {
  18486. sre.Result = -2;
  18487. sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString();
  18488. return sre;
  18489. }
  18490. //sqlString =
  18491. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  18492. //" SET bar.issync = '1'\n" +
  18493. //" WHERE 1 = 1" + fifter;
  18494. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  18495. //}
  18496. #endregion
  18497. sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = 'S' where logid = " + logid +
  18498. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  18499. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode \n" +
  18500. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  18501. foreach (DataRow row in fpData.Rows)
  18502. {
  18503. string posnr = (row["ORDERITEM"] + "").TrimStart('0');
  18504. oracleParameter = new OracleParameter[]
  18505. {
  18506. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, row["GoodsCode"], ParameterDirection.Input),
  18507. new OracleParameter(":SAPCode",OracleDbType.Varchar2, row["SAPCode"], ParameterDirection.Input),
  18508. //new OracleParameter(":UserCode",OracleDbType.Varchar2, row["UserCode"], ParameterDirection.Input),
  18509. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(row["OrderCode"] + "") ? " " :row["OrderCode"]), ParameterDirection.Input),
  18510. new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  18511. };
  18512. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18513. }
  18514. #endregion
  18515. #region 同步WMS系统
  18516. if (fpData.Rows.Count > 0)
  18517. {
  18518. DateTime now = DateTime.Now;
  18519. string message = WMSDataLogic.PushWMS(fpData, now);
  18520. // 同步日志
  18521. sqlString = @"
  18522. INSERT INTO TP_WMS_LOG
  18523. (LOGTYPE,
  18524. SPS,
  18525. SKU,
  18526. SERIALNO,
  18527. ADDDAY,
  18528. ADDTIME,
  18529. CODEI,
  18530. UDF1,
  18531. UDF2,
  18532. LPN,
  18533. RETURNDESC,
  18534. ACCOUNTID,
  18535. CREATETIME,
  18536. UPDATETIME,
  18537. CREATEUSERID,
  18538. UPDATEUSERID)
  18539. VALUES
  18540. (:LOGTYPE,
  18541. :SPS,
  18542. :SKU,
  18543. :SERIALNO,
  18544. :ADDDAY,
  18545. :ADDTIME,
  18546. :CODEI,
  18547. :UDF1,
  18548. :UDF2,
  18549. :LPN,
  18550. :RETURNDESC,
  18551. :ACCOUNTID,
  18552. :CREATETIME,
  18553. :CREATETIME,
  18554. :USERID,
  18555. :USERID) ";
  18556. string orderitem;
  18557. foreach (DataRow row in fpData.Rows)
  18558. {
  18559. orderitem = row["orderitem"] + "";
  18560. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  18561. {
  18562. orderitem = "000000";
  18563. }
  18564. oracleParameter = new OracleParameter[]
  18565. {
  18566. new OracleParameter(":LOGTYPE",OracleDbType.Int32, 1, ParameterDirection.Input),
  18567. new OracleParameter(":SPS",OracleDbType.Varchar2, "5020", ParameterDirection.Input),
  18568. new OracleParameter(":SKU",OracleDbType.Varchar2, row["sapcode"], ParameterDirection.Input),
  18569. new OracleParameter(":SERIALNO",OracleDbType.Varchar2, row["outcode"], ParameterDirection.Input),
  18570. new OracleParameter(":ADDDAY",OracleDbType.Varchar2, now.ToString("yyyyMMdd"), ParameterDirection.Input),
  18571. new OracleParameter(":ADDTIME",OracleDbType.Varchar2, now.ToString("HHmmss"), ParameterDirection.Input),
  18572. new OracleParameter(":CODEI",OracleDbType.Varchar2, row["barcode"], ParameterDirection.Input),
  18573. new OracleParameter(":UDF1",OracleDbType.Varchar2, row["ordercode"], ParameterDirection.Input),
  18574. new OracleParameter(":UDF2",OracleDbType.Varchar2, orderitem, ParameterDirection.Input),
  18575. new OracleParameter(":LPN",OracleDbType.Varchar2, row["sapflbatchno"], ParameterDirection.Input),
  18576. new OracleParameter(":RETURNDESC",OracleDbType.Varchar2, message, ParameterDirection.Input),
  18577. new OracleParameter(":ACCOUNTID",OracleDbType.Varchar2, sUserInfo.AccountID, ParameterDirection.Input),
  18578. new OracleParameter(":CREATETIME",OracleDbType.Date, now, ParameterDirection.Input),
  18579. new OracleParameter(":USERID",OracleDbType.Varchar2, sUserInfo.UserID, ParameterDirection.Input),
  18580. };
  18581. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  18582. }
  18583. sqlString =
  18584. "UPDATE tp_pm_groutingdailydetail bar\n" +
  18585. " SET bar.issync = '1'\n" +
  18586. " WHERE 1 = 1" + fifter;
  18587. r = oracleTrConn.ExecuteNonQuery(sqlString);
  18588. }
  18589. #endregion
  18590. #region 释放包材库库存
  18591. sqlString =
  18592. "SELECT 1\n" +
  18593. " FROM tp_pm_groutingdailydetail bar\n" +
  18594. " WHERE bar.packingby3 = '1' " + fifter;
  18595. isExists = oracleTrConn.GetSqlResultToObj(sqlString);
  18596. if (isExists != null)
  18597. {
  18598. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  18599. string packingURL = ini.ReadIniData("SAP_HEGII", "PackingURL");
  18600. foreach (DataRow row in workData.Rows)
  18601. {
  18602. string url = packingURL + row["sapcode"] + "&num=" + row["outputnum"];
  18603. WebRequest req = WebRequest.Create(url);
  18604. req.Method = "GET";
  18605. Stream stream = req.GetResponse().GetResponseStream();
  18606. StreamReader reader = new StreamReader(stream);
  18607. JObject json = JObject.Parse(reader.ReadToEnd());
  18608. // 包材库失败暂时不处理 TODO
  18609. if (json["success"].ToString() == "false")
  18610. {
  18611. //sre.Result = -2;
  18612. //sre.Message = json["message"].ToString();
  18613. //return sre;
  18614. }
  18615. }
  18616. }
  18617. #endregion
  18618. sre.Result = 1;
  18619. oracleTrConn.Commit();
  18620. oracleTrConn.Disconnect();
  18621. return sre;
  18622. }
  18623. catch (Exception ex)
  18624. {
  18625. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  18626. {
  18627. oracleTrConn.Rollback();
  18628. oracleTrConn.Disconnect();
  18629. }
  18630. throw ex;
  18631. }
  18632. finally
  18633. {
  18634. if (oracleTrConn.ConnState == ConnectionState.Open)
  18635. {
  18636. oracleTrConn.Disconnect();
  18637. }
  18638. }
  18639. }
  18640. /// <summary>
  18641. /// 撤销整板交接
  18642. /// </summary>
  18643. /// <param name="orderid"></param>
  18644. /// <param name="dtData"></param>
  18645. /// <param name="sUserInfo"></param>
  18646. /// <returns></returns>
  18647. public static ServiceResultEntity BackFinishedHandover(DataTable dtData, SUserInfo sUserInfo)
  18648. {
  18649. ServiceResultEntity sre = new ServiceResultEntity();
  18650. if (dtData == null || dtData.Rows.Count == 0)
  18651. {
  18652. sre.Result = -2;
  18653. sre.Message = "条码信息不能为空";
  18654. return sre;
  18655. }
  18656. string logid_bg = "0";
  18657. OracleParameter[] Paras = null;
  18658. // 条码串
  18659. string fifter = " AND (bar.barcode = '";
  18660. foreach (DataRow row in dtData.Rows)
  18661. {
  18662. fifter += row["barcode"] + "' OR bar.barcode = '";
  18663. }
  18664. fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  18665. IDBTransaction oracleTrConn2 = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18666. try
  18667. {
  18668. #region 相关校验
  18669. string sql = "";
  18670. // 本批交接的批次号
  18671. for (int i = 0; i < dtData.Rows.Count; i++)
  18672. {
  18673. // 1.判断产品是否在产成品表中
  18674. sql = @"select
  18675. FHUserID,
  18676. FHUserCode,
  18677. GoodsID,
  18678. GoodsCode,
  18679. GoodsName
  18680. from TP_PM_FinishedProduct
  18681. where BarCode=:BarCode";
  18682. Paras = new OracleParameter[]
  18683. {
  18684. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  18685. };
  18686. DataSet dsResult = oracleTrConn2.GetSqlResultToDs(sql, Paras);
  18687. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  18688. {
  18689. // 在产成品表中
  18690. #region 是否交接过
  18691. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  18692. if (string.IsNullOrEmpty(fhUserCode))
  18693. {
  18694. sre.Result = -1; //未交接,不能撤销
  18695. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】未交接,不能进行该操作";
  18696. return sre;
  18697. }
  18698. #endregion
  18699. }
  18700. else
  18701. {
  18702. sre.Result = -2; //不能产成品,不能撤销
  18703. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  18704. dsResult = oracleTrConn2.GetSqlResultToDs(sql, Paras);
  18705. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  18706. {
  18707. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】不是产成品,不能进行该操作";
  18708. }
  18709. else
  18710. {
  18711. sre.Message = "此条码【" + dtData.Rows[i]["barcode"] + "】无效,不能进行该操作";
  18712. }
  18713. return sre;
  18714. }
  18715. }
  18716. #endregion
  18717. sql = @"
  18718. SELECT DISTINCT BGLOGIDCX
  18719. FROM TP_PM_FINISHEDPRODUCT BAR
  18720. WHERE 1 = 1 " + fifter;
  18721. string currentBGlogid = oracleTrConn2.GetSqlResultToStr(sql);
  18722. if (string.IsNullOrEmpty(currentBGlogid))
  18723. {
  18724. logid_bg = oracleTrConn2.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  18725. sql = @"
  18726. UPDATE TP_PM_FINISHEDPRODUCT BAR
  18727. SET BAR.BGLOGID = NULL
  18728. ,BAR.BGLOGIDCX = " + logid_bg + @"
  18729. WHERE 1 = 1 " + fifter;
  18730. int r2 = oracleTrConn2.ExecuteNonQuery(sql);
  18731. }
  18732. else
  18733. {
  18734. logid_bg = currentBGlogid;
  18735. }
  18736. oracleTrConn2.Commit();
  18737. oracleTrConn2.Disconnect();
  18738. }
  18739. catch (Exception ex)
  18740. {
  18741. throw ex;
  18742. }
  18743. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  18744. try
  18745. {
  18746. string sql = string.Empty;
  18747. oracleTrConn.Connect();
  18748. #region 相关校验
  18749. // 本批交接的批次号
  18750. for (int i = 0; i < dtData.Rows.Count; i++)
  18751. {
  18752. // 1.判断产品是否在产成品表中
  18753. sql = @"select
  18754. FHUserID,
  18755. FHUserCode,
  18756. GoodsID,
  18757. GoodsCode,
  18758. GoodsName
  18759. from TP_PM_FinishedProduct
  18760. where BarCode=:BarCode";
  18761. Paras = new OracleParameter[]
  18762. {
  18763. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  18764. };
  18765. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, Paras);
  18766. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  18767. {
  18768. // 在产成品表中
  18769. #region 是否交接过
  18770. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  18771. if (string.IsNullOrEmpty(fhUserCode))
  18772. {
  18773. sre.Result = -1; //未交接,不能撤销
  18774. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】未交接,不能进行该操作";
  18775. return sre;
  18776. }
  18777. #endregion
  18778. }
  18779. else
  18780. {
  18781. sre.Result = -2; //不能产成品,不能撤销
  18782. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  18783. dsResult = oracleTrConn.GetSqlResultToDs(sql, Paras);
  18784. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  18785. {
  18786. sre.Message = "此产品【" + dtData.Rows[i]["barcode"] + "】不是产成品,不能进行该操作";
  18787. }
  18788. else
  18789. {
  18790. sre.Message = "此条码【" + dtData.Rows[i]["barcode"] + "】无效,不能进行该操作";
  18791. }
  18792. return sre;
  18793. }
  18794. }
  18795. #endregion
  18796. #region 同步SAP
  18797. #region 取相关数据
  18798. object isExists;
  18799. string sqlString = string.Empty;
  18800. OracleParameter[] oracleParameter = null;
  18801. int r = 0;
  18802. //// 条码串
  18803. //string fifter = " AND (bar.barcode = '";
  18804. //foreach (DataRow row in dtData.Rows)
  18805. //{
  18806. // fifter += row["barcode"] + "' OR bar.barcode = '";
  18807. //}
  18808. //fifter = fifter.Substring(0, fifter.Length - 18) + ")";
  18809. //sqlString = "SELECT 1\n" +
  18810. //" FROM tp_pm_groutingdailydetail bar\n" +
  18811. //" WHERE bar.issync IS NULL" + fifter;
  18812. //object isExists = oracleTrConn.GetSqlResultToObj(sqlString, oracleParameter);
  18813. //if (isExists != null)
  18814. //{
  18815. // sre.Result = -2;
  18816. // sre.Message = "当前产品已经撤销,不能重复同步。";
  18817. // return sre;
  18818. //}
  18819. DateTime date = DateTime.Now;
  18820. string yyyymmdd = date.ToString("yyyyMMdd");
  18821. sqlString = "select workcode from tp_mst_account where rownum = 1";
  18822. string workcode = oracleTrConn.GetSqlResultToStr(sqlString);
  18823. //DateTime datebegin = date.Date;
  18824. //DateTime dateend = date.Date.AddDays(1);
  18825. //sqlString =
  18826. //"SELECT :yyyymmdd AS yyyymmdd\n" +
  18827. //" ,SYSDATE AS createtime\n" +
  18828. //" ,tt.goodscode\n" +
  18829. //" ,tt.sapcode\n" +
  18830. //" ,tt.usercode\n" +
  18831. //" ,tt.ordercode\n" +
  18832. //" ,tt.orderitem\n" +
  18833. //" ,tt.zscs\n" +
  18834. //" ,to_char(tt.outputnum) AS outputnum\n" +
  18835. //" ,to_char(tt.recoverynum) AS recoverynum\n" +
  18836. //" FROM (SELECT t.goodscode\n" +
  18837. //" ,t.sapcode\n" +
  18838. //" ,t.usercode\n" +
  18839. //" ,t.ordercode\n" +
  18840. //" ,t.orderitem\n" +
  18841. //" ,t.zscs\n" +
  18842. //" ,0 - SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  18843. //" ,0 - SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  18844. //" FROM (SELECT gh.goodscode\n" +
  18845. //" ,gh.sapcode\n" +
  18846. //" ,u.usercode\n" +
  18847. //" ,o.orderno\n" +
  18848. //" ,bar.recyclingflag\n" +
  18849. //" ,gh.datatype\n" +
  18850. //" ,'' zscs\n" +
  18851. ////" ,g.goods_line_code zscs\n" +
  18852. //" ,CASE\n" +
  18853. //" WHEN o.orderid IS NULL\n" +
  18854. //" OR o.orderno LIKE 'HEGII%' THEN\n" +
  18855. //" ' '\n" +
  18856. //" WHEN instr(o.orderno, '/') = 0 THEN\n" +
  18857. //" to_char(o.orderno)\n" +
  18858. //" ELSE\n" +
  18859. //" to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  18860. //" END ordercode -- 销售凭证\n" +
  18861. //" ,CASE\n" +
  18862. //" WHEN o.orderid IS NULL\n" +
  18863. //" OR o.orderno LIKE 'HEGII%'\n" +
  18864. //" OR instr(o.orderno, '/') = 0 THEN\n" +
  18865. //" '0'\n" +
  18866. //" WHEN instr(o.orderno, '#') = 0 THEN\n" +
  18867. //" to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  18868. //" ELSE\n" +
  18869. //" to_char(substr(o.orderno\n" +
  18870. //" ,instr(o.orderno, '/') + 1\n" +
  18871. //" ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  18872. //" END orderitem -- 销售凭证项目\n" +
  18873. //" FROM (SELECT gch.goodscode\n" +
  18874. //" ,gch.sapcode\n" +
  18875. //" ,decode(gch.datatype, 53, 51, gch.datatype) datatype\n" +
  18876. //" ,gch.userid\n" +
  18877. //" ,gch.groutingdailydetailid\n" +
  18878. //" ,gch.otherid\n" +
  18879. //" FROM tp_pm_goodschangehistory gch\n" +
  18880. //" WHERE gch.datatype IN (51, 52, 53)\n" +
  18881. //" UNION ALL\n" +
  18882. //" SELECT gch.goodscode\n" +
  18883. //" ,gch.sapcode\n" +
  18884. //" ,52 datatype\n" +
  18885. //" ,gch.userid\n" +
  18886. //" ,gch.groutingdailydetailid\n" +
  18887. //" ,gch.goodsidafter\n" +
  18888. //" FROM tp_pm_goodschangehistory gch\n" +
  18889. //" WHERE gch.datatype = 53) gh\n" +
  18890. //" INNER JOIN tp_mst_user u\n" +
  18891. //" ON u.userid = gh.userid\n" +
  18892. //" INNER JOIN tp_pm_groutingdailydetail bar\n" +
  18893. //" ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" + fifter +
  18894. //" INNER JOIN tp_mst_goods g\n" +
  18895. //" ON g.goodsid = bar.goodsid\n" +
  18896. //" LEFT JOIN tp_pm_order o\n" +
  18897. //" ON o.orderid = gh.otherid) t\n" +
  18898. //" GROUP BY t.goodscode\n" +
  18899. //" ,t.sapcode\n" +
  18900. //" ,t.usercode\n" +
  18901. //" ,t.ordercode\n" +
  18902. //" ,t.orderitem,t.zscs) tt\n" +
  18903. //" WHERE tt.outputnum <> 0\n" +
  18904. //" OR tt.recoverynum <> 0\n" +
  18905. //" ORDER BY tt.goodscode\n" +
  18906. //" ,tt.sapcode\n" +
  18907. //" ,tt.usercode\n" +
  18908. //" ,tt.ordercode\n" +
  18909. //" ,tt.orderitem,tt.zscs";
  18910. sqlString =
  18911. "SELECT :yyyymmdd AS yyyymmdd\n" +
  18912. " ,SYSDATE AS createtime\n" +
  18913. " ,tt.goodscode\n" +
  18914. " ,tt.sapcode\n" +
  18915. " ,tt.usercode\n" +
  18916. " ,tt.ordercode\n" +
  18917. " ,tt.orderitem\n" +
  18918. " ,tt.testmouldflag\n" +
  18919. " ,tt.zscs\n" +
  18920. " ,to_char(tt.outputnum) AS outputnum\n" +
  18921. " ,to_char(tt.recoverynum) AS recoverynum\n" +
  18922. " FROM (SELECT t.goodscode\n" +
  18923. " ,t.sapcode\n" +
  18924. " ,t.usercode\n" +
  18925. " ,t.ordercode\n" +
  18926. " ,t.orderitem\n" +
  18927. " ,t.testmouldflag\n" +
  18928. " ,t.zscs\n" +
  18929. //" ,0-SUM(decode(t.recyclingflag, '1', 0, decode(t.datatype, 51, 1, -1))) outputnum\n" +
  18930. //" ,0-SUM(decode(t.recyclingflag, '0', 0, decode(t.datatype, 51, 1, -1))) recoverynum\n" +
  18931. " ,0-SUM(decode(t.recyclingflag, '1', 0, 1)) outputnum\n" +
  18932. " ,0-SUM(decode(t.recyclingflag, '0', 0, 1)) recoverynum\n" +
  18933. " FROM (SELECT bar.goodscode\n" +
  18934. //" ,gh.sapcode\n" +
  18935. //" ,u.usercode\n" +
  18936. " ,bar.materialcode sapcode\n" +
  18937. " ,gh.fhusercode usercode\n" +
  18938. " ,o.orderno\n" +
  18939. " ,bar.recyclingflag\n" +
  18940. //" ,gh.datatype\n" +
  18941. //" ,'' zscs\n" +
  18942. //" ,case when g.goods_line_type = 1 or gl.highpressureflag = '1' then 'G' else 'L' end zscs\n" +
  18943. " ,bar.testmouldflag" +
  18944. " ,decode(bar.testmouldflag,'0', '', decode(g.goods_line_code,'G','A','M','A','L','B','')) as zscs\n" +
  18945. " ,CASE\n" +
  18946. " WHEN o.orderid IS NULL\n" +
  18947. " OR o.orderno LIKE 'HEGII%' THEN\n" +
  18948. " ' '\n" +
  18949. " WHEN instr(o.orderno, '/') = 0 THEN\n" +
  18950. " to_char(o.orderno)\n" +
  18951. " ELSE\n" +
  18952. " to_char(substr(o.orderno, 1, instr(o.orderno, '/') - 1))\n" +
  18953. " END ordercode -- 销售凭证\n" +
  18954. " ,CASE\n" +
  18955. " WHEN o.orderid IS NULL\n" +
  18956. " OR o.orderno LIKE 'HEGII%'\n" +
  18957. " OR instr(o.orderno, '/') = 0 THEN\n" +
  18958. " '0'\n" +
  18959. " WHEN instr(o.orderno, '#') = 0 THEN\n" +
  18960. " to_char(substr(o.orderno, instr(o.orderno, '/') + 1))\n" +
  18961. " ELSE\n" +
  18962. " to_char(substr(o.orderno\n" +
  18963. " ,instr(o.orderno, '/') + 1\n" +
  18964. " ,instr(o.orderno, '#') - instr(o.orderno, '/') - 1))\n" +
  18965. " END orderitem -- 销售凭证项目\n" +
  18966. " FROM tp_pm_groutingdailydetail bar\n" +
  18967. //" INNER JOIN tp_mst_user u\n" +
  18968. //" ON u.userid = gh.userid\n" +
  18969. " INNER JOIN tp_pm_finishedproduct gh\n" +
  18970. " ON bar.groutingdailydetailid = gh.groutingdailydetailid\n" +
  18971. //" AND bar.barcode IN (" + fifter + ")\n" +
  18972. //" INNER JOIN tp_pc_groutingline gl\n" +
  18973. //" ON gl.groutinglineid = bar.groutinglineid\n" +
  18974. " INNER JOIN tp_mst_goods g\n" +
  18975. " ON g.goodsid = bar.goodsid\n" +
  18976. " LEFT JOIN tp_pm_order o\n" +
  18977. " ON o.orderid = gh.fhorderid where 1=1 " + fifter + ") t\n" +
  18978. " GROUP BY t.goodscode\n" +
  18979. " ,t.sapcode\n" +
  18980. " ,t.usercode\n" +
  18981. " ,t.ordercode\n" +
  18982. " ,t.orderitem,t.testmouldflag,t.zscs) tt\n" +
  18983. " WHERE tt.outputnum <> 0\n" +
  18984. " OR tt.recoverynum <> 0\n" +
  18985. " ORDER BY tt.goodscode\n" +
  18986. " ,tt.sapcode\n" +
  18987. " ,tt.usercode\n" +
  18988. " ,tt.ordercode\n" +
  18989. " ,tt.orderitem,tt.zscs";
  18990. oracleParameter = new OracleParameter[]
  18991. {
  18992. new OracleParameter(":yyyymmdd", yyyymmdd)
  18993. };
  18994. DataTable workData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  18995. string logid = oracleTrConn.GetSqlResultToStr("select SEQ_SAP_HEGII_DataLog_ID.Nextval from dual");
  18996. //string msg = "撤销同步,data:" + datebegin.ToString("yyyyMMdd-HHmm") + "~" +
  18997. // dateend.ToString("yyyyMMdd-HHmm");
  18998. string msg = $"整板撤销[{logid}]:" + dtData.Rows[0]["barcode"];
  18999. sqlString = "insert into tsap_hegii_datalog\n" +
  19000. " (LogID\n" +
  19001. " ,LogType\n" +
  19002. " ,BeginTime\n" +
  19003. " ,YYYYMMDD\n" +
  19004. " ,WorkCode\n" +
  19005. " ,DataCode\n" +
  19006. " ,DataStuts\n" +
  19007. " ,DataMSG\n" +
  19008. " ,CreateUserID\n" +
  19009. " ,DataLogID)\n" +
  19010. "values\n" +
  19011. " (:LogID\n" +
  19012. " ,'2'\n" +
  19013. " ,sysdate\n" +
  19014. " ,:YYYYMMDD\n" +
  19015. " ,:WorkCode\n" +
  19016. " ,'60'\n" +
  19017. " ,'S'\n" +
  19018. " ,:DataMSG\n" +
  19019. " ,:CreateUserID\n" +
  19020. " ,:LogID)";
  19021. oracleParameter = new OracleParameter[]
  19022. {
  19023. new OracleParameter(":LogID",OracleDbType.Int32, logid, ParameterDirection.Input),
  19024. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID, ParameterDirection.Input),
  19025. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  19026. new OracleParameter(":WorkCode",OracleDbType.Varchar2, workcode, ParameterDirection.Input),
  19027. new OracleParameter(":DataMSG",OracleDbType.Varchar2, msg, ParameterDirection.Input),
  19028. };
  19029. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19030. #endregion
  19031. #region 同步条码明细(注销)
  19032. sqlString =
  19033. "select bar.yyyymmdd\n" +
  19034. " ,bar.workcode\n" +
  19035. " ,bar.barcode\n" +
  19036. " ,bar.outcode\n" +
  19037. " ,bar.goodscode\n" +
  19038. " ,bar.sapcode\n" +
  19039. " ,bar.sapflbatchno\n" +
  19040. " ,bar.sapfhundoflag\n" +
  19041. " ,bar.ordercode\n" +
  19042. " ,bar.orderitem\n" +
  19043. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  19044. //" from tsap_hegii_finishedproduct bar where 1 = 1" + fifter +
  19045. " from tsap_hegii_finishedproduct bar where ztype = 'S' " + fifter +
  19046. " order by bar.sapflbatchno, bar.barcode";
  19047. DataTable fpData = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  19048. #region 注销
  19049. //// 单次传输最大条数
  19050. //int maxCount = 100000;
  19051. //List<Zppfm010> sapParameterList = new List<Zppfm010>();
  19052. //if (fpData != null && fpData.Rows.Count > 0)
  19053. //{
  19054. // int index = 0;
  19055. // //Zppfm010 sapParameter = new Zppfm010();
  19056. // //sapParameter.Zsum = maxCount;
  19057. // //sapParameter.TableIn = new Zspp110[sapParameter.Zsum];
  19058. // List<ZSPP110> tableInList = new List<ZSPP110>();
  19059. // foreach (DataRow item in fpData.Rows)
  19060. // {
  19061. // if (index >= maxCount)
  19062. // {
  19063. // Zppfm010 sapItem = new Zppfm010();
  19064. // sapItem.ZSUM = tableInList.Count;
  19065. // sapItem.TABLE_IN = tableInList.ToArray();
  19066. // sapParameterList.Add(sapItem);
  19067. // index = 0;
  19068. // tableInList.Clear();
  19069. // }
  19070. // ZSPP110 info110 = new ZSPP110();
  19071. // // 时间戳
  19072. // info110.ZSCNU = yyyymmdd;
  19073. // // 工厂
  19074. // info110.WERKS = workcode;
  19075. // // 生产条码
  19076. // info110.ZSCTM = item["barcode"].ToString();
  19077. // // 包装条码
  19078. // info110.ZBZTM = item["outcode"].ToString();
  19079. // // 产品编码
  19080. // info110.ZCPBM = item["goodscode"].ToString();
  19081. // // 物料编号
  19082. // info110.MATNR = item["sapcode"].ToString();
  19083. // // 包装整板标识
  19084. // info110.ZBZBS = item["sapflbatchno"].ToString();
  19085. // // 重新绑定标识
  19086. // info110.ZCXBD = "X";
  19087. // // 销售凭证
  19088. // info110.KDAUF = item["ordercode"].ToString();
  19089. // // 销售凭证项目
  19090. // info110.KDPOS = item["orderitem"].ToString();
  19091. // info110.UZEIT = date.ToString("HH:mm:ss");
  19092. // info110.ZCODEN = "";
  19093. // info110.ZCODEYZM = "";
  19094. // //if (info110.WERKS == "5011" && info110.ZCPBM == "K047L")
  19095. // //{
  19096. // // continue;
  19097. // //}
  19098. // tableInList.Add(info110);
  19099. // index++;
  19100. // }
  19101. // Zppfm010 sapParameter010 = new Zppfm010();
  19102. // sapParameter010.ZSUM = tableInList.Count;
  19103. // sapParameter010.TABLE_IN = tableInList.ToArray();
  19104. // sapParameterList.Add(sapParameter010);
  19105. // index = 0;
  19106. // tableInList.Clear();
  19107. //}
  19108. //else
  19109. //{
  19110. // Zppfm010 sapParameter010 = new Zppfm010();
  19111. // sapParameter010.ZSUM = 0;
  19112. // sapParameter010.TABLE_IN = new ZSPP110[sapParameter010.ZSUM];
  19113. // sapParameterList.Add(sapParameter010);
  19114. //}
  19115. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  19116. //// 当前时间
  19117. //DateTime dateTimeNow = DateTime.Now;
  19118. //DateTime setTime = new DateTime(2022, 10, 1, 0, 0, 0);
  19119. //if (dateTimeNow < setTime)
  19120. //{
  19121. // //foreach (Zppfm010 sapParameter010 in sapParameterList)
  19122. // //{
  19123. // // ZPPFM010Response result010 = SAPDataLogic.HGSAPDK_ZPPFM010(sapParameter010, yyyymmdd);
  19124. // // //sre.Message = result010.ZMSG;
  19125. // // sre.Message = $"{result010.ZMSG}({sapParameter010.ZSUM})";
  19126. // // sre.Result = result010.ZTYPE;
  19127. // // if (result010.TABLE_OUT != null && result010.TABLE_OUT.Length > 0)
  19128. // // {
  19129. // // // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  19130. // // //sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = nvl(:ZTYPE,'S'), ZMSG = :ZMSG where barcode=:barcode and sapflbatchno=:sapflbatchno";
  19131. // // sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = 'D', ZMSG = :ZMSG where barcode=:barcode and ztype = 'S' and sapflbatchno=:sapflbatchno";
  19132. // // foreach (ZSPP110 item in result010.TABLE_OUT)
  19133. // // {
  19134. // // oracleParameter = new OracleParameter[]
  19135. // // {
  19136. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  19137. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  19138. // // new OracleParameter(":barcode",OracleDbType.Varchar2, item.ZSCTM, ParameterDirection.Input),
  19139. // // new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, item.ZBZBS, ParameterDirection.Input),
  19140. // // };
  19141. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19142. // // }
  19143. // // }
  19144. // // if (result010.ZTYPE != "S")
  19145. // // {
  19146. // // sre.Result = -2;
  19147. // // sre.Message = "同步条码失败," + result010.ZMSG;
  19148. // // return sre;
  19149. // // }
  19150. // //}
  19151. //}
  19152. //else
  19153. //{
  19154. #endregion
  19155. sqlString = "update tsap_hegii_finishedproduct t set t.ZTime =sysdate, ZTYPE = 'D' where barcode=:barcode and ztype = 'S' and sapflbatchno=:sapflbatchno";
  19156. foreach (DataRow row in fpData.Rows)
  19157. {
  19158. oracleParameter = new OracleParameter[]
  19159. {
  19160. new OracleParameter(":barcode",OracleDbType.Varchar2, row["barcode"], ParameterDirection.Input),
  19161. new OracleParameter(":sapflbatchno",OracleDbType.Varchar2, row["sapflbatchno"], ParameterDirection.Input),
  19162. };
  19163. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19164. }
  19165. //}
  19166. // 删除已同步条码
  19167. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  19168. //sql = "Delete from tsap_hegii_finishedproduct bar where 1 = 1" + fifter;
  19169. //r = oracleTrConn.ExecuteNonQuery(sql);
  19170. #endregion
  19171. #region 同步产量
  19172. //Zppfm008 sapParameter = new Zppfm008();
  19173. if (workData != null && workData.Rows.Count > 0)
  19174. {
  19175. //sapParameter.ZSUM = workData.Rows.Count;
  19176. //sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  19177. sqlString = "insert into TSAP_HEGII_WorkData\n" +
  19178. " (YYYYMMDD\n" +
  19179. " ,WorkCode\n" +
  19180. " ,DataCode\n" +
  19181. " ,GoodsCode\n" +
  19182. " ,SAPCode\n" +
  19183. " ,UserCode\n" +
  19184. " ,OutputNum\n" +
  19185. " ,RECOVERYNUM\n" +
  19186. " ,ORDERCODE\n" +
  19187. " ,ORDERITEM\n" +
  19188. " ,testmouldflag\n" +
  19189. " ,zscs\n" +
  19190. " ,LogID,createtime)\n" +
  19191. "values\n" +
  19192. " ('" + yyyymmdd + "'\n" +
  19193. " ,'" + workcode + "'\n" +
  19194. " ,'60'\n" +
  19195. " ,:GoodsCode\n" +
  19196. " ,:SAPCode\n" +
  19197. " ,:UserCode\n" +
  19198. " ,:OutputNum\n" +
  19199. " ,:RECOVERYNUM\n" +
  19200. " ,:ORDERCODE\n" +
  19201. " ,:ORDERITEM\n" +
  19202. " ,:testmouldflag\n" +
  19203. " ,:zscs\n" +
  19204. " ," + logid + ",:createtime)";
  19205. int index = 0;
  19206. //DateTime now = DateTime.Now;
  19207. foreach (DataRow item in workData.Rows)
  19208. {
  19209. //ZSPP100 info100 = new ZSPP100();
  19210. //// 工厂
  19211. //info100.WERKS = workcode;
  19212. //// 型号
  19213. //info100.GROES = item["GoodsCode"].ToString();
  19214. //// 物料编号
  19215. //info100.MATNR = item["SAPCode"].ToString();
  19216. //// 生产工号
  19217. //info100.ZGHNU = item["UserCode"].ToString();
  19218. //// 数据节点
  19219. //info100.ZJDNU = "60";
  19220. //// 时间戳
  19221. //info100.ZSCNU = yyyymmdd;
  19222. //// 销售凭证
  19223. //info100.VBELN = item["ORDERCODE"].ToString().Trim();
  19224. //// 销售凭证项目
  19225. //info100.POSNR = item["ORDERITEM"].ToString();
  19226. //// 产量
  19227. //info100.ZCLNG = item["OutputNum"].ToString();
  19228. //// 损坯
  19229. //info100.ZSPNG = "0";
  19230. //// 清除
  19231. //info100.ZQCNG = "0";
  19232. //// 回收
  19233. //info100.ZHSNG = item["RECOVERYNUM"].ToString();
  19234. //// 干补
  19235. //info100.ZGBNG = "0";
  19236. //// 注浆类型 G高压 L普通 M粘接高压(三车间)
  19237. //info100.ZSCS = item["ZSCS"].ToString();
  19238. //info100.ZKSSJ = now.ToString("HHmmss");
  19239. //info100.ZJSRQ = Convert.ToDecimal(now.ToString("yyyyMMddHHmmss"));
  19240. oracleParameter = new OracleParameter[]
  19241. {
  19242. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item["GoodsCode"], ParameterDirection.Input),
  19243. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item["SAPCode"], ParameterDirection.Input),
  19244. new OracleParameter(":UserCode",OracleDbType.Varchar2, item["UserCode"], ParameterDirection.Input),
  19245. new OracleParameter(":OutputNum",OracleDbType.Varchar2, item["OutputNum"], ParameterDirection.Input),
  19246. new OracleParameter(":RECOVERYNUM",OracleDbType.Varchar2, item["RECOVERYNUM"], ParameterDirection.Input),
  19247. new OracleParameter(":ORDERCODE",OracleDbType.Varchar2, item["ORDERCODE"], ParameterDirection.Input),
  19248. new OracleParameter(":ORDERITEM",OracleDbType.Varchar2, item["ORDERITEM"], ParameterDirection.Input),
  19249. new OracleParameter(":testmouldflag",OracleDbType.Varchar2, item["TESTMOULDFLAG"], ParameterDirection.Input),
  19250. new OracleParameter(":ZSCS",OracleDbType.Varchar2, item["ZSCS"], ParameterDirection.Input),
  19251. new OracleParameter(":createtime",OracleDbType.Date, item["createtime"], ParameterDirection.Input),
  19252. };
  19253. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19254. //sapParameter.TABLE_IN[index++] = info100;
  19255. }
  19256. }
  19257. //else
  19258. //{
  19259. // sapParameter.ZSUM = 0;
  19260. // sapParameter.TABLE_IN = new ZSPP100[sapParameter.ZSUM];
  19261. //}
  19262. ////2022年9月23日13:06:25 添加时间限制,10月1号零点整不再传输原接口产量数据
  19263. //// 当前时间
  19264. //if (dateTimeNow < setTime)
  19265. //{
  19266. // //ZPPFM008Response result = SAPDataLogic.HGSAPDK_ZPPFM008(sapParameter, yyyymmdd, "60");
  19267. // ////if (result.Ztype == "E")
  19268. // ////{
  19269. // //// sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = 'E', DataMSG = DataMSG||:msg where logid = :logid";
  19270. // //// oracleParameter = new OracleParameter[]
  19271. // //// {
  19272. // //// new OracleParameter(":msg",OracleDbType.Varchar2, result.Zmsg, ParameterDirection.Input),
  19273. // //// new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  19274. // //// };
  19275. // //// r = oracleConn.ExecuteNonQuery(sqlString, oracleParameter);
  19276. // ////}
  19277. // ////else
  19278. // //if (result.TABLE_OUT != null && result.TABLE_OUT.Length > 0)
  19279. // //{
  19280. // // sqlString = "update TSAP_HEGII_WorkData t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid +
  19281. // // " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  19282. // // "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  19283. // // "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  19284. // // foreach (ZSPP100 item in result.TABLE_OUT)
  19285. // // {
  19286. // // string posnr = item.POSNR.TrimStart('0');
  19287. // // oracleParameter = new OracleParameter[]
  19288. // // {
  19289. // // new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item.ZTYPE, ParameterDirection.Input),
  19290. // // new OracleParameter(":ZMSG",OracleDbType.Varchar2, item.ZMSG, ParameterDirection.Input),
  19291. // // new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item.GROES, ParameterDirection.Input),
  19292. // // new OracleParameter(":SAPCode",OracleDbType.Varchar2, item.MATNR, ParameterDirection.Input),
  19293. // // new OracleParameter(":UserCode",OracleDbType.Varchar2, item.ZGHNU, ParameterDirection.Input),
  19294. // // new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item.VBELN) ? " " : item.VBELN), ParameterDirection.Input),
  19295. // // new OracleParameter(":OrderItem",OracleDbType.Varchar2, (string.IsNullOrEmpty(posnr) ? "0" : posnr), ParameterDirection.Input),
  19296. // // };
  19297. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19298. // // }
  19299. // // //:msg||chr(13)||DataMSG
  19300. // // result.ZMSG = $"{result.ZMSG}({sapParameter.ZSUM})";
  19301. // // sqlString = "update tsap_hegii_datalog t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  19302. // // oracleParameter = new OracleParameter[]
  19303. // // {
  19304. // // new OracleParameter(":DataStuts",OracleDbType.Varchar2, result.ZTYPE, ParameterDirection.Input),
  19305. // // new OracleParameter(":msg",OracleDbType.Varchar2, result.ZMSG, ParameterDirection.Input),
  19306. // // new OracleParameter(":logid",OracleDbType.Int32, logid, ParameterDirection.Input),
  19307. // // };
  19308. // // r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19309. // //}
  19310. // //if (result.ZTYPE != "S")
  19311. // //{
  19312. // // sre.Result = -2;
  19313. // // sre.Message = "同步产量失败," + result.ZMSG;
  19314. // // return sre;
  19315. // //}
  19316. // //sqlString =
  19317. // //"UPDATE tp_pm_groutingdailydetail bar\n" +
  19318. // //" SET bar.issync = NULL\n" +
  19319. // //" WHERE 1 = 1" + fifter;
  19320. // //r = oracleTrConn.ExecuteNonQuery(sqlString);
  19321. //}
  19322. //else {
  19323. #region 调用新报工接口
  19324. workcode = "5000";
  19325. sqlString = @"
  19326. SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') AS YYYYMMDD,
  19327. SYSDATE AS CREATETIME,
  19328. TT.GOODSCODE GROES,
  19329. TT.SAPCODE MATNR,
  19330. TT.USERCODE ZGHNU,
  19331. TT.ORDERCODE VBELN,
  19332. TT.ORDERITEM POSNR,
  19333. DECODE(TT.TESTMOULDFLAG, 0, 'C', 1, 'Y', '') ZSCMS,
  19334. 'T' AS ZSCS,
  19335. TO_CHAR(TT.OUTPUTNUM) AS ZCLNG,
  19336. TO_CHAR(TT.RECOVERYNUM) AS ZHSNG,
  19337. :WORKCODE WERKS,
  19338. '60' ZJDNU,
  19339. TO_CHAR(SYSDATE, 'YYYYMMDD') ZSCNU,
  19340. TO_CHAR(SYSDATE, 'HH24MISS') ZKSSJ,
  19341. TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') ZJSRQ,
  19342. '0' ZSPNG,
  19343. '0' ZQCNG,
  19344. '0' ZGBNG,
  19345. TO_CHAR(TT.WORKSHOP) ZSCCJ,
  19346. '0' DATACODE,
  19347. TT.CHARG
  19348. FROM (SELECT T.GOODSCODE,
  19349. T.SAPCODE,
  19350. T.USERCODE,
  19351. T.ORDERCODE,
  19352. T.ORDERITEM,
  19353. T.TESTMOULDFLAG,
  19354. T.ZSCS,
  19355. T.WORKSHOP,
  19356. T.CHARG,
  19357. 0 - SUM(DECODE(T.RECYCLINGFLAG, '1', 0, 1)) OUTPUTNUM,
  19358. 0 - SUM(DECODE(T.RECYCLINGFLAG, '0', 0, 1)) RECOVERYNUM
  19359. FROM (SELECT BAR.GOODSCODE,
  19360. BAR.MATERIALCODE SAPCODE,
  19361. GH.FHUSERCODE USERCODE,
  19362. O.ORDERNO,
  19363. BAR.RECYCLINGFLAG,
  19364. BAR.TESTMOULDFLAG,
  19365. DECODE(BAR.TESTMOULDFLAG
  19366. ,'0'
  19367. ,''
  19368. ,DECODE(G.GOODS_LINE_CODE, 'G', 'A', 'M', 'A', 'L', 'B', '')) AS ZSCS,
  19369. CASE
  19370. WHEN O.ORDERID IS NULL
  19371. OR O.ORDERNO LIKE 'HEGII%' THEN
  19372. ' '
  19373. WHEN INSTR(O.ORDERNO, '/') = 0 THEN
  19374. TO_CHAR(O.ORDERNO)
  19375. ELSE
  19376. TO_CHAR(SUBSTR(O.ORDERNO, 1, INSTR(O.ORDERNO, '/') - 1))
  19377. END ORDERCODE -- 销售凭证
  19378. ,
  19379. CASE
  19380. WHEN O.ORDERID IS NULL
  19381. OR O.ORDERNO LIKE 'HEGII%'
  19382. OR INSTR(O.ORDERNO, '/') = 0 THEN
  19383. '0'
  19384. WHEN INSTR(O.ORDERNO, '#') = 0 THEN
  19385. TO_CHAR(SUBSTR(O.ORDERNO, INSTR(O.ORDERNO, '/') + 1))
  19386. ELSE
  19387. TO_CHAR(SUBSTR(O.ORDERNO
  19388. ,INSTR(O.ORDERNO, '/') + 1
  19389. ,INSTR(O.ORDERNO, '#') - INSTR(O.ORDERNO, '/') - 1))
  19390. END ORDERITEM,
  19391. CASE
  19392. WHEN (INSTR(BAR.GROUTINGLINECODE, 'A') = 1 OR
  19393. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  19394. AND INSTR(GT.GOODSTYPECODE, '001002') = 1 THEN
  19395. 1
  19396. WHEN (INSTR(BAR.GROUTINGLINECODE, 'B') = 1 OR
  19397. INSTR(BAR.GROUTINGLINECODE, 'D') = 1)
  19398. AND INSTR(GT.GOODSTYPECODE, '001001') = 1 THEN
  19399. 2
  19400. WHEN INSTR(BAR.GROUTINGLINECODE, 'C') = 1 THEN
  19401. 3
  19402. ELSE
  19403. 9
  19404. END AS WORKSHOP,
  19405. TO_CHAR(GH.FHTIME, 'yyyymm') AS CHARG
  19406. FROM TP_PM_GROUTINGDAILYDETAIL BAR
  19407. INNER JOIN TP_PM_FINISHEDPRODUCT GH
  19408. ON BAR.GROUTINGDAILYDETAILID = GH.GROUTINGDAILYDETAILID
  19409. INNER JOIN TP_MST_GOODS G
  19410. ON G.GOODSID = BAR.GOODSID
  19411. INNER JOIN TP_MST_GOODSTYPE GT
  19412. ON GT.GOODSTYPEID = G.GOODSTYPEID
  19413. LEFT JOIN TP_PM_ORDER O
  19414. ON O.ORDERID = GH.FHORDERID
  19415. WHERE 1 = 1 " + fifter + @") T
  19416. GROUP BY T.GOODSCODE,
  19417. T.SAPCODE,
  19418. T.USERCODE,
  19419. T.ORDERCODE,
  19420. T.ORDERITEM,
  19421. T.TESTMOULDFLAG,
  19422. T.ZSCS,
  19423. T.WORKSHOP,
  19424. T.CHARG) TT
  19425. WHERE TT.OUTPUTNUM <> 0
  19426. OR TT.RECOVERYNUM <> 0
  19427. ORDER BY TT.GOODSCODE,
  19428. TT.SAPCODE,
  19429. TT.USERCODE,
  19430. TT.ORDERCODE,
  19431. TT.ORDERITEM,
  19432. TT.ZSCS,
  19433. TT.WORKSHOP,
  19434. TT.CHARG ";
  19435. oracleParameter = new OracleParameter[]
  19436. {
  19437. new OracleParameter(":WORKCODE", workcode)
  19438. };
  19439. DataTable workData5000 = oracleTrConn.GetSqlResultToDt(sqlString, oracleParameter);
  19440. //string logid_bg = oracleTrConn.GetSqlResultToStr("select SEQ_TSAP_DATALOG_BG.Nextval from dual");
  19441. sqlString = "insert into tsap_hegii_datalog_bg\n" +
  19442. " (LogID\n" +
  19443. " ,LogType\n" +
  19444. " ,BeginTime\n" +
  19445. " ,YYYYMMDD\n" +
  19446. " ,WorkCode\n" +
  19447. " ,DataCode\n" +
  19448. " ,DataStuts\n" +
  19449. " ,DataMSG\n" +
  19450. " ,DATALOGID\n" +
  19451. " ,EXECUTEDATEBEGIN\n" +
  19452. " ,EXECUTEDATEEND,SAPGUID)\n" +
  19453. "values\n" +
  19454. " (:LogID\n" +
  19455. " ,'2'\n" +
  19456. " ,sysdate\n" +
  19457. " ,:YYYYMMDD\n" +
  19458. " ,'5000'\n" +
  19459. " ,'60'\n" +
  19460. " ,'F'\n" +
  19461. " ,:DataMSG\n" +
  19462. " ,:LogID\n" +
  19463. " ,sysdate\n" +
  19464. " ,sysdate,sys_guid())";
  19465. oracleParameter = new OracleParameter[]
  19466. {
  19467. new OracleParameter(":LogID",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  19468. new OracleParameter(":YYYYMMDD",OracleDbType.Varchar2, yyyymmdd, ParameterDirection.Input),
  19469. new OracleParameter(":DataMSG",OracleDbType.Varchar2, "", ParameterDirection.Input),
  19470. };
  19471. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19472. sqlString = "insert into TSAP_HEGII_WORKDATA_BG\n" +
  19473. " (YYYYMMDD\n" +
  19474. " ,WorkCode\n" +
  19475. " ,DataCode\n" +
  19476. " ,GoodsCode\n" +
  19477. " ,SAPCode\n" +
  19478. " ,UserCode\n" +
  19479. " ,WORKSHOP\n" +
  19480. " ,OutputNum\n" +
  19481. " ,RECOVERYNUM\n" +
  19482. " ,ORDERCODE\n" +
  19483. " ,ORDERITEM\n" +
  19484. " ,testmouldflag\n" +
  19485. " ,zscs\n" +
  19486. " ,LogID,createtime,workdataid,charg)\n" +
  19487. "values\n" +
  19488. " ('" + yyyymmdd + "'\n" +
  19489. " ,'5000'\n" +
  19490. " ,'60'\n" +
  19491. " ,:GoodsCode\n" +
  19492. " ,:SAPCode\n" +
  19493. " ,:UserCode\n" +
  19494. " ,:ZSCCJ\n" +
  19495. " ,:OutputNum\n" +
  19496. " ,:RECOVERYNUM\n" +
  19497. " ,:ORDERCODE\n" +
  19498. " ,:ORDERITEM\n" +
  19499. " ,:testmouldflag\n" +
  19500. " ,:zscs\n" +
  19501. " ," + logid_bg + ",:createtime,:workdataid,:charg)";
  19502. //DateTime now = DateTime.Now;
  19503. foreach (DataRow item in workData5000.Rows)
  19504. {
  19505. string workdataid = oracleTrConn.GetSqlResultToStr("select SEQ_HEGII_WORKDATA_BG.Nextval from dual");
  19506. oracleParameter = new OracleParameter[]
  19507. {
  19508. new OracleParameter(":GoodsCode", item["GROES"].ToString()),
  19509. new OracleParameter(":SAPCode", item["MATNR"].ToString()),
  19510. new OracleParameter(":UserCode", item["ZGHNU"].ToString()),
  19511. new OracleParameter(":ZSCCJ", item["ZSCCJ"].ToString()),
  19512. new OracleParameter(":OutputNum", item["ZCLNG"].ToString()),
  19513. new OracleParameter(":RECOVERYNUM", item["ZHSNG"].ToString()),
  19514. new OracleParameter(":ORDERCODE", item["VBELN"].ToString()),
  19515. new OracleParameter(":ORDERITEM", item["POSNR"].ToString()),
  19516. new OracleParameter(":testmouldflag", item["ZSCMS"].ToString()),
  19517. new OracleParameter(":zscs", item["ZSCS"].ToString()),
  19518. new OracleParameter(":createtime", OracleDbType.Date,item["createtime"], ParameterDirection.Input),
  19519. new OracleParameter(":workdataid", workdataid),
  19520. new OracleParameter(":charg", item["CHARG"].ToString()),
  19521. };
  19522. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19523. }
  19524. sqlString = "SELECT TO_CHAR(wd.yyyymmdd) yyyymmdd\n" +
  19525. " ,TO_CHAR(5000) WERKS\n" +
  19526. " ,TO_CHAR(wd.goodscode) GROES\n" +
  19527. " ,TO_CHAR(wd.sapcode) MATNR\n" +
  19528. " ,TO_CHAR(wd.usercode) ZGHNU\n" +
  19529. " ,TO_CHAR(wd.datacode) ZJDNU\n" +
  19530. " ,to_char(sysdate, 'YYYYMMDD' ) ZSCNU\n" +
  19531. " ,to_char(sysdate, 'HH24MISS' ) ZKSSJ\n" +
  19532. " ,to_char(sysdate, 'YYYYMMDDHH24MISS' ) ZJSRQ\n" +
  19533. " ,TO_CHAR(wd.ordercode) VBELN\n" +
  19534. " ,TO_CHAR(wd.orderitem) POSNR\n" +
  19535. " ,TO_CHAR(wd.outputnum) ZCLNG\n" +
  19536. " ,TO_CHAR(wd.scrapnum) ZSPNG\n" +
  19537. " ,TO_CHAR(wd.cleanupnum) ZQCNG\n" +
  19538. " ,TO_CHAR(wd.recoverynum) ZHSNG\n" +
  19539. " ,TO_CHAR(wd.repairnum) ZGBNG\n" +
  19540. " ,TO_CHAR(wd.testmouldflag) ZSCMS\n" +
  19541. " -- ,TO_CHAR(wd.zscs) zscs\n" +
  19542. " ,'T' AS zscs\n" +
  19543. " ,TO_CHAR(wd.WORKSHOP) ZSCCJ\n" +
  19544. " ,WD.CHARG\n" +
  19545. " ,TO_CHAR(60) datacode\n" +
  19546. " ,'5000' || LPAD(DL.LOGID, 10,'0') AS ZID\n" +
  19547. " FROM tsap_hegii_workdata_bg wd\n" +
  19548. " INNER JOIN TSAP_HEGII_DATALOG_BG DL\n" +
  19549. " ON wd.LOGID = DL.LOGID \n" +
  19550. " WHERE wd.logid = :logid";
  19551. OracleParameter[] par = null;
  19552. par = new OracleParameter[]
  19553. {
  19554. new OracleParameter(":logid", OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  19555. };
  19556. DataTable dtt = oracleTrConn.GetSqlResultToDt(sqlString, par);
  19557. int num = dtt.Rows.Count;
  19558. //string sq = "select SAP_INI_BG from TP_SYS_SAPCONFIG";
  19559. //string SAP_ING_NEW = oracleTrConn.GetSqlResultToStr(sq);
  19560. //if (true)
  19561. //{
  19562. // 调用SAP接口
  19563. string postString = "{\"ZSUM\":" + num.ToString() + ",\"TABLE_IN\":{\"item\":" + JsonHelper.ToJson(ModelConvertHelper<BGToSAP>.ConvertToModel(dtt)) + "}}";
  19564. INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  19565. string url030 = ini.ReadIniData("SAP_NEW_INFO", "Url030");
  19566. //string url030 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZPPFM030";
  19567. string result = string.Empty;
  19568. try
  19569. {
  19570. result = SAPDataLogic.PostData(url030, postString, "POST");
  19571. }
  19572. catch (Exception ex)
  19573. {
  19574. sre.Result = -2;
  19575. sre.Message = "sap030接口同步失败," + ex.Message;
  19576. return sre;
  19577. }
  19578. if (JObject.Parse(result)["TABLE_OUT"] != null && JObject.Parse(result)["TABLE_OUT"].ToString().Length > 0)
  19579. {
  19580. sqlString = "update TSAP_HEGII_WorkData_bg t set t.ZTime =sysdate, ZTYPE = :ZTYPE, ZMSG = :ZMSG where logid = " + logid_bg +
  19581. " \n and YYYYMMDD='" + yyyymmdd + "' and WorkCode='" + workcode +
  19582. "' and DataCode='60' and GoodsCode=:GoodsCode and SAPCode=:SAPCode and UserCode=:UserCode \n" +
  19583. "and OrderCode=:OrderCode and OrderItem=:OrderItem";
  19584. Dictionary<string, object> obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(result);
  19585. object TABLE_OUT;
  19586. obj.TryGetValue("TABLE_OUT", out TABLE_OUT);
  19587. obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(TABLE_OUT + "");
  19588. object item1;
  19589. obj.TryGetValue("item", out item1);
  19590. JArray arr = JArray.FromObject(item1);
  19591. foreach (JObject item60 in arr)
  19592. {
  19593. string posnr = item60["POSNR"].ToString().TrimStart('0');
  19594. oracleParameter = new OracleParameter[]
  19595. {
  19596. new OracleParameter(":ZTYPE",OracleDbType.Varchar2, item60["ZTYPE"].ToString(), ParameterDirection.Input),
  19597. new OracleParameter(":ZMSG",OracleDbType.Varchar2, item60["ZMSG"].ToString(), ParameterDirection.Input),
  19598. new OracleParameter(":GoodsCode",OracleDbType.Varchar2, item60["GROES"].ToString(), ParameterDirection.Input),
  19599. new OracleParameter(":SAPCode",OracleDbType.Varchar2, item60["MATNR"].ToString(), ParameterDirection.Input),
  19600. new OracleParameter(":UserCode",OracleDbType.Varchar2, item60["ZGHNU"].ToString(), ParameterDirection.Input),
  19601. new OracleParameter(":OrderCode",OracleDbType.Varchar2, (string.IsNullOrEmpty(item60["VBELN"].ToString()) ? " " : item60["VBELN"].ToString()), ParameterDirection.Input),
  19602. new OracleParameter(":Orderitem",OracleDbType.Varchar2, ((string.IsNullOrEmpty(posnr)) ? "0" : posnr), ParameterDirection.Input),
  19603. };
  19604. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19605. }
  19606. //:msg||chr(13)||DataMSG
  19607. JObject.Parse(result)["ZMSG"] = $"{JObject.Parse(result)["ZMSG"]}({num})";
  19608. sqlString = "update tsap_hegii_datalog_bg t set t.EndTime = sysdate, DataStuts = :DataStuts, DataMSG =nvl2(:msg,:msg||' '||chr(13)||DataMSG,DataMSG) where logid = :logid";
  19609. oracleParameter = new OracleParameter[]
  19610. {
  19611. new OracleParameter(":DataStuts",OracleDbType.Varchar2, JObject.Parse(result)["ZTYPE"].ToString(), ParameterDirection.Input),
  19612. new OracleParameter(":msg",OracleDbType.Varchar2, JObject.Parse(result)["ZMSG"].ToString(), ParameterDirection.Input),
  19613. new OracleParameter(":logid",OracleDbType.Int32, logid_bg, ParameterDirection.Input),
  19614. };
  19615. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19616. }
  19617. if (JObject.Parse(result)["ZTYPE"].ToString() != "S")
  19618. {
  19619. sre.Result = -2;
  19620. sre.Message = "同步产量失败," + JObject.Parse(result)["ZMSG"].ToString();
  19621. return sre;
  19622. }
  19623. #endregion
  19624. //sqlString =
  19625. //"UPDATE tp_pm_groutingdailydetail bar\n" +
  19626. //" SET bar.issync = '1'\n" +
  19627. //" WHERE 1 = 1" + fifter;
  19628. //r = oracleTrConn.ExecuteNonQuery(sqlString);
  19629. //}
  19630. //}
  19631. #endregion
  19632. #endregion
  19633. #region 产成品交接撤销
  19634. // 本批交接的批次号
  19635. for (int i = 0; i < dtData.Rows.Count; i++)
  19636. {
  19637. #region 查询产品相关信息
  19638. // 撤销记录
  19639. sql = "INSERT INTO TP_PM_FHUndo\n" +
  19640. " (GroutingDailyDetailID\n" +
  19641. " ,GoodsLevelTypeID\n" +
  19642. " ,FHUserID\n" +
  19643. " ,FHUserCode\n" +
  19644. " ,FHBatchNo\n" +
  19645. " ,FHTime\n" +
  19646. " ,FHOrderID\n" +
  19647. " ,OnlyCode\n" +
  19648. " ,FINISHEDLOADBATCHNO\n" +
  19649. " ,AccountID\n" +
  19650. " ,CreateUserID)\n" +
  19651. " SELECT t.groutingdailydetailid\n" +
  19652. " ,t.GoodsLevelTypeID\n" +
  19653. " ,t.fhuserid\n" +
  19654. " ,t.fhusercode\n" +
  19655. " ,t.fhbatchno\n" +
  19656. " ,t.fhtime\n" +
  19657. " ,t.FHOrderID\n" +
  19658. " ,t.onlycode\n" +
  19659. " ,t.FINISHEDLOADBATCHNO\n" +
  19660. " ,t.AccountID\n" +
  19661. " ,:UpdateUserID\n" +
  19662. " FROM TP_PM_FinishedProduct t\n" +
  19663. " WHERE t.barcode = :BarCode";
  19664. Paras = new OracleParameter[]
  19665. {
  19666. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  19667. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19668. };
  19669. int resultRow = oracleTrConn.ExecuteNonQuery(sql, Paras);
  19670. // SAP同步后再成品交接撤销的,记录撤销标识
  19671. string sapsql = null;
  19672. //string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and ztype='S' and rownum=1 ";
  19673. OracleParameter[] sapparas = new OracleParameter[]
  19674. {
  19675. new OracleParameter(":BarCode",OracleDbType.NVarchar2,dtData.Rows[i]["barcode"],ParameterDirection.Input),
  19676. };
  19677. //int sapcount = Convert.ToInt32(oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  19678. //if (sapcount > 0)
  19679. {
  19680. sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  19681. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19682. }
  19683. // 保留条码同步履历 2020-10-14 by chenxy ztype = 'S'
  19684. //sapsql = "update tsap_hegii_FinishedProduct set ztype = 'D' where barcode=:BarCode and (ztype is null or ztype not in ('S','D'))";
  19685. //sapsql = "update tsap_hegii_FinishedProduct set ztype = 'D' where barcode=:BarCode and (ztype is null or ztype = 'S')";
  19686. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19687. sql = @"Update TP_PM_FinishedProduct
  19688. set FHUserID=null,
  19689. FHUserCode=null,
  19690. FHBatchNo=null,
  19691. FHTime=null,
  19692. FHOrderID=null,
  19693. --FINISHEDLOADBATCHNO=null,
  19694. UpdateUserID=:UpdateUserID
  19695. where BarCode=:BarCode";
  19696. resultRow = oracleTrConn.ExecuteNonQuery(sql, Paras);
  19697. #endregion
  19698. }
  19699. #endregion
  19700. #region 同步WMS系统
  19701. if (fpData.Rows.Count > 0)
  19702. {
  19703. DateTime now = DateTime.Now;
  19704. string message = WMSDataLogic.BackPushWMS(fpData, now);
  19705. // 同步日志
  19706. sqlString = @"
  19707. INSERT INTO TP_WMS_LOG
  19708. (LOGTYPE,
  19709. SPS,
  19710. SKU,
  19711. SERIALNO,
  19712. ADDDAY,
  19713. ADDTIME,
  19714. CODEI,
  19715. UDF1,
  19716. UDF2,
  19717. LPN,
  19718. RETURNDESC,
  19719. ACCOUNTID,
  19720. CREATETIME,
  19721. UPDATETIME,
  19722. CREATEUSERID,
  19723. UPDATEUSERID)
  19724. VALUES
  19725. (:LOGTYPE,
  19726. :SPS,
  19727. :SKU,
  19728. :SERIALNO,
  19729. :ADDDAY,
  19730. :ADDTIME,
  19731. :CODEI,
  19732. :UDF1,
  19733. :UDF2,
  19734. :LPN,
  19735. :RETURNDESC,
  19736. :ACCOUNTID,
  19737. :CREATETIME,
  19738. :CREATETIME,
  19739. :USERID,
  19740. :USERID) ";
  19741. string orderitem;
  19742. foreach (DataRow row in fpData.Rows)
  19743. {
  19744. orderitem = row["orderitem"] + "";
  19745. if (string.IsNullOrEmpty(orderitem) || "0".Equals(orderitem))
  19746. {
  19747. orderitem = "000000";
  19748. }
  19749. oracleParameter = new OracleParameter[]
  19750. {
  19751. new OracleParameter(":LOGTYPE",OracleDbType.Int32, 2, ParameterDirection.Input),
  19752. new OracleParameter(":SPS",OracleDbType.Varchar2, "5020", ParameterDirection.Input),
  19753. new OracleParameter(":SKU",OracleDbType.Varchar2, row["sapcode"], ParameterDirection.Input),
  19754. new OracleParameter(":SERIALNO",OracleDbType.Varchar2, row["outcode"], ParameterDirection.Input),
  19755. new OracleParameter(":ADDDAY",OracleDbType.Varchar2, now.ToString("yyyyMMdd"), ParameterDirection.Input),
  19756. new OracleParameter(":ADDTIME",OracleDbType.Varchar2, now.ToString("HHmmss"), ParameterDirection.Input),
  19757. new OracleParameter(":CODEI",OracleDbType.Varchar2, row["barcode"], ParameterDirection.Input),
  19758. new OracleParameter(":UDF1",OracleDbType.Varchar2, row["ordercode"], ParameterDirection.Input),
  19759. new OracleParameter(":UDF2",OracleDbType.Varchar2, orderitem, ParameterDirection.Input),
  19760. new OracleParameter(":LPN",OracleDbType.Varchar2, row["sapflbatchno"], ParameterDirection.Input),
  19761. new OracleParameter(":RETURNDESC",OracleDbType.Varchar2, message, ParameterDirection.Input),
  19762. new OracleParameter(":ACCOUNTID",OracleDbType.Varchar2, sUserInfo.AccountID, ParameterDirection.Input),
  19763. new OracleParameter(":CREATETIME",OracleDbType.Date, now, ParameterDirection.Input),
  19764. new OracleParameter(":USERID",OracleDbType.Varchar2, sUserInfo.UserID, ParameterDirection.Input),
  19765. };
  19766. r = oracleTrConn.ExecuteNonQuery(sqlString, oracleParameter);
  19767. }
  19768. sqlString =
  19769. "UPDATE tp_pm_groutingdailydetail bar\n" +
  19770. " SET bar.issync = NULL\n" +
  19771. " WHERE 1 = 1" + fifter;
  19772. r = oracleTrConn.ExecuteNonQuery(sqlString);
  19773. }
  19774. #endregion
  19775. #region 回收包材库库存
  19776. sqlString =
  19777. "SELECT 1\n" +
  19778. " FROM tp_pm_groutingdailydetail bar\n" +
  19779. " WHERE bar.packingby3 = '1' " + fifter;
  19780. isExists = oracleTrConn.GetSqlResultToObj(sqlString);
  19781. if (isExists != null)
  19782. {
  19783. //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII);
  19784. string packingURL = ini.ReadIniData("SAP_HEGII", "PackingURL");
  19785. foreach (DataRow row in workData.Rows)
  19786. {
  19787. string url = packingURL + row["sapcode"] + "&num=" + row["outputnum"];
  19788. WebRequest req = WebRequest.Create(url);
  19789. req.Method = "GET";
  19790. Stream stream = req.GetResponse().GetResponseStream();
  19791. StreamReader reader = new StreamReader(stream);
  19792. JObject json = JObject.Parse(reader.ReadToEnd());
  19793. // 包材库失败暂时不处理 TODO
  19794. if (json["success"].ToString() == "false")
  19795. {
  19796. //sre.Result = -2;
  19797. //sre.Message = json["message"].ToString();
  19798. //return sre;
  19799. }
  19800. }
  19801. }
  19802. #endregion
  19803. sre.Result = 1;
  19804. oracleTrConn.Commit();
  19805. oracleTrConn.Disconnect();
  19806. return sre;
  19807. }
  19808. catch (Exception ex)
  19809. {
  19810. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  19811. {
  19812. oracleTrConn.Rollback();
  19813. oracleTrConn.Disconnect();
  19814. }
  19815. throw ex;
  19816. }
  19817. finally
  19818. {
  19819. if (oracleTrConn.ConnState == ConnectionState.Open)
  19820. {
  19821. oracleTrConn.Disconnect();
  19822. }
  19823. }
  19824. }
  19825. #endregion
  19826. /// <summary>
  19827. /// 撤销产成品交接
  19828. /// </summary>
  19829. /// <param name="barcode"></param>
  19830. /// <param name="sUserInfo"></param>
  19831. /// <returns></returns>
  19832. public static ServiceResultEntity SaveCancelFinishedHandoverByBarcode(string barcode, SUserInfo sUserInfo)
  19833. {
  19834. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19835. try
  19836. {
  19837. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19838. // 1.判断产品是否在产成品表中
  19839. string sql = @"select
  19840. FHUserID,
  19841. FHUserCode,
  19842. GoodsID,
  19843. GoodsCode,
  19844. GoodsName
  19845. from TP_PM_FinishedProduct
  19846. where BarCode=:BarCode";
  19847. OracleParameter[] paras = new OracleParameter[]{
  19848. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19849. };
  19850. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19851. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19852. {
  19853. // 在产成品表中
  19854. #region 是否交接过
  19855. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19856. if (string.IsNullOrEmpty(fhUserCode))
  19857. {
  19858. resultEntity.Result = -1; //未交接,不能撤销
  19859. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19860. return resultEntity;
  19861. }
  19862. #endregion
  19863. }
  19864. else
  19865. {
  19866. resultEntity.Result = -2; //不能产成品,不能撤销
  19867. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19868. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19869. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19870. {
  19871. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19872. }
  19873. else
  19874. {
  19875. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  19876. }
  19877. return resultEntity;
  19878. }
  19879. #region 查询产品相关信息
  19880. // 撤销记录
  19881. string sqlString = "INSERT INTO TP_PM_FHUndo\n" +
  19882. " (GroutingDailyDetailID\n" +
  19883. " ,GoodsLevelTypeID\n" +
  19884. " ,FHUserID\n" +
  19885. " ,FHUserCode\n" +
  19886. " ,FHBatchNo\n" +
  19887. " ,FHTime\n" +
  19888. " ,FHOrderID\n" +
  19889. " ,OnlyCode\n" +
  19890. " ,FINISHEDLOADBATCHNO\n" +
  19891. " ,AccountID\n" +
  19892. " ,CreateUserID)\n" +
  19893. " SELECT t.groutingdailydetailid\n" +
  19894. " ,t.GoodsLevelTypeID\n" +
  19895. " ,t.fhuserid\n" +
  19896. " ,t.fhusercode\n" +
  19897. " ,t.fhbatchno\n" +
  19898. " ,t.fhtime\n" +
  19899. " ,t.FHOrderID\n" +
  19900. " ,t.onlycode\n" +
  19901. " ,t.FINISHEDLOADBATCHNO\n" +
  19902. " ,t.AccountID\n" +
  19903. " ,:UpdateUserID\n" +
  19904. " FROM TP_PM_FinishedProduct t\n" +
  19905. " WHERE t.barcode = :BarCode";
  19906. paras = new OracleParameter[]{
  19907. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19908. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  19909. };
  19910. int resultRow = oracleTrConn.ExecuteNonQuery(sqlString, paras);
  19911. // SAP同步后再成品交接撤销的,记录撤销标识
  19912. string sapsql = "select count(*) from tsap_hegii_FinishedProduct t where t.barcode = :BarCode and ztype='S' and rownum=1 ";
  19913. OracleParameter[] sapparas = new OracleParameter[]{
  19914. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19915. };
  19916. int sapcount = Convert.ToInt32(oracleTrConn.GetSqlResultToObj(sapsql, sapparas));
  19917. if (sapcount > 0)
  19918. {
  19919. sapsql = "update tp_pm_groutingdailydetail set SAPFHUndoFlag = '1' where barcode=:BarCode";
  19920. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19921. }
  19922. sapsql = "update tsap_hegii_FinishedProduct set ztype = 'D' where barcode=:BarCode and (ztype is null or ztype not in ('S','D'))";
  19923. oracleTrConn.ExecuteNonQuery(sapsql, sapparas);
  19924. sql = @"Update TP_PM_FinishedProduct
  19925. set FHUserID=null,
  19926. FHUserCode=null,
  19927. FHBatchNo=null,
  19928. FHTime=null,
  19929. FHOrderID=null,FINISHEDLOADBATCHNO=null,
  19930. UpdateUserID=:UpdateUserID
  19931. where BarCode=:BarCode";
  19932. resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  19933. if (resultRow == 0)
  19934. {
  19935. oracleTrConn.Rollback();
  19936. oracleTrConn.Disconnect();
  19937. }
  19938. else
  19939. {
  19940. resultEntity.Result = 1;
  19941. oracleTrConn.Commit();
  19942. oracleTrConn.Disconnect();
  19943. }
  19944. #endregion
  19945. return resultEntity;
  19946. }
  19947. catch (Exception ex)
  19948. {
  19949. throw ex;
  19950. }
  19951. }
  19952. /// <summary>
  19953. /// 更改产成品交接订单号
  19954. /// </summary>
  19955. /// <param name="barcode"></param>
  19956. /// <param name="orderid"></param>
  19957. /// <param name="sUserInfo"></param>
  19958. /// <returns></returns>
  19959. public static ServiceResultEntity SaveChangeFinishedHandoverByBarcode(string barcode, int orderid, SUserInfo sUserInfo)
  19960. {
  19961. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  19962. try
  19963. {
  19964. ServiceResultEntity resultEntity = new ServiceResultEntity();
  19965. // 1.判断产品是否在产成品表中
  19966. string sql = @"select
  19967. FHUserID,
  19968. FHUserCode,
  19969. GoodsID,
  19970. GoodsCode,
  19971. GoodsName
  19972. from TP_PM_FinishedProduct
  19973. where BarCode=:BarCode";
  19974. OracleParameter[] paras = new OracleParameter[]{
  19975. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  19976. };
  19977. DataSet dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19978. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19979. {
  19980. // 在产成品表中
  19981. #region 是否交接过
  19982. string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString();
  19983. if (string.IsNullOrEmpty(fhUserCode))
  19984. {
  19985. resultEntity.Result = -1; //未交接,不能撤销
  19986. resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作";
  19987. return resultEntity;
  19988. }
  19989. #endregion
  19990. }
  19991. else
  19992. {
  19993. resultEntity.Result = -2; //不能产成品,不能撤销
  19994. sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode";
  19995. dsResult = oracleTrConn.GetSqlResultToDs(sql, paras);
  19996. if (dsResult != null && dsResult.Tables[0].Rows.Count > 0)
  19997. {
  19998. resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作";
  19999. }
  20000. else
  20001. {
  20002. resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作";
  20003. }
  20004. return resultEntity;
  20005. }
  20006. #region 查询产品相关信息
  20007. sql = @"Update TP_PM_FinishedProduct
  20008. set
  20009. FHOrderID=:FHOrderID,
  20010. UpdateUserID=:UpdateUserID
  20011. where BarCode=:BarCode";
  20012. paras = new OracleParameter[]{
  20013. new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  20014. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20015. new OracleParameter(":FHOrderID",OracleDbType.Int32,orderid,ParameterDirection.Input),
  20016. };
  20017. int resultRow = oracleTrConn.ExecuteNonQuery(sql, paras);
  20018. if (resultRow == 0)
  20019. {
  20020. oracleTrConn.Rollback();
  20021. oracleTrConn.Disconnect();
  20022. }
  20023. else
  20024. {
  20025. resultEntity.Result = 1;
  20026. oracleTrConn.Commit();
  20027. oracleTrConn.Disconnect();
  20028. }
  20029. #endregion
  20030. return resultEntity;
  20031. }
  20032. catch (Exception ex)
  20033. {
  20034. throw ex;
  20035. }
  20036. }
  20037. /// <summary>
  20038. /// 回收标准计件
  20039. /// </summary>
  20040. /// <param name="oracleTrConn">数据连接对象</param>
  20041. /// <param name="procedure">工序对象</param>
  20042. /// <param name="barcodeTable">条码信息</param>
  20043. /// <param name="sUserInfo">用户基本信息</param>
  20044. /// <param name="goodsID">返回的产品ID</param>
  20045. /// <param name="goodsCode">返回的产品Code</param>
  20046. /// <param name="goodsName">返回的产品名称</param>
  20047. /// <param name="groutingUserID">返回的注浆者ID</param>
  20048. /// <returns>string</returns>
  20049. /// <remarks>
  20050. /// 王鑫 2017.7.20 新建
  20051. /// </remarks>
  20052. private static string AddRecydingFlagWorkPiece(IDBTransaction oracleTrConn,
  20053. ProcedureEntity procedure,
  20054. DataTable barcodeTable,
  20055. SUserInfo sUserInfo,
  20056. out int goodsID,
  20057. out string goodsCode,
  20058. out string goodsName,
  20059. out string groutingUserCode, out string logoCode, out string logoName, out string groutingdate)
  20060. {
  20061. try
  20062. {
  20063. int deleteRow = 0;
  20064. goodsID = Constant.INT_IS_ZERO;
  20065. goodsCode = null;
  20066. goodsName = null;
  20067. groutingUserCode = string.Empty; //Constant.INT_IS_ZERO;
  20068. // 获得账务日期
  20069. DateTime accountDate = CommonModuleLogic.CommonModuleLogic.GetAccountDate(oracleTrConn, sUserInfo);
  20070. string errMsg = string.Empty;
  20071. // 本批采集的批次号
  20072. string centralizedBatchNo = System.Guid.NewGuid().ToString().ToUpper();
  20073. // 条码信息
  20074. string logoName_Temp = "";
  20075. string logoCode_Temp = "";
  20076. string groutingdate_Temp = "";
  20077. foreach (DataRow barcodeRow in barcodeTable.Rows)
  20078. {
  20079. // 条码
  20080. string barcode = barcodeRow["Barcode"].ToString();
  20081. if (string.IsNullOrEmpty(barcode))
  20082. {
  20083. throw new Exception("传入的条码号为空");
  20084. }
  20085. // 生产工号
  20086. int workUserID = Convert.ToInt32(barcodeRow["UserID"]);
  20087. // 生产工号
  20088. string workUserCode = barcodeRow["UserCode"].ToString();
  20089. //#region 校验条码有效性
  20090. //errMsg = CheckDryRepairBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  20091. //if (!string.IsNullOrEmpty(errMsg))
  20092. //{
  20093. // return errMsg;
  20094. //}
  20095. //#endregion
  20096. if (procedure.CollectType == 1)
  20097. {
  20098. #region 校验条码有效性
  20099. errMsg = CheckRecyclingFlagBarcode(oracleTrConn, procedure.ProcedureID, barcode, out goodsID, out goodsCode, out goodsName, out groutingUserCode, sUserInfo);
  20100. if (!string.IsNullOrEmpty(errMsg))
  20101. {
  20102. logoName = "";
  20103. logoCode = "";
  20104. groutingdate = "";
  20105. return errMsg;
  20106. }
  20107. #endregion
  20108. }
  20109. else
  20110. {
  20111. string sqlGroutingInfo = @"select tp_pm_groutingdailydetail.goodsid,
  20112. tp_pm_groutingdailydetail.goodscode,
  20113. tp_pm_groutingdailydetail.goodsname,
  20114. tp_pm_groutingdailydetail.usercode as groutingUserCode,
  20115. tp_pm_groutingdailydetail.groutingdate,
  20116. tp_mst_logo.logoid,
  20117. tp_mst_logo.logocode,
  20118. tp_mst_logo.logoname
  20119. from tp_pm_groutingdailydetail
  20120. left join tp_mst_logo
  20121. on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid
  20122. where tp_pm_groutingdailydetail.barcode=:barcode
  20123. ";
  20124. OracleParameter[] paras = new OracleParameter[] {
  20125. new OracleParameter(":barcode",barcode),
  20126. };
  20127. DataSet dsGrouting = oracleTrConn.GetSqlResultToDs(sqlGroutingInfo, paras);
  20128. if (dsGrouting != null && dsGrouting.Tables[0].Rows.Count > 0)
  20129. {
  20130. goodsID = Convert.ToInt32(dsGrouting.Tables[0].Rows[0]["goodsid"]);
  20131. goodsCode = dsGrouting.Tables[0].Rows[0]["goodscode"].ToString();
  20132. goodsName = dsGrouting.Tables[0].Rows[0]["goodsName"].ToString();
  20133. groutingUserCode = dsGrouting.Tables[0].Rows[0]["groutingUserCode"].ToString();
  20134. logoName = dsGrouting.Tables[0].Rows[0]["logoName"].ToString();
  20135. logoCode = dsGrouting.Tables[0].Rows[0]["logoCode"].ToString();
  20136. groutingdate = dsGrouting.Tables[0].Rows[0]["groutingdate"].ToString();
  20137. logoName_Temp = logoName;
  20138. logoCode_Temp = logoCode;
  20139. groutingdate_Temp = groutingdate;
  20140. }
  20141. }
  20142. #region 数据处理
  20143. #region 处理废弃数据并转回收数据为在产数据
  20144. //////string querysql = @"select GOODSLEVELID from TP_MST_GOODSLEVEL where GOODSLEVELTYPEID=9 and ACCOUNTID=:accountid and VALUEFLAG=1";
  20145. //////OracleParameter[] queryparas = new OracleParameter[]{
  20146. ////// new OracleParameter(":accountid",OracleDbType.Varchar2, sUserInfo.AccountID,ParameterDirection.Input)
  20147. //////};
  20148. //////DataSet returnDs = oracleTrConn.GetSqlResultToDs(querysql, queryparas);
  20149. //////if (returnDs == null || returnDs.Tables[0].Rows.Count == 0)
  20150. //////{
  20151. ////// errMsg = "未设定干补等级";
  20152. ////// logoName = "";
  20153. ////// logoCode = "";
  20154. ////// groutingdate = "";
  20155. ////// return errMsg;
  20156. //////}
  20157. //////string goodsLevelID = returnDs.Tables[0].Rows[0][0].ToString();
  20158. //第一步,废弃数据的产品分级类别由 8损坯13不合格14不合格(返) 改为 9干补,产品分级=此账套相应的设置
  20159. /*string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,SpecialRepairFlag=1,
  20160. SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  20161. UpdateUserID=:UpdateUserID
  20162. where BarCode=:barcode
  20163. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  20164. and ValueFlag=1 and GoodsLevelTypeID=(select max(GoodsLevelTypeID) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1) ";
  20165. */
  20166. // and ValueFlag=1 and GoodsLevelTypeID=8 ";
  20167. ////// string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set GOODSLEVELID=:GOODSLEVELID, GoodsLevelTypeID=9,
  20168. ////// SpecialRepairUserID=:SpecialRepairUserID,SpecialRepairUserCode=:SpecialRepairUserCode,SpecialRepairTime=sysdate,
  20169. ////// UpdateUserID=:UpdateUserID
  20170. ////// where BarCode=:barcode
  20171. ////// and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode1 and ValueFlag=1)
  20172. ////// and ValueFlag=1 and GoodsLevelTypeID in (8, 13, 14) ";
  20173. string sqlUpdateLevelTypeString = @"update TP_PM_ScrapProduct set RecyclingFlag=1,
  20174. UpdateUserID=:UpdateUserID,RecyclingUserID=:RecyclingUserID,RecyclingUserCode=:RecyclingUserCode,
  20175. RecyclingTime=sysdate
  20176. where BarCode=:barcode
  20177. and CreateTime=(select max(CreateTime) from TP_PM_ScrapProduct where BarCode=:barcode and ValueFlag=1)
  20178. and ValueFlag=1 ";
  20179. OracleParameter[] ScrapProductparas = new OracleParameter[]{
  20180. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20181. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20182. new OracleParameter(":RecyclingUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20183. new OracleParameter(":RecyclingUserCode",OracleDbType.Varchar2, sUserInfo.UserCode,ParameterDirection.Input),
  20184. };
  20185. oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  20186. string sqlUpdateGROUTString = @"update TP_PM_GROUTINGDAILYDETAIL set RecyclingFlag=1,
  20187. UpdateUserID=:UpdateUserID
  20188. where BarCode=:barcode ";
  20189. OracleParameter[] GROUTparas = new OracleParameter[]{
  20190. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20191. new OracleParameter(":UpdateUserID",OracleDbType.Int32,sUserInfo.UserID,ParameterDirection.Input),
  20192. };
  20193. oracleTrConn.ExecuteNonQuery(sqlUpdateGROUTString, GROUTparas);
  20194. //modify wangx 20150623
  20195. //////OracleParameter[] sqlUpdateparas = new OracleParameter[]{
  20196. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20197. //////};
  20198. //string sqlUpdate = "update TP_PM_InCheckedDetail set SpecialRepairFlag=1 where barcode=:barcode";
  20199. //oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  20200. //////string sqlUpdate = "update TP_PM_ProductionDataIn set SpecialRepairFlag=1 where barcode=:barcode";
  20201. //////oracleTrConn.ExecuteNonQuery(sqlUpdate, sqlUpdateparas);
  20202. //modify wangx 20150623 end
  20203. #region
  20204. //第五步,插入回收工序的生产数据(同其他计件工序),设置干补标识,产品分级类别=9干补,产品分级=此账套相应的设置
  20205. // 查询新插入的生产数据ID
  20206. string sql = "select SEQ_PM_ProductionData_ID.nextval from dual";
  20207. string idStr = oracleTrConn.GetSqlResultToStr(sql);
  20208. int productionDataID = 0;
  20209. if (!string.IsNullOrEmpty(idStr))
  20210. {
  20211. productionDataID = int.Parse(idStr);
  20212. }
  20213. else
  20214. {
  20215. logoName = "";
  20216. logoCode = "";
  20217. groutingdate = "";
  20218. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20219. }
  20220. int? ClassesSettingID = null;//班次配置ID
  20221. #region 第五步 添加生产者数据
  20222. errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo, ref ClassesSettingID);
  20223. if (!string.IsNullOrEmpty(errMsg))
  20224. {
  20225. logoName = "";
  20226. logoCode = "";
  20227. groutingdate = "";
  20228. return errMsg;
  20229. }
  20230. #endregion
  20231. ProductionDataEntity productionData = new ProductionDataEntity();
  20232. #region 属性赋值
  20233. productionData.ClassesSettingID = ClassesSettingID;
  20234. productionData.ProductionDataID = Convert.ToInt32(idStr);
  20235. productionData.Barcode = barcode;
  20236. productionData.CentralizedBatchNo = centralizedBatchNo;
  20237. productionData.ProductionLineID = procedure.ProductionLineID;
  20238. productionData.ProductionLineCode = procedure.ProductionlineCode;
  20239. productionData.ProductionLineName = procedure.ProductionlineName;
  20240. productionData.CompleteProcedureID = procedure.ProcedureID;
  20241. productionData.ProcedureCode = procedure.ProcedureCode;
  20242. productionData.ProcedureName = procedure.ProcedureName;
  20243. productionData.ProcedureModel = procedure.ProcedureModel;
  20244. productionData.ModelType = procedure.ModelType;
  20245. productionData.NodeType = procedure.NodeType;
  20246. productionData.DefectFlag = (int)Constant.DefectFlag.No;
  20247. productionData.ReworkProcedureID = null;
  20248. productionData.IsPublicBody = IsPubilcByBarCode(oracleTrConn, barcode);
  20249. productionData.IsReFire = (int)Constant.ReFireFlag.No;
  20250. //设置干补标识,产品分级类别=9干补
  20251. ////productionData.GoodsLevelTypeID = 9;
  20252. //productionData.GoodsLevelID = int.Parse(goodsLevelID);
  20253. //productionData.GoodsGrade = (int)Constant.GoodsGrade.Good;
  20254. productionData.OrganizationID = procedure.OrganizationID;
  20255. productionData.GoodsID = goodsID;
  20256. productionData.GoodsCode = goodsCode;
  20257. productionData.GoodsName = goodsName;
  20258. productionData.UserID = workUserID;
  20259. productionData.UserCode = barcodeRow["UserCode"].ToString();
  20260. productionData.UserName = barcodeRow["UserName"].ToString();
  20261. productionData.PieceType = procedure.PieceType;
  20262. if (barcodeRow["LogoID"].ToString() != "")
  20263. {
  20264. productionData.LogoID = Convert.ToInt32(barcodeRow["LogoID"]);
  20265. }
  20266. string sqlReFire = @"select
  20267. isrefire,
  20268. logoid,GoodsLevelID,GoodsLevelTypeID
  20269. from tp_pm_inproduction where barcode=:barcode
  20270. union
  20271. select
  20272. isrefire,
  20273. logoid,GoodsLevelID,GoodsLevelTypeID
  20274. from TP_PM_InProductionTrash where barcode=:barcode
  20275. union
  20276. select
  20277. isrefire,
  20278. logoid,GoodsLevelID,GoodsLevelTypeID
  20279. from TP_PM_FinishedProduct where barcode=:barcode ";
  20280. OracleParameter[] ReFireparas = new OracleParameter[] {
  20281. new OracleParameter(":barcode",barcode),
  20282. };
  20283. DataSet dsReFire = oracleTrConn.GetSqlResultToDs(sqlReFire, ReFireparas);
  20284. if (dsReFire != null && dsReFire.Tables[0].Rows.Count > 0)
  20285. {
  20286. if (Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]) > 0)
  20287. {
  20288. productionData.IsReFire = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["IsReFire"]);
  20289. }
  20290. if (dsReFire.Tables[0].Rows[0]["logoid"].ToString() != "")
  20291. {
  20292. productionData.LogoID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["LogoID"]);
  20293. }
  20294. if (dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"].ToString() != string.Empty)
  20295. {
  20296. productionData.GoodsLevelTypeID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelTypeID"]);
  20297. productionData.GoodsLevelID = Convert.ToInt32(dsReFire.Tables[0].Rows[0]["GoodsLevelID"]);
  20298. }
  20299. }
  20300. #endregion 属性赋值
  20301. productionData.SpecialRepairflag = 0;
  20302. string OutSpecialRepairflag = "0";// 没有什么特殊的,同干补保存生产数据共用同一个方法
  20303. errMsg = AddDryRepairProductionData(oracleTrConn, accountDate, productionData, sUserInfo, out OutSpecialRepairflag);
  20304. if (!string.IsNullOrEmpty(errMsg))
  20305. {
  20306. logoName = "";
  20307. logoCode = "";
  20308. groutingdate = "";
  20309. return errMsg;
  20310. }
  20311. #endregion
  20312. //第二步,回收站中数据回到在产中,设置干补标识。
  20313. string sqlInsInProdString = @"insert into TP_PM_InProduction(BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  20314. PROCEDUREMODEL, MODELTYPE, REWORKPROCEDUREID,
  20315. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  20316. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  20317. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  20318. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  20319. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  20320. CREATEUSERID, UPDATETIME, UPDATEUSERID,
  20321. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, DEFECTFLAG,
  20322. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  20323. KILNID, KILNCODE, KILNNAME, KILNCARID,
  20324. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,FlowProcedureID
  20325. ,FlowProcedureTime,ProcedureID,ProcedureTime,ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID)
  20326. select BARCODE, PRODUCTIONLINEID, PRODUCTIONLINECODE, PRODUCTIONLINENAME,
  20327. :PROCEDUREMODEL, :MODELTYPE, null,
  20328. ISPUBLICBODY, GOODSID, GOODSCODE, GOODSNAME,
  20329. USERID, GROUTINGDAILYID, GROUTINGDAILYDETAILID, GROUTINGDATE,
  20330. GROUTINGLINEID, GROUTINGLINECODE, GROUTINGLINENAME, GMOULDTYPEID,
  20331. CANMANYTIMES, GROUTINGLINEDETAILID, GROUTINGMOULDCODE, MOULDCODE,
  20332. REMARKS, ACCOUNTID, VALUEFLAG, CREATETIME,
  20333. CREATEUSERID, UPDATETIME, :UpdateUserID,
  20334. ISREFIRE, GOODSLEVELID, GOODSLEVELTYPEID, 1,
  20335. GROUTINGUSERID, GROUTINGUSERCODE, GROUTINGNUM,
  20336. KILNID, KILNCODE, KILNNAME, KILNCARID,
  20337. KILNCARCODE, KILNCARNAME, KILNCARBATCHNO, KILNCARPOSITION,SpecialRepairFlag,:ProcedureID ,--FlowProcedureID
  20338. FlowProcedureTime,:ProcedureID,sysdate,:ProductionDataID,logoid, ISREWORKFLAG, SEMICHECKID
  20339. from TP_PM_InProductionTrash where barcode=:barcode ";
  20340. OracleParameter[] InProductparas = new OracleParameter[]{
  20341. new OracleParameter(":UpdateUserID",OracleDbType.Int32, workUserID,ParameterDirection.Input),
  20342. ////new OracleParameter(":GOODSLEVELID",OracleDbType.Int32,int.Parse(goodsLevelID),ParameterDirection.Input),
  20343. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  20344. new OracleParameter(":ProcedureID",OracleDbType.Int32,procedure.ProcedureID,ParameterDirection.Input),
  20345. new OracleParameter(":PROCEDUREMODEL",OracleDbType.Varchar2,procedure.ProcedureModel,ParameterDirection.Input),
  20346. new OracleParameter(":MODELTYPE",OracleDbType.Int32,procedure.ModelType,ParameterDirection.Input),
  20347. new OracleParameter(":ProductionDataID",OracleDbType.Int32,productionDataID,ParameterDirection.Input)
  20348. };
  20349. //第三步,删除回收站中的条码
  20350. string sqlDelInProductTrashString = "delete from TP_PM_InProductionTrash where barcode=:barcode ";
  20351. OracleParameter[] TrashProductparas = new OracleParameter[]{
  20352. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  20353. };
  20354. //第四步,更新注浆表干补标识
  20355. // string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  20356. // where GroutingDailyDetailID=(select GroutingDailyDetailID from TP_PM_GROUTINGPRODUCT
  20357. // where barcode=:barcode)";
  20358. ////// string sqlUpGroutingDeilString = @"update TP_PM_GroutingDailyDetail set SpecialRepairFlag=1
  20359. ////// where barcode=:barcode";
  20360. ////// OracleParameter[] GroutingProductparas = new OracleParameter[]{
  20361. ////// new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  20362. ////// };
  20363. // string sqlUpCompleteString = @"update TP_PM_FINISHEDPRODUCT set SpecialRepairFlag=1
  20364. // where barcode=:barcode ";
  20365. // OracleParameter[] CompleteProductparas = new OracleParameter[]{
  20366. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input)
  20367. // };
  20368. deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpdateLevelTypeString, ScrapProductparas);
  20369. deleteRow += oracleTrConn.ExecuteNonQuery(sqlInsInProdString, InProductparas);
  20370. deleteRow += oracleTrConn.ExecuteNonQuery(sqlDelInProductTrashString, TrashProductparas);
  20371. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpGroutingDeilString, GroutingProductparas);
  20372. //deleteRow += oracleTrConn.ExecuteNonQuery(sqlUpCompleteString, CompleteProductparas); //由于成品后,不能报损,所以这个执行去掉
  20373. // 失败
  20374. if (deleteRow == Constant.INT_IS_ZERO)
  20375. {
  20376. logoName = "";
  20377. logoCode = "";
  20378. groutingdate = "";
  20379. return string.Format(Messages.MSG_CMN_W001, "条码", "保存");
  20380. }
  20381. #endregion
  20382. //#region 第五步 添加生产者数据
  20383. //errMsg = AddProducer(oracleTrConn, accountDate, productionDataID, workUserID, workUserCode, sUserInfo);
  20384. //if (!string.IsNullOrEmpty(errMsg))
  20385. //{
  20386. // return errMsg;
  20387. //}
  20388. //#endregion
  20389. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码
  20390. sql = "select 1 from tp_pm_productiondatain where barcode=:barcode and valueflag=1";
  20391. OracleParameter[] Paras = new OracleParameter[] {
  20392. new OracleParameter(":barcode",OracleDbType.Varchar2,
  20393. barcode,ParameterDirection.Input)
  20394. };
  20395. DataSet ds = oracleTrConn.GetSqlResultToDs(sql, Paras);
  20396. if (ds.Tables[0].Rows.Count == 0)
  20397. {
  20398. // 2 生产数据恢复到在产生产数据
  20399. sql = @"insert into tp_pm_productiondatain
  20400. (
  20401. ProductionDataID,
  20402. BarCode,
  20403. CentralizedBatchNo,
  20404. ProductionLineID,
  20405. ProductionLineCode,
  20406. ProductionLineName,
  20407. ProcedureID,
  20408. ProcedureCode,
  20409. ProcedureName,
  20410. ProcedureModel,
  20411. ModelType,
  20412. PieceType,
  20413. IsReworked,
  20414. NodeType,
  20415. IsPublicBody,
  20416. IsReFire,
  20417. GoodsLevelID,
  20418. GoodsLevelTypeID,
  20419. SpecialRepairFlag,
  20420. OrganizationID,
  20421. GoodsID,
  20422. GoodsCode,
  20423. GoodsName,
  20424. UserID,
  20425. UserCode,
  20426. UserName,
  20427. ClassesSettingID,
  20428. KilnID,
  20429. KilnCode,
  20430. KilnName,
  20431. KilnCarID,
  20432. KilnCarCode,
  20433. KilnCarName,
  20434. KilnCarBatchNo,
  20435. KilnCarPosition,
  20436. ReworkProcedureID,
  20437. ReworkProcedureCode,
  20438. ReworkProcedureName,
  20439. GroutingDailyID,
  20440. GroutingDailyDetailID,
  20441. GroutingLineID,
  20442. GroutingLineCode,
  20443. GroutingLineName,
  20444. GMouldTypeID,
  20445. CanManyTimes,
  20446. GroutingLineDetailID,
  20447. GroutingDate,
  20448. GroutingMouldCode,
  20449. MouldCode,
  20450. GroutingUserID,
  20451. GroutingUserCode,
  20452. GroutingNum,
  20453. Remarks,
  20454. AccountDate,
  20455. SettlementFlag,
  20456. AccountID,
  20457. ValueFlag,
  20458. CreateTime,
  20459. CreateUserID,
  20460. UpdateTime,
  20461. UpdateUserID,
  20462. OPTimeStamp,
  20463. TriggerFlag,
  20464. logoid,
  20465. BackOutTime,BackOutUserID,BackOutUserCode
  20466. )
  20467. select
  20468. ProductionDataID,
  20469. BarCode,
  20470. CentralizedBatchNo,
  20471. ProductionLineID,
  20472. ProductionLineCode,
  20473. ProductionLineName,
  20474. ProcedureID,
  20475. ProcedureCode,
  20476. ProcedureName,
  20477. ProcedureModel,
  20478. ModelType,
  20479. PieceType,
  20480. IsReworked,
  20481. NodeType,
  20482. IsPublicBody,
  20483. IsReFire,
  20484. GoodsLevelID,
  20485. GoodsLevelTypeID,
  20486. SpecialRepairFlag,
  20487. OrganizationID,
  20488. GoodsID,
  20489. GoodsCode,
  20490. GoodsName,
  20491. UserID,
  20492. UserCode,
  20493. UserName,
  20494. ClassesSettingID,
  20495. KilnID,
  20496. KilnCode,
  20497. KilnName,
  20498. KilnCarID,
  20499. KilnCarCode,
  20500. KilnCarName,
  20501. KilnCarBatchNo,
  20502. KilnCarPosition,
  20503. ReworkProcedureID,
  20504. ReworkProcedureCode,
  20505. ReworkProcedureName,
  20506. GroutingDailyID,
  20507. GroutingDailyDetailID,
  20508. GroutingLineID,
  20509. GroutingLineCode,
  20510. GroutingLineName,
  20511. GMouldTypeID,
  20512. CanManyTimes,
  20513. GroutingLineDetailID,
  20514. GroutingDate,
  20515. GroutingMouldCode,
  20516. MouldCode,
  20517. GroutingUserID,
  20518. GroutingUserCode,
  20519. GroutingNum,
  20520. Remarks,
  20521. AccountDate,
  20522. SettlementFlag,
  20523. AccountID,
  20524. ValueFlag,
  20525. CreateTime,
  20526. CreateUserID,
  20527. UpdateTime,
  20528. UpdateUserID,
  20529. OPTimeStamp,
  20530. 1,
  20531. logoid,
  20532. BackOutTime,BackOutUserID,BackOutUserCode
  20533. from TP_PM_ProductionData where valueflag=1 and barcode=:barcode
  20534. ";
  20535. oracleTrConn.ExecuteNonQuery(sql, Paras);
  20536. }
  20537. //第五步,回添加生产数据 modify wangx 2015/07/20 新添加的代码 end
  20538. #endregion 数据处理
  20539. }
  20540. logoName = logoName_Temp;
  20541. logoCode = logoCode_Temp;
  20542. groutingdate = groutingdate_Temp;
  20543. return errMsg;
  20544. }
  20545. catch (Exception ex)
  20546. {
  20547. throw ex;
  20548. }
  20549. }
  20550. /// <summary>
  20551. /// 校验回收条码有效
  20552. /// </summary>
  20553. /// <param name="oracleTrConn">连接对象</param>
  20554. /// <param name="procedureID">工序ID</param>
  20555. /// <param name="barcode">条码</param>
  20556. /// <param name="goodsID">返回的产品ID</param>
  20557. /// <param name="goodsCode">返回的产品Code</param>
  20558. /// <param name="goodsName">返回的产品名称</param>
  20559. /// <param name="groutingUserID">返回的注浆者ID</param>
  20560. /// <returns>string</returns>
  20561. /// <remarks>
  20562. /// 王鑫 2017.7.20 新建
  20563. /// </remarks>
  20564. private static string CheckRecyclingFlagBarcode(IDBTransaction oracleTrConn,
  20565. int procedureID,
  20566. string barcode,
  20567. out int goodsID,
  20568. out string goodsCode,
  20569. out string goodsName,
  20570. out string groutingUserCode,
  20571. SUserInfo sUserInfo
  20572. )
  20573. {
  20574. try
  20575. {
  20576. //OracleParameter[] paras = new OracleParameter[]{
  20577. // new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  20578. // new OracleParameter("in_barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  20579. // new OracleParameter("out_errMsg",OracleDbType.Varchar2,2000,"",ParameterDirection.Output),
  20580. // new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  20581. // new OracleParameter("out_goodsCode",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  20582. // new OracleParameter("out_goodsName",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  20583. // new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  20584. //};
  20585. //oracleTrConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras);
  20586. //if (!"null".Equals(paras[3].Value + ""))
  20587. //{
  20588. // goodsID = Convert.ToInt32(paras[3].Value + "");
  20589. //}
  20590. //else
  20591. //{
  20592. // goodsID = 0;
  20593. //}
  20594. //goodsCode = paras[4].Value + "";
  20595. //goodsName = paras[5].Value + "";
  20596. //if (!"null".Equals(paras[6].Value + ""))
  20597. //{
  20598. // groutingUserCode = paras[6].Value + "";
  20599. //}
  20600. //else
  20601. //{
  20602. // groutingUserCode = null;
  20603. //}
  20604. //if ("null".Equals(paras[2].Value + ""))
  20605. //{
  20606. // return null;
  20607. //}
  20608. //return paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  20609. string errorMessage = string.Empty;
  20610. goodsID = 0; goodsCode = string.Empty; goodsName = string.Empty; groutingUserCode = string.Empty;
  20611. string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting
  20612. where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')";
  20613. OracleParameter[] paras = new OracleParameter[]{
  20614. new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  20615. };
  20616. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20617. #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收)
  20618. int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0;
  20619. if (ds != null && ds.Tables[0].Rows.Count > 0)
  20620. {
  20621. foreach (DataRow r in ds.Tables[0].Rows)
  20622. {
  20623. if (r["settingcode"].ToString() == "S_PM_017")
  20624. {
  20625. S_PM_017_Value = Convert.ToInt32(r["settingvalue"]);
  20626. }
  20627. else if (r["settingcode"].ToString() == "S_PM_018")
  20628. {
  20629. S_PM_018_Value = Convert.ToInt32(r["settingvalue"]);
  20630. }
  20631. else if (r["settingcode"].ToString() == "S_PM_019")
  20632. {
  20633. S_PM_019_Value = Convert.ToInt32(r["settingvalue"]);
  20634. }
  20635. else if (r["settingcode"].ToString() == "S_PM_020")
  20636. {
  20637. S_PM_020_Value = Convert.ToInt32(r["settingvalue"]);
  20638. }
  20639. }
  20640. }
  20641. #endregion
  20642. #region 第1步 查当前工序在系统是否存在
  20643. sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1";
  20644. paras = new OracleParameter[]{
  20645. new OracleParameter(":procedureid",procedureID),
  20646. };
  20647. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20648. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20649. {
  20650. errorMessage = "当前工序在系统中不存在";
  20651. return errorMessage;
  20652. }
  20653. #endregion
  20654. #region 第2步 查产品是否有效
  20655. sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag
  20656. from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 ";
  20657. paras = new OracleParameter[]{
  20658. new OracleParameter(":barCode",barcode),
  20659. };
  20660. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20661. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20662. {
  20663. // 是否被替换
  20664. string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode";
  20665. OracleParameter[] paras2 = new OracleParameter[]{
  20666. new OracleParameter(":barCode",barcode) };
  20667. DataSet ds2 = oracleTrConn.GetSqlResultToDs(sql, paras2);
  20668. if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0)
  20669. {
  20670. // 无效条件
  20671. errorMessage = "无效条码[" + barcode + "]";
  20672. }
  20673. else
  20674. {
  20675. errorMessage = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换";
  20676. }
  20677. }
  20678. else
  20679. {
  20680. if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1)
  20681. {
  20682. errorMessage = "条码[" + barcode + "]未交坯,不能回收";
  20683. }
  20684. else
  20685. {
  20686. goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  20687. goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString();
  20688. goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  20689. groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString();
  20690. }
  20691. }
  20692. if (!string.IsNullOrEmpty(errorMessage))
  20693. {
  20694. return errorMessage;
  20695. }
  20696. #endregion
  20697. #region 第3步 查产品是否在当前工序配置
  20698. sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  20699. paras = new OracleParameter[]{
  20700. new OracleParameter(":GoodsID",goodsID),
  20701. new OracleParameter(":ProcedureID",procedureID),
  20702. };
  20703. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20704. if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1)
  20705. {
  20706. errorMessage =
  20707. @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置";
  20708. }
  20709. if (!string.IsNullOrEmpty(errorMessage))
  20710. {
  20711. return errorMessage;
  20712. }
  20713. #endregion
  20714. #region 第4步,校验在产产品不能回收
  20715. string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode";
  20716. OracleParameter[] parasNew = new OracleParameter[]{
  20717. new OracleParameter(":barcode",barcode) };
  20718. DataSet dsNew = oracleTrConn.GetSqlResultToDs(sqlString2, parasNew);
  20719. if (dsNew != null && dsNew.Tables[0].Rows.Count > 0)
  20720. {
  20721. if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1)
  20722. {
  20723. errorMessage = "报损待审产品不能回收";
  20724. }
  20725. // chenxy 2019-10-02 半检返修 IsReworkFlag=2
  20726. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1)
  20727. {
  20728. errorMessage = "半检返工中不能回收";
  20729. }
  20730. else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 2)
  20731. {
  20732. errorMessage = "半检返工中不能回收";
  20733. }
  20734. else
  20735. {
  20736. errorMessage = "在产产品不能回收";
  20737. }
  20738. }
  20739. if (!string.IsNullOrEmpty(errorMessage))
  20740. {
  20741. return errorMessage;
  20742. }
  20743. #endregion
  20744. #region 第4步,校验报损表数据是否可以回收
  20745. sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode
  20746. and ValueFlag=1 and CreateTime=
  20747. (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode
  20748. and ValueFlag=1 )";
  20749. paras = new OracleParameter[]{
  20750. new OracleParameter(":barcode",barcode),
  20751. };
  20752. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  20753. if (ds == null || ds.Tables[0].Rows.Count == 0)
  20754. {
  20755. errorMessage = "不存在回收数据,不能回收";
  20756. }
  20757. else
  20758. {
  20759. if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 &&
  20760. Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 &&
  20761. Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0)
  20762. {
  20763. // 可回收
  20764. string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode";
  20765. OracleParameter[] parasNewt = new OracleParameter[]{
  20766. new OracleParameter(":barcode",barcode) };
  20767. DataSet dsNewt = oracleTrConn.GetSqlResultToDs(sqlString3, parasNewt);
  20768. if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0)
  20769. {
  20770. errorMessage = "报损数据被清除,不能回收";
  20771. }
  20772. }
  20773. else
  20774. {
  20775. errorMessage = "不存在回收数据,不能回收";
  20776. }
  20777. if (!string.IsNullOrEmpty(errorMessage))
  20778. {
  20779. if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0)
  20780. {
  20781. // 损坯
  20782. if (S_PM_017_Value == 0)
  20783. {
  20784. errorMessage = "系统参数产品回收-报损未启用";
  20785. }
  20786. }
  20787. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1)
  20788. {
  20789. // 成检
  20790. if (S_PM_020_Value == 0)
  20791. {
  20792. errorMessage = "系统参数产品回收-次品未启用";
  20793. }
  20794. }
  20795. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2)
  20796. {
  20797. // 半检
  20798. if (S_PM_018_Value == 0)
  20799. {
  20800. errorMessage = "系统参数产品回收-半检不合格未启用";
  20801. }
  20802. }
  20803. else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3)
  20804. {
  20805. // 复检
  20806. if (S_PM_019_Value == 0)
  20807. {
  20808. errorMessage = "系统参数产品回收-复检不合格未启用";
  20809. }
  20810. }
  20811. }
  20812. }
  20813. #endregion
  20814. return errorMessage;
  20815. }
  20816. catch (Exception ex)
  20817. {
  20818. throw ex;
  20819. }
  20820. }
  20821. /// <summary>
  20822. /// 按条码判定是否为首节点
  20823. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  20824. /// "0":非首节点,"1":首节点
  20825. /// </summary>
  20826. /// <param name="oracleTrConn">数据连接</param>
  20827. /// <param name="barCode">条码</param>
  20828. /// <returns>是否首节点</returns>
  20829. /// xuwei add 2019-09-23
  20830. //public static bool IsNodeBegin(IDBTransaction oracleTrConn, string barCode)
  20831. //{
  20832. // bool result = false;
  20833. // try
  20834. // {
  20835. // if (barCode != "")
  20836. // {
  20837. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  20838. // from TP_PM_GroutingDailyDetail
  20839. // where BARCODE = {barCode}");
  20840. // if (flag == "") throw new Exception("条码无效!请检查!");
  20841. // result = flag == "0" ? true : false;
  20842. // }
  20843. // }
  20844. // catch (Exception ex)
  20845. // {
  20846. // throw ex;
  20847. // }
  20848. // return result;
  20849. //}
  20850. //public static bool IsNodeBegin(IDBConnection oracleTrConn, string barCode)
  20851. //{
  20852. // bool result = false;
  20853. // try
  20854. // {
  20855. // if (barCode != "")
  20856. // {
  20857. // string flag = oracleTrConn.GetSqlResultToStr($@"select BEGINNINGFLAG as flag
  20858. // from TP_PM_GroutingDailyDetail
  20859. // where BARCODE = {barCode}");
  20860. // if (flag == "") throw new Exception("条码无效!请检查!");
  20861. // result = flag == "0" ? true : false;
  20862. // }
  20863. // }
  20864. // catch (Exception ex)
  20865. // {
  20866. // throw ex;
  20867. // }
  20868. // return result;
  20869. //}
  20870. /// <summary>
  20871. /// 按条码判定是否为首节点(调整为复用方法)
  20872. /// 从TP_PM_GroutingDailyDetail表中的BEGINNINGFLAG字段判定是否为首节点
  20873. /// "0":非首节点,"1":首节点,"-1":条码无效
  20874. /// </summary>
  20875. /// <param name="oracleTrConn">数据连接</param>
  20876. /// <param name="barCode">条码</param>
  20877. /// <returns>是否首节点</returns>
  20878. /// xuwei add 2019-09-26
  20879. public static int IsNodeBegin<T>(T oracleTrConn, string barCode)
  20880. {
  20881. Type t = typeof(T);
  20882. int result = -1;
  20883. try
  20884. {
  20885. if (barCode != "")
  20886. {
  20887. OracleParameter[] parasNew = new OracleParameter[]{
  20888. new OracleParameter(":barcode",barCode) };
  20889. string flag = t.GetMethod("GetSqlResultToStr")
  20890. .Invoke(oracleTrConn, new object[] { $@"select BEGINNINGFLAG as flag
  20891. from TP_PM_GroutingDailyDetail
  20892. where BARCODE = :barcode", parasNew }).ToString();
  20893. //if (flag == "") throw new Exception("无效条码,请检查!");
  20894. //xuwei fix 2019-09-26 找不到和非首节点均返回0
  20895. // 返修指定首节点时,判断错误
  20896. if (string.IsNullOrWhiteSpace(flag))
  20897. {
  20898. return -1;
  20899. }
  20900. result = (flag == "0" ? 1 : 0);
  20901. }
  20902. }
  20903. catch (Exception ex)
  20904. {
  20905. throw ex;
  20906. }
  20907. return result;
  20908. }
  20909. #region 保存用到的
  20910. /// <summary>
  20911. /// 校验条码是否允许撤销,如果不允许提示错误消息
  20912. /// </summary>
  20913. /// <param name="orgTime">原时间</param>
  20914. /// <param name="days">允许撤销天数</param>
  20915. /// <param name="settingCode">设置code,用于返回不同错误消息</param>
  20916. /// <param name="sUserInfo"></param>
  20917. /// <returns></returns>
  20918. public static ServiceResultEntity BarcodeAllowCancel(DateTime orgTime, int days, string settingCode, SUserInfo sUserInfo)
  20919. {
  20920. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  20921. try
  20922. {
  20923. ServiceResultEntity resultEntity = new ServiceResultEntity();
  20924. orgTime = orgTime.Date; // 取日期部分
  20925. DateTime currentTime = DateTime.Now.Date;
  20926. // 参数验证用服务端当前设置
  20927. string sqlString = "SELECT sst.settingvalue\n" +
  20928. " FROM tp_mst_systemsetting sst\n" +
  20929. " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" +
  20930. " AND sst.settingcode = '" + settingCode + "'";
  20931. string strValue = oracleConn.GetSqlResultToStr(sqlString);
  20932. int pDays = 0;
  20933. if (int.TryParse(strValue, out pDays))
  20934. {
  20935. days = pDays;
  20936. }
  20937. if (days == 0)
  20938. {
  20939. // 表示可以撤销
  20940. resultEntity.Result = 1;
  20941. return resultEntity;
  20942. }
  20943. if (orgTime > currentTime.AddDays(-days))
  20944. {
  20945. // 表示可以撤销
  20946. resultEntity.Result = 1;
  20947. }
  20948. else
  20949. {
  20950. resultEntity.Result = -1;
  20951. // 提示不同错误消息
  20952. if (settingCode.Equals(Constant.SettingType.S_PM_002.ToString()))
  20953. {
  20954. //交坯限制天数
  20955. resultEntity.Message = string.Format(Messages.MSG_S_PM_002, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20956. }
  20957. else if (settingCode.Equals(Constant.SettingType.S_PM_003.ToString()))
  20958. {
  20959. //交坯撤销限制天数
  20960. resultEntity.Message = string.Format(Messages.MSG_S_PM_003, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20961. }
  20962. else if (settingCode.Equals(Constant.SettingType.S_PM_004.ToString()))
  20963. {
  20964. //计件撤销限制天数
  20965. resultEntity.Message = string.Format(Messages.MSG_S_PM_004, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20966. }
  20967. else if (settingCode.Equals(Constant.SettingType.S_PM_005.ToString()))
  20968. {
  20969. //成品撤销限制天数
  20970. resultEntity.Message = string.Format(Messages.MSG_S_PM_005, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20971. }
  20972. else if (settingCode.Equals(Constant.SettingType.S_PM_006.ToString()))
  20973. {
  20974. //损坯撤销限制天数
  20975. resultEntity.Message = string.Format(Messages.MSG_S_PM_006, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20976. }
  20977. else if (settingCode.Equals(Constant.SettingType.S_PM_007.ToString()))
  20978. {
  20979. //半检登记改判限制天数
  20980. resultEntity.Message = string.Format(Messages.MSG_S_PM_007, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20981. }
  20982. else if (settingCode.Equals(Constant.SettingType.S_PM_008.ToString()))
  20983. {
  20984. //半检复检撤销限制天数
  20985. resultEntity.Message = string.Format(Messages.MSG_S_PM_008, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20986. }
  20987. else if (settingCode.Equals(Constant.SettingType.S_PM_009.ToString()))
  20988. {
  20989. //成检登记改判限制天数
  20990. resultEntity.Message = string.Format(Messages.MSG_S_PM_009, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd"));
  20991. }
  20992. }
  20993. return resultEntity;
  20994. }
  20995. catch (Exception ex)
  20996. {
  20997. throw ex;
  20998. }
  20999. finally
  21000. {
  21001. if (oracleConn.ConnState == ConnectionState.Open)
  21002. {
  21003. oracleConn.Close();
  21004. }
  21005. }
  21006. }
  21007. /// <summary>
  21008. /// 构建 计数/检验时返回的信息
  21009. /// </summary>
  21010. /// <returns></returns>
  21011. public static DataTable CreateBarCodeResultTable()
  21012. {
  21013. // 注意:更新表字段时,一定把后续引用的字段全部更新一遍
  21014. DataTable barCodeResultTable = new DataTable("BarCodeTable");
  21015. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_errMsg.ToString());
  21016. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_goodsID.ToString());
  21017. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_goodsCode.ToString());
  21018. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_goodsName.ToString());
  21019. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString());
  21020. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_groutingUserName.ToString());
  21021. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_groutingUserID.ToString());
  21022. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_groutingNum.ToString());
  21023. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_mouldCode.ToString());
  21024. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_ispublicbody.ToString());
  21025. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString());
  21026. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_groutingdate.ToString());
  21027. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString());
  21028. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_isReFire.ToString());
  21029. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_missFlag.ToString());
  21030. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_logoID.ToString());
  21031. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_logoCode.ToString());
  21032. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_logoName.ToString());
  21033. //xuwei add 2020-03-04 添加釉料属性
  21034. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_glazeName.ToString());
  21035. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString());
  21036. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_barcode.ToString());
  21037. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString());
  21038. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString());
  21039. //漏气标识 内漏标识 xuwei add 2020-06-11
  21040. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_LeakFlag1.ToString());
  21041. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_LeakFlag2.ToString());
  21042. //增加重烧名称等相关列 fubin add 2020-06-30
  21043. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_LeakFlag3.ToString());
  21044. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_specialRepairFlagName.ToString());
  21045. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_isReFireName.ToString());
  21046. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_LeakFlag1Name.ToString());
  21047. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_LeakFlag2Name.ToString());
  21048. barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_LeakFlag3Name.ToString());
  21049. // 包装装板用
  21050. barCodeResultTable.Columns.Add("GOODSMODELforCheck");
  21051. // 最大装板数量
  21052. barCodeResultTable.Columns.Add("PlateLimitNum", typeof(int));
  21053. //所在工序
  21054. barCodeResultTable.Columns.Add("ProcedureName", typeof(string));
  21055. barCodeResultTable.Columns.Add("FinishedCheckProcedureid", typeof(int));
  21056. barCodeResultTable.Columns.Add("procedureID", typeof(int));
  21057. barCodeResultTable.Columns.Add("DefectFlagID", typeof(int));
  21058. return barCodeResultTable;
  21059. }
  21060. /// <summary>
  21061. /// 检验条码(除了交坯单点检验)
  21062. /// </summary>
  21063. /// <param name="procedureID">工序ID</param>
  21064. /// <param name="barcode">产品条码</param>
  21065. /// <returns>DataSet</returns>
  21066. public static DataSet CheckBarcodeSinglePoint(int procedureID, string barcode, SUserInfo sUserInfo)
  21067. {
  21068. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  21069. try
  21070. {
  21071. oracleConn.Open();
  21072. DataTable dtBarCode = CreateBarCodeResultTable();
  21073. DataSet returnDs = new DataSet();
  21074. DataRow dr = dtBarCode.NewRow();
  21075. string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo);
  21076. if (sqlBarcode == string.Empty)
  21077. {
  21078. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码";
  21079. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  21080. dtBarCode.Rows.Add(dr);
  21081. returnDs.Tables.Add(dtBarCode);
  21082. return returnDs;
  21083. }
  21084. else
  21085. {
  21086. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode;
  21087. barcode = sqlBarcode;
  21088. }
  21089. OracleParameter[] paras = new OracleParameter[]{
  21090. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  21091. new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  21092. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  21093. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  21094. new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  21095. new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  21096. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  21097. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  21098. };
  21099. oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  21100. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  21101. = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  21102. int missFlag = 0;
  21103. if (paras[7].Value != null && paras[7].Value.ToString() == "1")
  21104. {
  21105. missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  21106. }
  21107. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  21108. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  21109. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  21110. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  21111. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag;
  21112. if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息
  21113. {
  21114. // string sqlString = @"select
  21115. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  21116. // tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  21117. // tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  21118. // tp_pm_groutingdailydetail.ispublicbody,
  21119. // tp_pm_groutingdailydetail.Groutingdate,
  21120. // tp_pm_groutingdailydetail.SpecialRepairFlag
  21121. // from tp_pm_groutingdailydetail
  21122. // where tp_pm_groutingdailydetail.GroutingDailyDetailID in (select GroutingDailyDetailID from TP_PM_UsedBarCode where barcode=:barcode)";
  21123. string sqlString = "SELECT PI.GROUTINGUSERCODE,\n" +
  21124. " PI.GROUTINGNUM,\n" +
  21125. " PI.GROUTINGMOULDCODE AS MOULDCODE,\n" +
  21126. " PI.ISPUBLICBODY,\n" +
  21127. " PI.GROUTINGDATE,\n" +
  21128. " PI.SPECIALREPAIRFLAG,\n" +
  21129. " L.LOGOID,\n" +
  21130. " L.LOGOCODE,\n" +
  21131. " L.LOGONAME,\n" +
  21132. //" GOODS.WATERLABELCODE\n" +
  21133. " nvl((select gls.WATERLABELCODE\n" +
  21134. " from TP_MST_GOODSLOGOSAP gls\n" +
  21135. " where gls.goodsid = PI.goodsid\n" +
  21136. " and gls.logoid = PI.LOGOID)\n" +
  21137. " ,GOODS.WATERLABELCODE) WATERLABELCODE\n" +
  21138. " FROM TP_PM_INPRODUCTION PI\n" +
  21139. " LEFT JOIN TP_MST_LOGO L\n" +
  21140. " ON PI.LOGOID = L.LOGOID\n" +
  21141. " LEFT JOIN TP_MST_GOODS GOODS\n" +
  21142. " ON PI.GOODSID = GOODS.GOODSID\n" +
  21143. " WHERE PI.BARCODE = :BARCODE";
  21144. paras = new OracleParameter[]
  21145. {
  21146. new OracleParameter(":BARCODE",barcode)
  21147. };
  21148. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  21149. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21150. {
  21151. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GROUTINGUSERCODE"].ToString();
  21152. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GROUTINGNUM"].ToString();
  21153. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MOULDCODE"].ToString();
  21154. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ISPUBLICBODY"].ToString();
  21155. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  21156. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["GROUTINGDATE"].ToString();
  21157. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SPECIALREPAIRFLAG"].ToString();
  21158. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  21159. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["LOGOID"].ToString();
  21160. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["LOGOCODE"].ToString();
  21161. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["LOGONAME"].ToString();
  21162. dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = ds.Tables[0].Rows[0]["WATERLABELCODE"].ToString();
  21163. // 获取编码检验标识
  21164. sqlString = "SELECT CODECHECKFLAG FROM TP_PC_PROCEDURE WHERE PROCEDUREID = :PROCEDUREID";
  21165. paras = new OracleParameter[]
  21166. {
  21167. new OracleParameter(":PROCEDUREID",procedureID)
  21168. };
  21169. DataTable dt = oracleConn.GetSqlResultToDt(sqlString, paras);
  21170. if (dt != null && dt.Rows.Count > 0)
  21171. {
  21172. dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dt.Rows[0]["CODECHECKFLAG"] + "";
  21173. }
  21174. }
  21175. }
  21176. dtBarCode.Rows.Add(dr);
  21177. returnDs.Tables.Add(dtBarCode);
  21178. return returnDs;
  21179. }
  21180. catch (Exception ex)
  21181. {
  21182. throw ex;
  21183. }
  21184. finally
  21185. {
  21186. if (oracleConn.ConnState == ConnectionState.Open)
  21187. {
  21188. oracleConn.Close();
  21189. }
  21190. }
  21191. }
  21192. /// <summary>
  21193. /// 交坯验证条码
  21194. /// </summary>
  21195. /// <param name="procedureID">工序ID</param>
  21196. /// <param name="barcode">产品条码</param>
  21197. /// <returns>DataSet</returns>
  21198. public static DataSet CheckBarcodeDeliverMudSinglePoint(int procedureID, string barcode, SUserInfo sUserInfo, ref int? GroutingDailyDetailID)
  21199. {
  21200. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  21201. try
  21202. {
  21203. oracleConn.Open();
  21204. string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode";
  21205. OracleParameter[] paras = new OracleParameter[]{
  21206. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  21207. };
  21208. DataSet ds = oracleConn.GetSqlResultToDs(sql, paras);
  21209. DataTable dtBarCode = CreateBarCodeResultTable();
  21210. DataSet returnDs = new DataSet();
  21211. DataRow dr = dtBarCode.NewRow();
  21212. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = barcode;
  21213. if (ds != null && ds.Tables[0].Rows.Count == 0)
  21214. {
  21215. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]";
  21216. }
  21217. else
  21218. {
  21219. //不等于空的时候
  21220. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  21221. {
  21222. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'";
  21223. string newbarcode = oracleConn.GetSqlResultToStr(sql);
  21224. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码已被替换,新条码为" + newbarcode;
  21225. }
  21226. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  21227. {
  21228. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已成型报损";
  21229. }
  21230. //
  21231. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  21232. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  21233. {
  21234. //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已交坯";
  21235. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已在产";
  21236. }
  21237. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "1")
  21238. {
  21239. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "";
  21240. // string sqlString = @"select
  21241. // TP_PM_GroutingDailyDetail.GoodsID,
  21242. // TP_PM_GroutingDailyDetail.GoodsCode,
  21243. // TP_PM_GroutingDailyDetail.GoodsName,
  21244. // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  21245. // tp_pm_groutingdailydetail.groutingcount as GroutingNum,
  21246. // tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode,
  21247. // tp_pm_groutingdailydetail.ispublicbody,
  21248. // tp_pm_groutingdailydetail.Groutingdate,
  21249. // tp_pm_groutingdailydetail.SpecialRepairFlag
  21250. // from TP_PM_USEDBARCODE
  21251. // left join
  21252. // tp_pm_groutingdailydetail
  21253. // on TP_PM_USEDBARCODE.groutingdailydetailid=tp_pm_groutingdailydetail.groutingdailydetailid
  21254. // where tp_pm_groutingdailydetail.BarCode=:barcode";
  21255. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString());
  21256. string sqlString = @"select
  21257. tp_pm_GroutingDailyDetail.groutingdailydetailid,
  21258. tp_pm_GroutingDailyDetail.GoodsID,
  21259. tp_pm_GroutingDailyDetail.GoodsCode,
  21260. tp_pm_GroutingDailyDetail.GoodsName,
  21261. tp_pm_GroutingDailyDetail.UserCode as GroutingUserCode,
  21262. tp_pm_GroutingDailyDetail.groutingcount as GroutingNum,
  21263. tp_pm_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  21264. tp_pm_GroutingDailyDetail.ispublicbody,
  21265. tp_pm_GroutingDailyDetail.Groutingdate,
  21266. tp_pm_GroutingDailyDetail.SpecialRepairFlag,
  21267. tp_mst_logo.logoid,
  21268. tp_mst_logo.logocode,
  21269. tp_mst_logo.logoname
  21270. from
  21271. tp_pm_GroutingDailyDetail
  21272. left join tp_mst_logo
  21273. on tp_mst_logo.logoid=tp_pm_GroutingDailyDetail.logoid
  21274. where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid";
  21275. //where tp_pm_GroutingDailyDetail.barcode=:barcode";
  21276. paras = new OracleParameter[]{
  21277. new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  21278. //new OracleParameter("barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  21279. };
  21280. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  21281. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21282. {
  21283. GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString());
  21284. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  21285. paras = new OracleParameter[]{
  21286. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  21287. new OracleParameter(":ProcedureID",procedureID),
  21288. };
  21289. DataSet dsGoods = oracleConn.GetSqlResultToDs(sqlExistGoods, paras);
  21290. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  21291. {
  21292. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode +
  21293. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  21294. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  21295. }
  21296. else
  21297. {
  21298. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString();
  21299. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  21300. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  21301. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  21302. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  21303. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  21304. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  21305. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  21306. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  21307. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  21308. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  21309. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  21310. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  21311. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString();
  21312. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString();
  21313. }
  21314. }
  21315. }
  21316. }
  21317. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  21318. dtBarCode.Rows.Add(dr);
  21319. returnDs.Tables.Add(dtBarCode);
  21320. return returnDs;
  21321. }
  21322. catch (Exception ex)
  21323. {
  21324. throw ex;
  21325. }
  21326. finally
  21327. {
  21328. if (oracleConn.ConnState == ConnectionState.Open)
  21329. {
  21330. oracleConn.Close();
  21331. }
  21332. }
  21333. }
  21334. /// <summary>
  21335. /// 根据条码及工序判断是否漏扫
  21336. /// </summary>
  21337. /// <param name="barcode">产品条码</param>
  21338. /// <param name="produceid">校验工序ID</param>
  21339. /// <param name="sUserInfo">用户基本信息</param>
  21340. /// <returns>DataSet</returns>
  21341. public static string GetConvertBarCode(IDBConnection oracleTrConn, string barcode, int produceid, SUserInfo sUserInfo)
  21342. {
  21343. try
  21344. {
  21345. #region 查出工序条码类型 wangx 2017-3-13
  21346. string sqlString = "select BarCodeFlag from TP_PC_Procedure where ProcedureID=:ProcedureID";
  21347. OracleParameter[] paras2 = new OracleParameter[]{
  21348. new OracleParameter(":ProcedureID",produceid),
  21349. };
  21350. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras2);
  21351. int BarCodeFlag = 0;
  21352. string returnBarcode = string.Empty;//返回条码
  21353. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21354. {
  21355. BarCodeFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["BarCodeFlag"]);
  21356. if (BarCodeFlag > 0)
  21357. {
  21358. //sqlString = @"select FUN_CMN_GetBarCode(:barcode,:procedureid,:accountid) From DUAL";
  21359. sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL";
  21360. OracleParameter[] paras = new OracleParameter[]{
  21361. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21362. //new OracleParameter(":procedureid",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21363. new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  21364. };
  21365. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21366. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21367. {
  21368. returnBarcode = ds.Tables[0].Rows[0][0].ToString();
  21369. }
  21370. return returnBarcode;
  21371. }
  21372. else
  21373. {
  21374. returnBarcode = barcode;
  21375. }
  21376. }
  21377. #endregion
  21378. return returnBarcode;
  21379. }
  21380. catch (Exception ex)
  21381. {
  21382. throw ex;
  21383. }
  21384. }
  21385. /// <summary>
  21386. /// 根据条码及工序判断是否漏扫
  21387. /// </summary>
  21388. /// <param name="barcode">产品条码</param>
  21389. /// <param name="produceid">校验工序ID</param>
  21390. /// <param name="sUserInfo">用户基本信息</param>
  21391. /// <returns>DataSet</returns>
  21392. public static int AddBarCodeMissing(IDBConnection oracleTrConn, string barcode, int produceid, SUserInfo sUserInfo)
  21393. {
  21394. try
  21395. {
  21396. #region 查询产成品
  21397. string sqlString = @"select TP_PM_InProduction.FlowProcedureID,NVL(TP_PM_InProduction.ReworkProcedureID,0) as ReworkProcedureID,
  21398. TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName,
  21399. TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_MST_Goods.GoodsTypeID,TP_PM_InProduction.isrefire
  21400. from TP_PM_InProduction left join TP_PC_Procedure
  21401. on TP_PM_InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID
  21402. left join TP_MST_Goods on TP_PM_InProduction.GoodsID=TP_MST_Goods.GoodsID
  21403. where TP_PM_InProduction.BarCode =:barCode";
  21404. OracleParameter[] paras = new OracleParameter[]{
  21405. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21406. };
  21407. DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21408. #endregion
  21409. int AddBarCodeMissingID = 0;//新增漏扫表的ID
  21410. if (ds != null && ds.Tables[0].Rows.Count > 0) //只有是在产的,才可以去进行漏扫
  21411. {
  21412. #region 获取此条码为在产产品
  21413. int CompleteProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["FlowProcedureID"]);//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName)
  21414. string CompleteProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  21415. string CompleteProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  21416. int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  21417. string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  21418. string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  21419. int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]);
  21420. int ReworkProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ReworkProcedureID"]);//返工工序
  21421. int isrefire = Convert.ToInt32(ds.Tables[0].Rows[0]["isrefire"]);//重烧标记
  21422. #endregion
  21423. // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 begin
  21424. // 漏扫序号大的可到达工序与检验工序不在一条路径上时,要验证下一个可到达工序。
  21425. // 即与检验工序在一条路径上的漏扫序号最大可到达工序为漏扫工序。
  21426. #region 获取漏扫工序信息
  21427. if (ReworkProcedureID == 0)
  21428. {
  21429. sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods
  21430. left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID
  21431. where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode)
  21432. and TP_PC_ProcedureGoods.ProcedureID in(
  21433. select pro.ProcedureID
  21434. from TP_PC_ProcedureFlow flow
  21435. inner join TP_PC_Procedure pro
  21436. on flow.arriveprocedureid = pro.procedureid
  21437. inner join TP_PC_ProductionLine line
  21438. on pro.ProductionLineID = line.ProductionLineID
  21439. where flow.ProcedureID =:procedureID
  21440. and flow.FlowFlag = 2 and pro.valueflag = '1'
  21441. -- 非必须工序,不记漏扫
  21442. and pro.MUSTFLAG = '1'
  21443. ) " +
  21444. //" and exists ( " +
  21445. // "select 1 from " +
  21446. // "(" +
  21447. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  21448. // "( " +
  21449. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  21450. // ") " +
  21451. // //" start with procedureid=:missProcedureid" +
  21452. // " start with procedureid=TP_PC_ProcedureGoods.ProcedureID" +
  21453. // " connect by nocycle procedureid=prior arriveprocedureid" +
  21454. // ") where arriveprocedureid=:judgeProcedureid " +
  21455. // " ) " +
  21456. //" order by ProcedureID";
  21457. " order by MissPriority DESC, displayno --ProcedureCode DESC";
  21458. paras = new OracleParameter[]{
  21459. new OracleParameter(":procedureID",OracleDbType.Int32,CompleteProcedureID,ParameterDirection.Input),
  21460. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21461. //new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input),
  21462. //new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  21463. };
  21464. }
  21465. else
  21466. {
  21467. sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID";
  21468. paras = new OracleParameter[]{
  21469. new OracleParameter(":procedureID",OracleDbType.Int32,ReworkProcedureID,ParameterDirection.Input),
  21470. };
  21471. }
  21472. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21473. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  21474. {
  21475. return AddBarCodeMissingID;
  21476. }
  21477. //int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]);
  21478. //string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  21479. //string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  21480. int missprocedureid = -1;
  21481. string missprocedurecode = "";
  21482. string missprocedurename = "";
  21483. #endregion
  21484. #region 增加判断校验工序必须是在漏扫工序的后面工序
  21485. //sqlString = "select * from " +
  21486. // "(" +
  21487. // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  21488. // "( " +
  21489. // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  21490. // ")" +
  21491. // " start with procedureid=:missProcedureid" +
  21492. // " connect by nocycle procedureid=prior arriveprocedureid" +
  21493. // ") where arriveprocedureid=:judgeProcedureid ";
  21494. //paras = new OracleParameter[]{
  21495. // new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input),
  21496. // new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  21497. // };
  21498. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21499. //if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  21500. //{
  21501. // return AddBarCodeMissingID;
  21502. //}
  21503. foreach (DataRow item in ds.Tables[0].Rows)
  21504. {
  21505. sqlString = "select * from " +
  21506. "(" +
  21507. "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " +
  21508. "( " +
  21509. " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " +
  21510. ")" +
  21511. " start with procedureid=:missProcedureid" +
  21512. " connect by nocycle procedureid=prior arriveprocedureid" +
  21513. ") where arriveprocedureid=:judgeProcedureid ";
  21514. paras = new OracleParameter[]{
  21515. new OracleParameter(":missProcedureid",OracleDbType.Int32,Convert.ToInt32(item["ProcedureID"]),ParameterDirection.Input),
  21516. new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input),
  21517. };
  21518. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21519. if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
  21520. {
  21521. continue;
  21522. }
  21523. missprocedureid = Convert.ToInt32(item["ProcedureID"]);
  21524. missprocedurecode = item["ProcedureCode"].ToString();
  21525. missprocedurename = item["ProcedureName"].ToString();
  21526. break;
  21527. }
  21528. if (missprocedureid == -1)
  21529. {
  21530. return AddBarCodeMissingID;
  21531. }
  21532. #endregion
  21533. // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 end
  21534. //sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID";
  21535. //paras = new OracleParameter[]{
  21536. // new OracleParameter(":procedureID",OracleDbType.Int32,produceid,ParameterDirection.Input),
  21537. // };
  21538. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21539. //int nodetype = Convert.ToInt32(ds.Tables[0].Rows[0]["NodeType"]);//获取当前工序的类型,为了判断如果成检设置重燃,未走重燃,直接包装,还有就是不记录以前工序的值
  21540. //if ((produceid > missprocedureid) || (ReworkProcedureID > 0 && nodetype == 3) || (isrefire == 6))//3 为结束节点,6为重烧
  21541. // 前面已经判断过 校验工序在漏扫工序(应该是当前工序吧)后 by chenxy 2020-03-29 begin
  21542. //sqlString = "select 1 from TP_PM_ProductionDataIn where barcode=:barcode and ProcedureID=:ProcedureID and ValueFlag=1";
  21543. //paras = new OracleParameter[]{
  21544. // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21545. // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21546. // };
  21547. //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21548. //// if (produceid > missprocedureid)
  21549. //if (ds != null && ds.Tables[0].Rows.Count == 0) // 未走过该工序
  21550. // 前面已经判断过 校验工序在漏扫工序(应该是当前工序吧)后 by chenxy 2020-03-29 end
  21551. {
  21552. #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入
  21553. sqlString = @"select missid from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID=:ProcedureID";
  21554. paras = new OracleParameter[]{
  21555. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21556. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  21557. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21558. };
  21559. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21560. if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入
  21561. {
  21562. int OrganizationID = 0;
  21563. string OrganizationName = "";
  21564. string OrganizationCode = "";
  21565. string OrganizationFullName = "";
  21566. sqlString = @"select TP_MST_Organization.OrganizationID
  21567. ,TP_MST_Organization.OrganizationName
  21568. ,TP_MST_Organization.OrganizationCode
  21569. ,TP_MST_Organization.OrganizationFullName
  21570. from TP_PC_Procedure left join TP_MST_Organization
  21571. on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID
  21572. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  21573. paras = new OracleParameter[]{
  21574. new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  21575. };
  21576. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21577. OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID
  21578. OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称
  21579. OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码
  21580. OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称
  21581. // 获取校验工序信息
  21582. sqlString = @"select TP_PC_Procedure.ProcedureID
  21583. ,TP_PC_Procedure.ProcedureCode
  21584. ,TP_PC_Procedure.ProcedureName
  21585. from TP_PC_Procedure
  21586. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  21587. paras = new OracleParameter[]{
  21588. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21589. };
  21590. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21591. string ProcedureCode = "";
  21592. string ProcedureName = "";
  21593. if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入
  21594. {
  21595. ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  21596. ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  21597. }
  21598. //漏扫表ID
  21599. string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual";
  21600. AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  21601. sqlString = @"insert into TP_PM_BarCodeMissing(MissID,
  21602. BarCode,
  21603. OrganizationID,
  21604. OrganizationName,
  21605. OrganizationCode,
  21606. OrganizationFullName,
  21607. CompleteProcedureID,
  21608. CompleteProcedureCode,
  21609. CompleteProcedureName,
  21610. ProcedureID,
  21611. ProcedureCode,
  21612. ProcedureName,
  21613. MissProcedureID,
  21614. MissProcedureCode,
  21615. MissProcedureName,
  21616. GoodsID,
  21617. GoodsCode,
  21618. GoodsName,
  21619. GoodsTypeID,
  21620. CreateUserID,
  21621. UpdateUserID,
  21622. AccountID
  21623. ) values
  21624. ( :MissID,
  21625. :BarCode,
  21626. :OrganizationID,
  21627. :OrganizationName,
  21628. :OrganizationCode,
  21629. :OrganizationFullName,
  21630. :CompleteProcedureID,
  21631. :CompleteProcedureCode,
  21632. :CompleteProcedureName,
  21633. :ProcedureID,
  21634. :ProcedureCode,
  21635. :ProcedureName,
  21636. :MissProcedureID,
  21637. :MissProcedureCode,
  21638. :MissProcedureName,
  21639. :GoodsID,
  21640. :GoodsCode,
  21641. :GoodsName,
  21642. :GoodsTypeID,
  21643. :CreateUserID,
  21644. :UpdateUserID,
  21645. :AccountID
  21646. )
  21647. ";
  21648. paras = new OracleParameter[]{
  21649. new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input),
  21650. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21651. new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input),
  21652. new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input),
  21653. new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input),
  21654. new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input),
  21655. new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input),
  21656. new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input),
  21657. new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input),
  21658. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21659. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input),
  21660. new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input),
  21661. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  21662. new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input),
  21663. new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input),
  21664. new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input),
  21665. new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input),
  21666. new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input),
  21667. new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input),
  21668. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  21669. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  21670. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  21671. };
  21672. oracleTrConn.GetSqlResultToStr(sqlString, paras);
  21673. }
  21674. #endregion
  21675. }
  21676. }
  21677. else //不在产
  21678. {
  21679. #region 是否存在注浆产品
  21680. sqlString = @"select TP_PM_GroutingDailyDetail.BarCode,TP_PM_GroutingDailyDetail.GoodsID,TP_PM_GroutingDailyDetail.GoodsCode,
  21681. TP_PM_GroutingDailyDetail.GoodsName,TP_MST_Goods.GoodsTypeID
  21682. from TP_PM_GroutingDailyDetail
  21683. left join TP_MST_Goods on TP_PM_GroutingDailyDetail.GoodsID=TP_MST_Goods.GoodsID
  21684. where TP_PM_GroutingDailyDetail.BarCode=:BarCode";
  21685. paras = new OracleParameter[]{
  21686. new OracleParameter(":BarCode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  21687. };
  21688. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21689. #endregion
  21690. if (ds != null && ds.Tables[0].Rows.Count > 0)
  21691. {
  21692. // 此条码为在产产品
  21693. //int? CompleteProcedureID = null;//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName)
  21694. //string CompleteProcedureCode = "";
  21695. //string CompleteProcedureName = "";
  21696. int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]);
  21697. string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  21698. string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  21699. int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]);
  21700. // #region 存在注浆产品,查看是否存在报损记录或者产成品记录
  21701. // sqlString = @"select BarCode from TP_PM_ScrapProduct where BarCode=:BarCode and ValueFlag=1
  21702. // union select BarCode from TP_PM_FinishedProduct where BarCode=:BarCode and ValueFlag=1";
  21703. // paras = new OracleParameter[]{
  21704. // new OracleParameter(":BarCode",OracleDbType.Varchar2,barcode,ParameterDirection.Input),
  21705. // };
  21706. // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21707. // #endregion
  21708. // if (ds != null && ds.Tables[0].Rows.Count == 0) //即不在报损 ,也不在产成,说明未走任何工序
  21709. // {
  21710. #region 查出校验工序的据在生产线,从而查出此生产上的漏扫开始工序节点
  21711. int ProductionLineID = 0;
  21712. //查出校验工序生产线ID,用于区分多生产线的首个开始节点
  21713. sqlString = @"select ProductionLineID from TP_PC_Procedure where ProcedureID=:procedureID";
  21714. paras = new OracleParameter[]{
  21715. new OracleParameter(":procedureID",OracleDbType.Int32,produceid,ParameterDirection.Input),
  21716. };
  21717. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21718. if (ds != null && ds.Tables[0].Rows.Count > 0) //
  21719. {
  21720. ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]);
  21721. }
  21722. sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods
  21723. left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID
  21724. where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode)
  21725. and TP_PC_ProcedureGoods.ProcedureID in(
  21726. select ProcedureID
  21727. from TP_PC_Procedure
  21728. where ProductionLineID =:ProductionLineID and NodeType=1 and valueflag = '1')
  21729. order by TP_PC_Procedure.misspriority desc, TP_PC_Procedure.displayno";
  21730. paras = new OracleParameter[]{
  21731. new OracleParameter(":ProductionLineID",OracleDbType.Int32,ProductionLineID,ParameterDirection.Input),
  21732. new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21733. };
  21734. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21735. #endregion
  21736. if (ds != null && ds.Tables[0].Rows.Count > 0) //即不在报损 ,也不在产成,说明未走任何工序
  21737. {
  21738. int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]);
  21739. string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  21740. string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  21741. #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入
  21742. sqlString = @"select 1 from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID=:ProcedureID";
  21743. paras = new OracleParameter[]{
  21744. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21745. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  21746. new OracleParameter(":ProcedureID",OracleDbType.Int32,produceid,ParameterDirection.Input),
  21747. };
  21748. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21749. if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入
  21750. {
  21751. int OrganizationID = 0;
  21752. string OrganizationName = "";
  21753. string OrganizationCode = "";
  21754. string OrganizationFullName = "";
  21755. sqlString = @"select TP_MST_Organization.OrganizationID
  21756. ,TP_MST_Organization.OrganizationName
  21757. ,TP_MST_Organization.OrganizationCode
  21758. ,TP_MST_Organization.OrganizationFullName
  21759. from TP_PC_Procedure left join TP_MST_Organization
  21760. on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID
  21761. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  21762. paras = new OracleParameter[]{
  21763. new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  21764. };
  21765. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21766. OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID
  21767. OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称
  21768. OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码
  21769. OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称
  21770. // 获取校验工序信息
  21771. sqlString = @"select TP_PC_Procedure.ProcedureID
  21772. ,TP_PC_Procedure.ProcedureCode
  21773. ,TP_PC_Procedure.ProcedureName
  21774. from TP_PC_Procedure
  21775. where TP_PC_Procedure.ProcedureID=:ProcedureID";
  21776. paras = new OracleParameter[]{
  21777. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21778. };
  21779. ds = oracleTrConn.GetSqlResultToDs(sqlString, paras);
  21780. string ProcedureCode = "";
  21781. string ProcedureName = "";
  21782. if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入
  21783. {
  21784. ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString();
  21785. ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString();
  21786. }
  21787. //漏扫表ID
  21788. string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual";
  21789. AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql));
  21790. sqlString = @"insert into TP_PM_BarCodeMissing(MissID,
  21791. BarCode,
  21792. OrganizationID,
  21793. OrganizationName,
  21794. OrganizationCode,
  21795. OrganizationFullName,
  21796. ProcedureID,
  21797. ProcedureCode,
  21798. ProcedureName,
  21799. MissProcedureID,
  21800. MissProcedureCode,
  21801. MissProcedureName,
  21802. GoodsID,
  21803. GoodsCode,
  21804. GoodsName,
  21805. GoodsTypeID,
  21806. CreateUserID,
  21807. UpdateUserID,
  21808. AccountID
  21809. ) values
  21810. ( :MissID,
  21811. :BarCode,
  21812. :OrganizationID,
  21813. :OrganizationName,
  21814. :OrganizationCode,
  21815. :OrganizationFullName,
  21816. :ProcedureID,
  21817. :ProcedureCode,
  21818. :ProcedureName,
  21819. :MissProcedureID,
  21820. :MissProcedureCode,
  21821. :MissProcedureName,
  21822. :GoodsID,
  21823. :GoodsCode,
  21824. :GoodsName,
  21825. :GoodsTypeID,
  21826. :CreateUserID,
  21827. :UpdateUserID,
  21828. :AccountID
  21829. )
  21830. ";
  21831. paras = new OracleParameter[]{
  21832. new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input),
  21833. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  21834. new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input),
  21835. new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input),
  21836. new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input),
  21837. new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input),
  21838. //new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input),
  21839. //new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input),
  21840. //new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input),
  21841. new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input),
  21842. new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input),
  21843. new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input),
  21844. new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input),
  21845. new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input),
  21846. new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input),
  21847. new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input),
  21848. new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input),
  21849. new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input),
  21850. new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input),
  21851. new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  21852. new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input),
  21853. new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input),
  21854. };
  21855. oracleTrConn.GetSqlResultToStr(sqlString, paras);
  21856. }
  21857. #endregion
  21858. }
  21859. //}
  21860. }
  21861. }
  21862. return AddBarCodeMissingID;
  21863. }
  21864. catch (Exception ex)
  21865. {
  21866. throw ex;
  21867. }
  21868. }
  21869. #endregion
  21870. #region 查询
  21871. #region 获取生产工序实体
  21872. /// <summary>
  21873. /// 获取生产工序实体
  21874. /// </summary>
  21875. /// <param name="procedureID">工序ID</param>
  21876. /// <param name="userInfo">用户基本信息</param>
  21877. /// <returns>ProcedureEntity实体类</returns>
  21878. public static ServiceResultEntity GetProcedureDataEntityByID(int procedureID, SUserInfo userInfo)
  21879. {
  21880. ServiceResultEntity sre = new ServiceResultEntity();
  21881. //ProcedureEntity procedureDataentity = new ProcedureEntity();
  21882. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  21883. string procsql = "pro_pm_searchProcedurbyID";
  21884. try
  21885. {
  21886. IDataParameter[] paras = new OracleParameter[]
  21887. {
  21888. new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input),
  21889. new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output)
  21890. };
  21891. oracleConn.Open();
  21892. DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras);
  21893. sre.Data = returnDs;
  21894. //if (returnDs != null && returnDs.Tables.Count > 0 && returnDs.Tables[0].Rows.Count > 0)
  21895. //{
  21896. // DataRow row = returnDs.Tables[0].Rows[0];
  21897. // procedureDataentity = DataConvert.DataRowConvertToObject<ProcedureEntity>(row);
  21898. // return procedureDataentity;
  21899. //}
  21900. //else
  21901. //{
  21902. // return null;
  21903. //}
  21904. }
  21905. catch (Exception ex)
  21906. {
  21907. throw ex;
  21908. }
  21909. finally
  21910. {
  21911. if (oracleConn.ConnState == ConnectionState.Open)
  21912. {
  21913. oracleConn.Close();
  21914. }
  21915. }
  21916. return sre;
  21917. }
  21918. #endregion
  21919. #region 产品分级数据源
  21920. /// <summary>
  21921. /// 产品分级数据源
  21922. /// </summary>
  21923. /// <param name="type">1适用半成品2检验 2适用成品检验 3入窑前检验</param>
  21924. /// <param name="userInfo">用户基本信息</param>
  21925. /// <returns>DataSet</returns>
  21926. public static ServiceResultEntity GetGoodsLevel(int type, SUserInfo userInfo)
  21927. {
  21928. ServiceResultEntity sre = new ServiceResultEntity();
  21929. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  21930. try
  21931. {
  21932. con.Open();
  21933. string sqlString = "";
  21934. if (type == 1 || type == 3)
  21935. {
  21936. sqlString = "select GoodsLevelID as DefectFlagID,GoodsLevelName as DefectFlagName,GoodsLevelTypeID from TP_MST_GoodsLevel where IsSemiFinishedEx=1 and AccountID=:AccountID and ValueFlag=1 order by SFEDisplayNo";
  21937. }
  21938. else if (type == 2)
  21939. {
  21940. sqlString = "select GoodsLevelID as DefectFlagID,GoodsLevelName as DefectFlagName,GoodsLevelTypeID from TP_MST_GoodsLevel where IsFinishedEx=1 and AccountID=:AccountID and ValueFlag=1 order by FEDisplayNo";
  21941. }
  21942. OracleParameter[] paras = new OracleParameter[]{
  21943. new OracleParameter(":AccountID",userInfo.AccountID),
  21944. };
  21945. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  21946. return sre;
  21947. }
  21948. catch (Exception ex)
  21949. {
  21950. throw ex;
  21951. }
  21952. finally
  21953. {
  21954. if (con.ConnState == ConnectionState.Open)
  21955. {
  21956. con.Close();
  21957. }
  21958. }
  21959. }
  21960. #endregion
  21961. /// <summary>
  21962. /// 获取重烧生产返工工序
  21963. /// </summary>
  21964. /// <param name="procedureID">工序ID</param>
  21965. /// <param name="barcode">产品条码</param>
  21966. /// <returns>DataSet</returns>
  21967. public static ServiceResultEntity GetReworkProcedureByProcedureID(int procedureID)
  21968. {
  21969. ServiceResultEntity sre = new ServiceResultEntity();
  21970. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  21971. try
  21972. {
  21973. con.Open();
  21974. string sqlString = @"select ProcedureID as ReworkProcedureID ,ProcedureName as ReworkProcedureName
  21975. from TP_PC_Procedure p where ProductionLineID
  21976. in(
  21977. select ProductionLineID from TP_PC_Procedure where ProcedureID=:ProcedureID
  21978. ) and p.valueflag='1'
  21979. and IsSpecialRework IN('1','2') order by p.displayno ";
  21980. OracleParameter[] paras = new OracleParameter[]{
  21981. new OracleParameter(":ProcedureID",OracleDbType.Int32, procedureID,ParameterDirection.Input),
  21982. };
  21983. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  21984. return sre;
  21985. }
  21986. catch (Exception ex)
  21987. {
  21988. throw ex;
  21989. }
  21990. finally
  21991. {
  21992. if (con.ConnState == ConnectionState.Open)
  21993. {
  21994. con.Close();
  21995. }
  21996. }
  21997. }
  21998. /// <summary>
  21999. /// 通过SettingCode获取系统参数管理的数据
  22000. /// </summary>
  22001. /// <param name="sUserInfo">用户基本信息</param>
  22002. /// <returns>DataSet</returns>
  22003. /// <remarks>
  22004. /// 2016.10.10 王鑫 新建
  22005. /// </remarks>
  22006. public static ServiceResultEntity GetSystemSettingDataByCode(string settingcode, SUserInfo sUserInfo)
  22007. {
  22008. ServiceResultEntity sre = new ServiceResultEntity();
  22009. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22010. try
  22011. {
  22012. //获取系统参数管理的数据
  22013. string sqlString = "Select SettingCode,SettingName,CategoryName,SettingValue,SettingDefaultValues,AccountID,Remarks,Tooltip,EditFlag,UpdateTime,"
  22014. + "UpdateUserID,OPTimeStamp from TP_MST_SystemSetting where AccountID = :AccountID and SettingCode=:SettingCode";
  22015. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  22016. {
  22017. new Oracle.ManagedDataAccess.Client.OracleParameter(":AccountID",sUserInfo.AccountID),
  22018. new Oracle.ManagedDataAccess.Client.OracleParameter(":SettingCode",settingcode)
  22019. };
  22020. oracleConn.Open();
  22021. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  22022. oracleConn.Close();
  22023. return sre;
  22024. }
  22025. catch (Exception ex)
  22026. {
  22027. if (oracleConn.ConnState == ConnectionState.Open)
  22028. {
  22029. oracleConn.Close();
  22030. }
  22031. throw ex;
  22032. }
  22033. }
  22034. #region 校验生产工号
  22035. /// <summary>
  22036. /// 检验此用户是否允许生产工序
  22037. /// </summary>
  22038. /// <param name="procedureID">工序ID</param>
  22039. /// <param name="UserID">工号ID</param>
  22040. /// <returns>CheckProcedureUserResult实体类</returns>
  22041. public static ServiceResultEntity CheckProcedureUser( string UserCode, SUserInfo sUserInfo)
  22042. {
  22043. ServiceResultEntity sre = new ServiceResultEntity();
  22044. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22045. try
  22046. {
  22047. oracleConn.Open();
  22048. string sqlString = @"SELECT TP_MST_USER.ispublicbody,TP_MST_USER.USERID,TP_MST_USER.UserCode,TP_MST_USER.UserName , '' as ErrMsg FROM TP_MST_USER
  22049. WHERE TP_MST_USER.UserCode=:UserCode and TP_MST_USER.ValueFlag = 1 and TP_MST_USER.IsWorker=1 and TP_MST_USER.AccountID=:accountID";
  22050. OracleParameter[] paras = new OracleParameter[]{
  22051. new OracleParameter(":UserCode",OracleDbType.Varchar2,UserCode,ParameterDirection.Input),
  22052. new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input),
  22053. };
  22054. DataSet resultDs = oracleConn.GetSqlResultToDs(sqlString, paras);
  22055. //CheckProcedureUserResult checkProcedureUserResult = new CheckProcedureUserResult();
  22056. //if (resultDs != null && resultDs.Tables.Count > Constant.INT_IS_ZERO && resultDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO)
  22057. //{
  22058. // if (Convert.ToInt32(resultDs.Tables[0].Rows[0]["ProcedureUserid"]) == Constant.INT_IS_ZERO)
  22059. // {
  22060. // // 此工号不允许生产工序
  22061. // resultDs.Tables[0].Rows[0]["ErrMsg"] = string.Format(Messages.MSG_PM_W006, UserCode);
  22062. // //checkProcedureUserResult.ErrMsg
  22063. // // = string.Format(Messages.MSG_PM_W006, UserCode);
  22064. // }
  22065. // else
  22066. // {
  22067. // //checkProcedureUserResult.UserID = Convert.ToInt32(resultDs.Tables[0].Rows[0]["UserID"]);
  22068. // //checkProcedureUserResult.UserCode = resultDs.Tables[0].Rows[0]["UserCode"].ToString();
  22069. // //checkProcedureUserResult.UserName = resultDs.Tables[0].Rows[0]["UserName"].ToString();
  22070. // //checkProcedureUserResult.Ispublicbody = resultDs.Tables[0].Rows[0]["Ispublicbody"].ToString() == "1" ? 1 : 0;
  22071. // }
  22072. //}
  22073. //else
  22074. //{
  22075. // resultDs.Tables[0].Rows[0]["ErrMsg"] = string.Format(Messages.MSG_CMN_W019, UserCode, "生产工号");
  22076. // //checkProcedureUserResult.ErrMsg
  22077. // // = string.Format(Messages.MSG_CMN_W019, UserCode, "生产工号");
  22078. //}
  22079. #region 查询该工号下是否有试用或者转正的生产员工
  22080. if (string.IsNullOrEmpty(resultDs.Tables[0].Rows[0]["ErrMsg"] + ""))
  22081. {
  22082. sqlString = @"
  22083. select count(*) from tp_hr_staff where staffid in(select staffid
  22084. from tp_mst_userstaff where userid=:userID) and valueflag=1 and (staffstatus=1 or staffstatus=2)";
  22085. paras = new OracleParameter[]{
  22086. new OracleParameter(":userID",OracleDbType.Int32,Convert.ToInt32(resultDs.Tables[0].Rows[0]["UserID"]),ParameterDirection.Input),
  22087. };
  22088. string count = oracleConn.GetSqlResultToStr(sqlString, paras);
  22089. if (int.Parse(count) == Constant.INT_IS_ZERO)
  22090. {
  22091. resultDs.Tables[0].Rows[0]["ErrMsg"]
  22092. = string.Format(Messages.MSG_PM_W005, UserCode);
  22093. }
  22094. }
  22095. sre.Data = resultDs;
  22096. #endregion
  22097. return sre;
  22098. }
  22099. catch (Exception ex)
  22100. {
  22101. throw ex;
  22102. }
  22103. finally
  22104. {
  22105. if (oracleConn.ConnState == ConnectionState.Open)
  22106. {
  22107. oracleConn.Close();
  22108. }
  22109. }
  22110. }
  22111. #endregion
  22112. /// <summary>
  22113. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据
  22114. /// </summary>
  22115. /// <param name="searchEntity">生产数据实体类</param>
  22116. /// <param name="user">用户基本信息</param>
  22117. /// <returns>DataTable</returns>
  22118. public static ServiceResultEntity GetProductionDataPDA(int procedureID, string barCode, SUserInfo user)
  22119. {
  22120. ServiceResultEntity sre = new ServiceResultEntity();
  22121. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22122. string procsql = "";//PRO_PM_GetProductionDataPDA
  22123. //xuwei modify 2019-12-13 修正读取当前工序 是编辑还是插入
  22124. procsql = @"SELECT TP_PM_ProductionDataIn.ProductionDataID FROM TP_PM_ProductionDataIn where valueflag=1 and 1=1 and ProcedureID=" + procedureID + " and barcode='" + barCode + "' order by TP_PM_ProductionDataIn.ProductionDataid desc";
  22125. try
  22126. {
  22127. oracleConn.Open();
  22128. sre.Data = oracleConn.GetSqlResultToDs(procsql);
  22129. return sre;
  22130. }
  22131. catch (Exception ex)
  22132. {
  22133. throw ex;
  22134. }
  22135. finally
  22136. {
  22137. if (oracleConn.ConnState == ConnectionState.Open)
  22138. {
  22139. oracleConn.Close();
  22140. }
  22141. }
  22142. }
  22143. /// <summary>
  22144. /// 获取编辑的生产数据ID与列表所选生产数据ID做比较
  22145. /// </summary>
  22146. /// <param name="barcode">产品条码</param>
  22147. /// <returns>int</returns>
  22148. public static ServiceResultEntity GetCompleteProductionDataID(string barcode)
  22149. {
  22150. ServiceResultEntity sre = new ServiceResultEntity();
  22151. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22152. try
  22153. {
  22154. con.Open();
  22155. string sqlString = @"select
  22156. ProductionDataID
  22157. from TP_PM_InProduction
  22158. where
  22159. TP_PM_InProduction.BarCode=:BarCode
  22160. union
  22161. select
  22162. ProductionDataID
  22163. from Tp_Pm_Inproductiontrash
  22164. where
  22165. Tp_Pm_Inproductiontrash.BarCode=:BarCode
  22166. ";
  22167. OracleParameter[] paras = new OracleParameter[]{
  22168. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  22169. };
  22170. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  22171. return sre;
  22172. //if (ds != null && ds.Tables[0].Rows.Count > 0)
  22173. //{
  22174. // return Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionDataID"]);
  22175. //}
  22176. //else
  22177. //{
  22178. // return 0;
  22179. //}
  22180. }
  22181. catch (Exception ex)
  22182. {
  22183. throw ex;
  22184. }
  22185. finally
  22186. {
  22187. if (con.ConnState == ConnectionState.Open)
  22188. {
  22189. con.Close();
  22190. }
  22191. }
  22192. }
  22193. /// <summary>
  22194. /// 成检时获取此条码是否报损
  22195. /// <param name="barcode">产品条码</param>
  22196. /// </summary>
  22197. /// <returns>int</returns>
  22198. public static ServiceResultEntity CheckScrapProduct(string barcode)
  22199. {
  22200. ServiceResultEntity sre = new ServiceResultEntity();
  22201. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22202. try
  22203. {
  22204. con.Open();
  22205. string sqlString = @"select auditstatus from tp_pm_scrapproduct where auditstatus in(0,1) and valueflag=1 and goodsleveltypeid=8 and barcode=:barcode and recyclingflag=0";
  22206. OracleParameter[] paras = new OracleParameter[]{
  22207. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  22208. };
  22209. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  22210. return sre;
  22211. }
  22212. catch (Exception ex)
  22213. {
  22214. throw ex;
  22215. }
  22216. finally
  22217. {
  22218. if (con.ConnState == ConnectionState.Open)
  22219. {
  22220. con.Close();
  22221. }
  22222. }
  22223. }
  22224. /// <summary>
  22225. /// 根据所选生产数据ID,显示成检数据信息
  22226. /// </summary>
  22227. /// <param name="productionDataID">生产数据ID</param>
  22228. /// <returns>DataSet</returns>
  22229. public static ServiceResultEntity GetProductionDataByID(int productionDataID)
  22230. {
  22231. ServiceResultEntity sre = new ServiceResultEntity();
  22232. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22233. try
  22234. {
  22235. con.Open();
  22236. DataSet dsReturn = new DataSet();
  22237. string sqlString = @"select
  22238. TP_PM_ProductionDataIn.Barcode as BarCode,
  22239. TP_PM_ProductionDataIn.Goodsid as GoodsID,
  22240. TP_PM_ProductionDataIn.Goodscode as GoodsCode,
  22241. TP_PM_ProductionDataIn.Goodsname as GoodsName,
  22242. TP_PM_ProductionDataIn.GoodsLevelID as DefectFlagID,
  22243. TP_PM_ProductionDataIn.Reworkprocedureid as ReworkProcedureID,
  22244. TP_PM_ProductionDataIn.Remarks as Remarks,
  22245. TP_PM_ProductionDataIn.Userid as UserID,
  22246. TP_PM_ProductionDataIn.UserCode as UserCode,
  22247. TP_PM_ProductionDataIn.UserName as UserName,
  22248. TP_PM_ProductionDataIn.Goodsleveltypeid as GoodsLevelTypeID,
  22249. TP_PM_ProductionDataIn.SpecialRepairflag,
  22250. TP_PM_ProductionDataIn.IsReFire,
  22251. TP_PM_ProductionDataIn.KilnCode,
  22252. TP_PM_ProductionDataIn.KilnCarCode,
  22253. TP_PM_ProductionDataIn.GroutingUserCode,
  22254. TP_PM_ProductionDataIn.GroutingMouldCode as MouldCode,
  22255. TP_PM_ProductionDataIn.GroutingNum,
  22256. TP_PM_ProductionDataIn.GroutingDate,
  22257. TP_PM_ProductionDataIn.IsPublicBody,
  22258. TP_MST_Logo.logoid,
  22259. TP_MST_Logo.logocode,
  22260. TP_MST_Logo.logoname,
  22261. TP_PM_ProductionDataIn.CreateTime,
  22262. TP_PM_ProductionDataIn.CheckTime,
  22263. dd.DICTIONARYVALUE as GLAZEName,
  22264. gdd.LEAKFLAG1,
  22265. gdd.LEAKFLAG2,
  22266. gdd.LEAKFLAG3,
  22267. decode(TP_PM_ProductionDataIn.SpecialRepairFlag,'1','是','0','否') as SpecialRepairflagName,
  22268. decode(TP_PM_ProductionDataIn.IsReFire,'6','是','0','否') as IsReFireName,
  22269. decode(gdd.LEAKFLAG1,'1','合格','0','不合格','未检测') as LEAKFLAG1Name,
  22270. decode(gdd.LEAKFLAG2,'1','合格','0','不合格','未检测') as LEAKFLAG2Name,
  22271. decode(gdd.LEAKFLAG3,'1','合格','0','不合格','未检测') as LEAKFLAG3Name
  22272. from TP_PM_ProductionDataIn
  22273. INNER JOIN TP_PM_GROUTINGDAILYDETAIL gdd
  22274. on gdd.BARCODE = TP_PM_ProductionDataIn.BARCODE
  22275. left join TP_MST_DATADICTIONARY dd on dd.DICTIONARYID = gdd.GLAZETYPEID
  22276. left join TP_MST_Logo
  22277. on gdd.logoid=TP_MST_Logo.logoid
  22278. where
  22279. TP_PM_ProductionDataIn.Productiondataid=:ProductionDataID
  22280. ";
  22281. string sqlString2 = @"
  22282. select
  22283. TP_PM_Defect.ProductionDefectID as ProductionDefectID,
  22284. TP_PM_Defect.Barcode as BarCode,
  22285. TP_PM_Defect.DefectID as DefectID,
  22286. TP_PM_Defect.Defectname as DefectName,
  22287. TP_PM_Defect.Defectcode as DefectCode,
  22288. TP_PM_Defect.Defectpositionid as DefectPositionID,
  22289. TP_PM_Defect.Defectpositionname as DefectPositionName,
  22290. TP_PM_Defect.Defectpositioncode as DefectPositionCode,
  22291. TP_PM_Defect.Defectprocedureid as DefectProcedureID,
  22292. TP_PM_Defect.Defectprocedurename as DefectProcedureName,
  22293. TP_PM_Defect.Defectprocedurecode as DefectProcedureCode,
  22294. TP_PM_Defect.Defectuserid as DefectUserID,
  22295. TP_PM_Defect.Defectusername as DefectUserName,
  22296. TP_PM_Defect.Defectusercode as DefectUserCode,
  22297. TP_PM_Defect.DefectJobs as Jobs,
  22298. nvl(TP_PM_Defect.MissedUserID,-1) as MissedUserID,
  22299. TP_PM_Defect.MissedUserCode,
  22300. TP_PM_Defect.MissedUserName,
  22301. TP_MST_Jobs.Jobsname as JobsText,
  22302. TP_PM_Defect.Remarks as DefectRemarks,
  22303. TP_PM_Defect.Productiondataid as ProductionDataID,
  22304. nvl(TP_PM_Defect.DefectProductionDataID,0) as DefectProductionDataID,
  22305. TP_PM_Defect.Defectfine as DefectFineID,
  22306. TP_MST_DefectFine.DefectFineCode as DefectFineValue,
  22307. TP_PM_Defect.SpecialDefect,
  22308. TP_PM_Defect.DefectDeductionNum,
  22309. TP_PM_Defect.CheckTime
  22310. from TP_PM_Defect
  22311. left join TP_MST_Jobs
  22312. on TP_PM_Defect.Defectjobs=TP_MST_Jobs.JobsID
  22313. left join TP_MST_DefectFine
  22314. on TP_PM_Defect.Defectfine= TP_MST_DefectFine.DefectFineid
  22315. where TP_PM_Defect.Productiondataid =:ProductionDataID";
  22316. string sqlString3 = @"select
  22317. TP_PM_DefectResponsible.ProductionDefectID as ProductionDefectID,
  22318. TP_PM_DefectResponsible.Staffid as StaffID,
  22319. TP_HR_Staff.Staffcode as StaffCode,
  22320. TP_HR_Staff.Staffname as StaffName,
  22321. TP_PM_DefectResponsible.Staffstatus as StaffStatus,
  22322. TP_PM_DefectResponsible.UJobsID,
  22323. TP_PM_DefectResponsible.SJobsID
  22324. from TP_PM_DefectResponsible
  22325. left join TP_HR_Staff
  22326. on TP_PM_DefectResponsible.StaffID=TP_HR_Staff.Staffid
  22327. where TP_PM_DefectResponsible.Productiondefectid in
  22328. (
  22329. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  22330. )";
  22331. string sqlString4 = @" select
  22332. TP_PM_DefectImage.ProductionDefectID,
  22333. TP_PM_DefectImage.Thumbnailpath,
  22334. TP_PM_DefectImage.Imagepath
  22335. from TP_PM_DefectImage
  22336. where TP_PM_DefectImage.Productiondefectid in
  22337. (
  22338. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  22339. )";
  22340. string sqlString5 = @"select
  22341. TP_PM_DefectMissedResponsible.ProductionDefectID as ProductionDefectID,
  22342. TP_PM_DefectMissedResponsible.Staffid as StaffID,
  22343. TP_HR_Staff.Staffcode as StaffCode,
  22344. TP_HR_Staff.Staffname as StaffName,
  22345. TP_PM_DefectMissedResponsible.Staffstatus as StaffStatus,
  22346. TP_PM_DefectMissedResponsible.UJobsID,
  22347. TP_PM_DefectMissedResponsible.SJobsID
  22348. from TP_PM_DefectMissedResponsible
  22349. left join TP_HR_Staff
  22350. on TP_PM_DefectMissedResponsible.StaffID=TP_HR_Staff.Staffid
  22351. where TP_PM_DefectMissedResponsible.Productiondefectid in
  22352. (
  22353. select ProductionDefectID from TP_PM_Defect where TP_PM_Defect.Productiondataid=:ProductionDataID
  22354. )";
  22355. OracleParameter[] paras = new OracleParameter[]{
  22356. new OracleParameter(":ProductionDataID",OracleDbType.Int32, productionDataID,ParameterDirection.Input),
  22357. };
  22358. DataSet ds = con.GetSqlResultToDs(sqlString, paras);
  22359. ds.Tables[0].TableName = "TP_PM_ProductionData";
  22360. DataSet ds2 = con.GetSqlResultToDs(sqlString2, paras);
  22361. ds2.Tables[0].TableName = "TP_PM_Defect";
  22362. DataSet ds3 = con.GetSqlResultToDs(sqlString3, paras);
  22363. ds3.Tables[0].TableName = "TP_PM_DefectResponsible";
  22364. DataSet ds4 = con.GetSqlResultToDs(sqlString4, paras);
  22365. ds4.Tables[0].TableName = "TP_PM_DefectImage";
  22366. DataSet ds5 = con.GetSqlResultToDs(sqlString5, paras);
  22367. ds5.Tables[0].TableName = "TP_PM_DefectMissedResponsible";
  22368. dsReturn.Tables.Add(ds.Tables[0].Copy());
  22369. dsReturn.Tables.Add(ds2.Tables[0].Copy());
  22370. dsReturn.Tables.Add(ds3.Tables[0].Copy());
  22371. dsReturn.Tables.Add(ds4.Tables[0].Copy());
  22372. dsReturn.Tables.Add(ds5.Tables[0].Copy());
  22373. sre.Data = dsReturn;
  22374. return sre;
  22375. }
  22376. catch (Exception ex)
  22377. {
  22378. throw ex;
  22379. }
  22380. finally
  22381. {
  22382. if (con.ConnState == ConnectionState.Open)
  22383. {
  22384. con.Close();
  22385. }
  22386. }
  22387. }
  22388. /// <summary>
  22389. /// 获取标识
  22390. /// </summary>
  22391. /// <param name="barcode">产品条码</param>ram>
  22392. /// <returns>int</returns>
  22393. public static ServiceResultEntity GetRecyclingflagByBarcode(string barcode, SUserInfo sUserInfo)
  22394. {
  22395. ServiceResultEntity sre = new ServiceResultEntity();
  22396. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22397. try
  22398. {
  22399. con.Open();
  22400. string sqlString = "select recyclingflag from TP_PM_ScrapProduct "
  22401. + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) "
  22402. + " from TP_PM_ScrapProduct "
  22403. + " where BarCode=:BarCode and ValueFlag=1)"
  22404. + " and ValueFlag=1";
  22405. OracleParameter[] paras = new OracleParameter[]{
  22406. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  22407. };
  22408. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  22409. return sre;
  22410. }
  22411. catch (Exception ex)
  22412. {
  22413. throw ex;
  22414. }
  22415. finally
  22416. {
  22417. if (con.ConnState == ConnectionState.Open)
  22418. {
  22419. con.Close();
  22420. }
  22421. }
  22422. }
  22423. /// <summary>
  22424. /// 获取在产产品的信息标识列表
  22425. /// </summary>
  22426. /// <param name="barcode">产品条码</param>
  22427. /// <returns>int</returns>
  22428. public static ServiceResultEntity GetInProductionDataList(string barcode)
  22429. {
  22430. ServiceResultEntity sre = new ServiceResultEntity();
  22431. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22432. try
  22433. {
  22434. con.Open();
  22435. string sqlString = @"select
  22436. BarCode,
  22437. FlowProcedureID,
  22438. FlowProcedureTime,
  22439. ProcedureID,
  22440. ProcedureTime,
  22441. ProductionDataID,
  22442. IsReFire,
  22443. SpecialRepairFlag
  22444. from TP_PM_InProduction
  22445. where
  22446. TP_PM_InProduction.BarCode=:BarCode
  22447. ";
  22448. OracleParameter[] paras = new OracleParameter[]{
  22449. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  22450. };
  22451. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  22452. return sre;
  22453. }
  22454. catch (Exception ex)
  22455. {
  22456. throw ex;
  22457. }
  22458. finally
  22459. {
  22460. if (con.ConnState == ConnectionState.Open)
  22461. {
  22462. con.Close();
  22463. }
  22464. }
  22465. }
  22466. /// <summary>
  22467. /// 检验条码(非首节点)
  22468. /// </summary>
  22469. /// <param name="procedureID">工序ID</param>
  22470. /// <param name="barcode">产品条码</param>
  22471. /// <returns>DataSet</returns>
  22472. public static ServiceResultEntity CheckBarcode(int procedureID, string barcode, SUserInfo sUserInfo, bool isInn = false)
  22473. {
  22474. ServiceResultEntity sre = new ServiceResultEntity();
  22475. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22476. try
  22477. {
  22478. oracleConn.Open();
  22479. // 2019-1016
  22480. if (!isInn)
  22481. {
  22482. //xuwei fix 2019-09-26 使用通用方法判定
  22483. //if (PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode) == 1)
  22484. //{
  22485. // return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true);
  22486. //}fAddCheckBarcode
  22487. string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid";
  22488. string NodeType = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + "";
  22489. // 89[3#一检半检] 特殊处理
  22490. if (NodeType == "1" || procedureID == 89)
  22491. {
  22492. int isNodeBegin = IsNodeBegin<IDBConnection>(oracleConn, barcode);
  22493. if (isNodeBegin == 1)
  22494. {
  22495. sre.Data = CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true);
  22496. return sre;
  22497. }
  22498. }
  22499. }
  22500. DataTable dtBarCode = CreateBarCodeResultTable();
  22501. DataSet returnDs = new DataSet();
  22502. DataRow dr = dtBarCode.NewRow();
  22503. string sqlString = string.Empty;
  22504. string sqlString1 = string.Empty;
  22505. string sqlString2 = string.Empty;
  22506. DataSet ds = null;
  22507. #region 查出工序条码类型 wangx 2017-3-13
  22508. string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo);
  22509. if (sqlBarcode == string.Empty)
  22510. {
  22511. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码";
  22512. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  22513. dtBarCode.Rows.Add(dr);
  22514. returnDs.Tables.Add(dtBarCode);
  22515. sre.Data = returnDs;
  22516. return sre;
  22517. }
  22518. else
  22519. {
  22520. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode;
  22521. barcode = sqlBarcode;
  22522. }
  22523. #endregion
  22524. OracleParameter[] paras = new OracleParameter[]{
  22525. new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input),
  22526. new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  22527. new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output),
  22528. new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output),
  22529. new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  22530. new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  22531. new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output),
  22532. new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output),
  22533. };
  22534. oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras);
  22535. //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()]
  22536. // = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r");
  22537. //if (!string.IsNullOrEmpty(paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r")))
  22538. //{
  22539. // AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  22540. //}
  22541. //int missFlag = 0;
  22542. //if (paras[7].Value != null && paras[7].Value.ToString() == "1")
  22543. //{
  22544. // missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo);
  22545. //}
  22546. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value;
  22547. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value;
  22548. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value;
  22549. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value;
  22550. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "";
  22551. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  22552. //dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag;
  22553. //判断所在工序是否是表中成品检验工序ID不为空的 20221103 by qinq
  22554. sqlString = "SELECT t.procedureid\n" +
  22555. " ,t.procedurename\n" +
  22556. " FROM tp_pc_procedure t\n" +
  22557. " WHERE t.valueflag = '1'\n" +
  22558. " AND t.AccountID = :accountid\n" +
  22559. " AND t.finishedcheckprocedureid IS NOT NULL\n" +
  22560. " AND t.procedureid = :procedureid\n";
  22561. paras = new OracleParameter[]{
  22562. new OracleParameter(":accountid",sUserInfo.AccountID),
  22563. new OracleParameter(":procedureid",procedureID),
  22564. };
  22565. DataSet procedureData = oracleConn.GetSqlResultToDs(sqlString, paras);
  22566. //查询为空,该工序不满足条件
  22567. if (procedureData == null || procedureData.Tables[0].Rows.Count == 0)
  22568. {
  22569. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "当前工序不能进行成品检验";
  22570. dtBarCode.Rows.Add(dr);
  22571. dtBarCode.TableName = "InproductionTable";
  22572. returnDs.Tables.Add(dtBarCode);
  22573. }
  22574. else
  22575. {
  22576. sqlString = @"select
  22577. tp_pm_inproduction.GoodsName,
  22578. tp_pm_inproduction.GroutingUserID,
  22579. tp_pm_inproduction.GroutingUserCode,
  22580. tp_pm_inproduction.GroutingNum,
  22581. tp_pm_inproduction.GroutingMouldCode as MouldCode,
  22582. tp_pm_inproduction.ispublicbody,
  22583. tp_pm_inproduction.Groutingdate,
  22584. tp_pm_inproduction.SpecialRepairFlag,
  22585. tp_pm_inproduction.logoid, g.goodsid,g.goodscode,g.PlateLimitNum,g.DeliverLimitCycle,
  22586. --nvl(g.MaterialCode,g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  22587. nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) ||'#'|| to_char(g.GOODS_LINE_TYPE) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致
  22588. --gt.gt.goodstypecode,gt.goodstypename,a.workcode,
  22589. tp_mst_logo.logocode,
  22590. u.username as GroutingUserName,
  22591. tp_mst_logo.logoname,
  22592. p.procedurename,
  22593. p.procedureID,
  22594. p.finishedcheckprocedureid
  22595. from tp_pm_inproduction
  22596. left join TP_PM_GroutingDailyDetail gdd on gdd.GroutingDailyDetailID = tp_pm_inproduction.GroutingDailyDetailID
  22597. left join tp_mst_logo
  22598. on tp_pm_inproduction.logoid=tp_mst_logo.logoid
  22599. inner join tp_mst_user u on u.userid = gdd.userid
  22600. LEFT JOIN TP_MST_GOODS G ON G.GoodsID = tp_pm_inproduction.goodsid
  22601. left join tp_pc_procedure p on p.procedureid = tp_pm_inproduction.procedureid
  22602. left join tp_pc_procedure fp on fp.finishedcheckprocedureid = p.procedureid
  22603. where tp_pm_inproduction.BarCode=:barcode";
  22604. sqlString1 = @"SELECT t.RELATIONID
  22605. ,t.BARCODE
  22606. ,t.MATNR
  22607. ,t.IDNRK
  22608. ,t.MEINS
  22609. ,t.MENGE
  22610. ,t.IDNRKNAME as DetailName
  22611. ,t.IDNRKONLYCODE
  22612. ,t.CHARG
  22613. ,t.LGORT
  22614. ,0 as FrmLossCheck
  22615. ,0 as RecoverCheck
  22616. ,0 as NewCheck
  22617. ,'' as NEWIDNRKONLYCODE
  22618. ,'' as SCRAPREASON
  22619. ,0 as DICTIONARYID
  22620. FROM TP_PM_BARCODEIDNRKREL t
  22621. where t.BARCODE = :barcode
  22622. and t.ValueFlag = '1'";
  22623. paras = new OracleParameter[]{
  22624. new OracleParameter(":barcode",barcode),};
  22625. sqlString2 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi
  22626. where pi.Barcode= :barcode
  22627. and pi.MODELTYPE IN (-1, -4, -5)
  22628. and pi.ValueFlag = '1'
  22629. order by pi.CREATETIME desc";
  22630. ds = oracleConn.GetSqlResultToDs(sqlString, paras);
  22631. DataSet detailTable = oracleConn.GetSqlResultToDs(sqlString1, paras);
  22632. DataSet dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras);
  22633. DataSet defectSet = new DataSet();
  22634. if (ds != null && ds.Tables[0].Rows.Count > 0)
  22635. {
  22636. dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["GOODSMODELforCheck"].ToString();
  22637. //// hegii 三水 特殊处理 大件高压可以和普通合并装板,小件高压不能和普通合并装板
  22638. //if (ds.Tables[0].Rows[0]["workcode"].ToString() == "5020" &&
  22639. // ds.Tables[0].Rows[0]["goodstypename"].ToString() == "小件")
  22640. //{
  22641. // dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["goodscode"].ToString();
  22642. //}
  22643. dr["PlateLimitNum"] = ds.Tables[0].Rows[0]["PlateLimitNum"];
  22644. dr["ProcedureName"] = ds.Tables[0].Rows[0]["procedurename"];
  22645. dr["FinishedCheckProcedureid"] = ds.Tables[0].Rows[0]["finishedcheckprocedureid"];
  22646. dr["procedureID"] = ds.Tables[0].Rows[0]["procedureID"];
  22647. if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0)
  22648. {
  22649. dr["DefectFlagID"] = Convert.ToInt32(dataTable.Tables[0].Rows[0]["goodsleveltypeid"]);
  22650. }
  22651. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString();
  22652. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  22653. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  22654. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  22655. dr[Constant.BarCodeResultTableColumns.out_groutingUserName.ToString()] = ds.Tables[0].Rows[0]["GroutingUserName"].ToString();
  22656. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  22657. dr[Constant.BarCodeResultTableColumns.out_groutingUserID.ToString()] = ds.Tables[0].Rows[0]["GroutingUserID"].ToString();
  22658. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  22659. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  22660. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  22661. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  22662. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  22663. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  22664. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  22665. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  22666. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logocode"].ToString();
  22667. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoname"].ToString();
  22668. dr[Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString()] = ds.Tables[0].Rows[0]["DeliverLimitCycle"].ToString();
  22669. }
  22670. dtBarCode.Rows.Add(dr);
  22671. dtBarCode.TableName = "InproductionTable";
  22672. returnDs.Tables.Add(dtBarCode);
  22673. detailTable.Tables[0].TableName = "DetailTable";
  22674. returnDs.Tables.Add(detailTable.Tables[0].Copy());
  22675. //获取上一次成品检验的缺陷
  22676. if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0)
  22677. {
  22678. sqlString2 = @"select TP_PM_Defect.DefectID ,replace(
  22679. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) ,
  22680. concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->'
  22681. )
  22682. as DefectName,
  22683. TP_PM_Defect.DefectCode,
  22684. TP_PM_Defect.DefectPositionID,
  22685. replace(
  22686. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) ,
  22687. concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->'
  22688. )
  22689. as DefectPositionName,
  22690. TP_PM_Defect.DefectPositionCode,
  22691. TP_PM_Defect.DefectProcedureID,
  22692. TP_PM_Defect.DefectProcedureCode,
  22693. TP_PM_Defect.DefectProcedureName,TP_PM_Defect.DefectUserID
  22694. ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName,
  22695. TP_PM_Defect.DefectProductionDataID,
  22696. TP_PM_Defect.Remarks AS DefectRemarks ,
  22697. TP_MST_Jobs.JobsID AS Jobs,
  22698. TP_MST_Jobs.JobsName AS JobsText,
  22699. TP_MST_DefectFine.DefectFineID,
  22700. TP_MST_DefectFine.DefectFineCode AS DefectFineValue,
  22701. TP_PM_Defect.MissedUserID,
  22702. TP_PM_Defect.MissedUserCode,
  22703. TP_PM_Defect.MissedUserName,
  22704. TP_PM_Defect.DefectDeductionNum,
  22705. TP_PM_Defect.SpecialDefect,
  22706. TP_PM_Defect.CheckTime,
  22707. (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid)
  22708. FROM tp_pm_defectresponsible dp
  22709. INNER JOIN tp_hr_staff s
  22710. ON s.staffid = dp.staffid
  22711. where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames ,
  22712. ROWNUM-1 as TempCount
  22713. from TP_PM_Defect
  22714. left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID
  22715. left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID
  22716. where TP_PM_Defect.ProductionDataID = :ProductionDataID";
  22717. OracleParameter[] paras1 = new OracleParameter[]{
  22718. new OracleParameter(":ProductionDataID",Convert.ToInt32(dataTable.Tables[0].Rows[0]["ProductionDataID"])),
  22719. };
  22720. defectSet = oracleConn.GetSqlResultToDs(sqlString2, paras1);
  22721. if (defectSet != null && defectSet.Tables.Count > 0 && defectSet.Tables[0].Rows.Count > 0)
  22722. {
  22723. defectSet.Tables[0].TableName = "DefectTable";
  22724. returnDs.Tables.Add(defectSet.Tables[0].Copy());
  22725. }
  22726. }
  22727. }
  22728. //if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息
  22729. //{
  22730. //}
  22731. sre.Data = returnDs;
  22732. return sre;
  22733. }
  22734. catch (Exception ex)
  22735. {
  22736. throw ex;
  22737. }
  22738. finally
  22739. {
  22740. if (oracleConn.ConnState == ConnectionState.Open)
  22741. {
  22742. oracleConn.Close();
  22743. }
  22744. }
  22745. }
  22746. /// <summary>
  22747. /// 交坯验证条码(首节点)
  22748. /// </summary>
  22749. /// <param name="procedureID">工序ID</param>
  22750. /// <param name="barcode">产品条码</param>
  22751. /// <returns>DataSet</returns>
  22752. public static DataSet CheckBarcodeDeliverMud(int procedureID, string barcode, SUserInfo sUserInfo, bool isInn = false)
  22753. {
  22754. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22755. try
  22756. {
  22757. oracleConn.IgnoreCase = false;
  22758. oracleConn.Open();
  22759. // 2019-1016
  22760. if (!isInn)
  22761. {
  22762. //xuwei fix 2019-09-26 使用通用方法判定
  22763. //if (PMModuleLogicDAL.IsNodeBegin<IDBConnection>(oracleConn, barcode) == 0)
  22764. //{
  22765. // return CheckBarcode(procedureID, barcode, sUserInfo, true);
  22766. //}
  22767. string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid";
  22768. string NodeType = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + "";
  22769. if (NodeType == "1")
  22770. {
  22771. int isNodeBegin = IsNodeBegin<IDBConnection>(oracleConn, barcode);
  22772. if (isNodeBegin == 0)
  22773. {
  22774. ServiceResultEntity sre = CheckBarcode(procedureID, barcode, sUserInfo, true);
  22775. return sre.Data;
  22776. }
  22777. }
  22778. else
  22779. {
  22780. ServiceResultEntity sre = CheckBarcode(procedureID, barcode, sUserInfo, true);
  22781. return sre.Data;
  22782. }
  22783. }
  22784. string sql = "select barcodestatus,GroutingDailyDetailid from TP_PM_USEDBARCODE where BarCode='" + barcode + "'";
  22785. sql = "select barcodestatus,GroutingDailyDetailid from TP_PM_USEDBARCODE where BarCode=:barcode";
  22786. OracleParameter[] paras = new OracleParameter[]{
  22787. new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input),
  22788. };
  22789. DataSet ds = oracleConn.GetSqlResultToDs(sql, paras);
  22790. DataTable dtBarCode = CreateBarCodeResultTable();
  22791. DataSet returnDs = new DataSet();
  22792. DataRow dr = dtBarCode.NewRow();
  22793. dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = barcode;
  22794. if (ds != null && ds.Tables[0].Rows.Count == 0)
  22795. {
  22796. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]";
  22797. }
  22798. else
  22799. {
  22800. //不等于空的时候
  22801. if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1")
  22802. {
  22803. sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + barcode + "'";
  22804. string newbarcode = oracleConn.GetSqlResultToStr(sql);
  22805. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码已被替换,新条码为" + newbarcode;
  22806. }
  22807. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2")
  22808. {
  22809. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已成型报损";
  22810. }
  22811. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" ||
  22812. ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4")
  22813. {
  22814. //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已交坯";
  22815. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已在产";
  22816. }
  22817. else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "1")
  22818. {
  22819. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "";
  22820. string sqlString = @"select
  22821. tp_pm_GroutingDailyDetail.GoodsID,
  22822. tp_pm_GroutingDailyDetail.GoodsCode,
  22823. tp_pm_GroutingDailyDetail.GoodsName,
  22824. tp_pm_GroutingDailyDetail.UserID as GroutingUserID,
  22825. tp_pm_GroutingDailyDetail.UserCode as GroutingUserCode,
  22826. tp_mst_user.username as GroutingUserName,
  22827. tp_pm_GroutingDailyDetail.groutingcount as GroutingNum,
  22828. tp_pm_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  22829. tp_pm_GroutingDailyDetail.ispublicbody,
  22830. tp_pm_GroutingDailyDetail.Groutingdate,
  22831. tp_pm_GroutingDailyDetail.SpecialRepairFlag,
  22832. tp_mst_logo.logoid,
  22833. tp_mst_logo.logocode,
  22834. tp_mst_logo.logoname,
  22835. TP_MST_Goods.DeliverLimitCycle
  22836. from
  22837. tp_pm_GroutingDailyDetail
  22838. left join tp_mst_logo
  22839. on tp_pm_GroutingDailyDetail.logoid=tp_mst_logo.logoid
  22840. left join tp_mst_user
  22841. on tp_pm_GroutingDailyDetail.userid=tp_mst_user.userid
  22842. left join TP_MST_Goods
  22843. on tp_pm_GroutingDailyDetail.GoodsID=TP_MST_Goods.GoodsID
  22844. where tp_pm_GroutingDailyDetail.groutingdailydetailid=" + ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString();
  22845. //paras = new OracleParameter[]{
  22846. // new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()),
  22847. // };
  22848. ds = oracleConn.GetSqlResultToDs(sqlString, null);
  22849. if (ds != null && ds.Tables[0].Rows.Count > 0)
  22850. {
  22851. string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID";
  22852. paras = new OracleParameter[]{
  22853. new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()),
  22854. new OracleParameter(":ProcedureID",procedureID),
  22855. };
  22856. DataSet dsGoods = oracleConn.GetSqlResultToDs(sqlExistGoods, paras);
  22857. if (dsGoods.Tables[0].Rows[0][0].ToString() != "1")
  22858. {
  22859. dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode +
  22860. "]不可以经过该工序\n\r原因:条码对应的产品编码[" +
  22861. ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置";
  22862. }
  22863. else
  22864. {
  22865. dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString();
  22866. dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString();
  22867. dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString();
  22868. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  22869. dr[Constant.BarCodeResultTableColumns.out_groutingUserName.ToString()] = ds.Tables[0].Rows[0]["GroutingUserName"].ToString();
  22870. dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString();
  22871. dr[Constant.BarCodeResultTableColumns.out_groutingUserID.ToString()] = ds.Tables[0].Rows[0]["GroutingUserID"].ToString();
  22872. dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString();
  22873. dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString();
  22874. dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString();
  22875. dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0";
  22876. dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString();
  22877. dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString();
  22878. dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0";
  22879. dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString();
  22880. dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logocode"].ToString();
  22881. dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoname"].ToString();
  22882. dr[Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString()] = ds.Tables[0].Rows[0]["DeliverLimitCycle"].ToString();
  22883. // 首节点无需暂时字段
  22884. //barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString());
  22885. //barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString());
  22886. }
  22887. }
  22888. }
  22889. }
  22890. dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0;
  22891. dtBarCode.Rows.Add(dr);
  22892. returnDs.Tables.Add(dtBarCode);
  22893. return returnDs;
  22894. }
  22895. catch (Exception ex)
  22896. {
  22897. throw ex;
  22898. }
  22899. finally
  22900. {
  22901. if (oracleConn.ConnState == ConnectionState.Open)
  22902. {
  22903. oracleConn.Close();
  22904. }
  22905. }
  22906. }
  22907. /// <summary>
  22908. /// 获取干补标识
  22909. /// </summary>
  22910. /// <param name="barcode">产品条码</param>ram>
  22911. /// <returns>int</returns>
  22912. public static ServiceResultEntity GetSpecialRepairflagByBarcode(string barcode, SUserInfo sUserInfo)
  22913. {
  22914. ServiceResultEntity sre = new ServiceResultEntity();
  22915. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22916. try
  22917. {
  22918. con.Open();
  22919. string sqlString = @"select
  22920. SpecialRepairflag
  22921. from tp_pm_inproduction where barcode=:barcode
  22922. union
  22923. select
  22924. SpecialRepairflag from
  22925. tp_pm_inproductiontrash where barcode=:barcode
  22926. union
  22927. select
  22928. SpecialRepairflag from
  22929. tp_pm_finishedproduct where barcode=:barcode
  22930. ";
  22931. OracleParameter[] paras = new OracleParameter[]{
  22932. new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  22933. };
  22934. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  22935. return sre;
  22936. }
  22937. catch (Exception ex)
  22938. {
  22939. throw ex;
  22940. }
  22941. finally
  22942. {
  22943. if (con.ConnState == ConnectionState.Open)
  22944. {
  22945. con.Close();
  22946. }
  22947. }
  22948. }
  22949. /// <summary>
  22950. /// 获取产品完成工序的ID(PDA)
  22951. /// </summary>
  22952. /// <param name="barcode">产品条码</param>
  22953. /// <returns>int</returns>
  22954. public static ServiceResultEntity GetCompleteProcedureIDPDA(string barcode)
  22955. {
  22956. ServiceResultEntity sre = new ServiceResultEntity();
  22957. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  22958. try
  22959. {
  22960. con.Open();
  22961. string sqlString = @"select
  22962. FlowProcedureID as
  22963. CompleteProcedureID,
  22964. ProductionDataID,
  22965. ProcedureID,
  22966. OPTimeStamp,
  22967. to_char(OPTimeStamp,'DD-MM-YYHH12.MI.SS.FFAM') as ConvertOPTimeStamp
  22968. from TP_PM_InProduction
  22969. where
  22970. TP_PM_InProduction.BarCode=:BarCode
  22971. union
  22972. select
  22973. FlowProcedureID as
  22974. CompleteProcedureID,
  22975. ProductionDataID,
  22976. ProcedureID,
  22977. OPTimeStamp,
  22978. to_char(OPTimeStamp,'DD-MM-YYHH12.MI.SS.FFAM') as ConvertOPTimeStamp
  22979. from Tp_Pm_Inproductiontrash
  22980. where
  22981. Tp_Pm_Inproductiontrash.BarCode=:BarCode
  22982. ";
  22983. OracleParameter[] paras = new OracleParameter[]{
  22984. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  22985. };
  22986. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  22987. return sre;
  22988. }
  22989. catch (Exception ex)
  22990. {
  22991. throw ex;
  22992. }
  22993. finally
  22994. {
  22995. if (con.ConnState == ConnectionState.Open)
  22996. {
  22997. con.Close();
  22998. }
  22999. }
  23000. }
  23001. /// <summary>
  23002. /// 获取产品条码是否重烧
  23003. /// </summary>
  23004. /// <param name="barcode">产品条码</param>
  23005. /// <returns>Datase</returns>
  23006. public static ServiceResultEntity GetReFine(string barcode)
  23007. {
  23008. ServiceResultEntity sre = new ServiceResultEntity();
  23009. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23010. try
  23011. {
  23012. //获取窑炉管理数据
  23013. //string sqlString = "Select IsReFire from TP_PM_InProduction where barcode=:barcode";
  23014. string sqlString = "select IsReFire, IsLengBu from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode=:barcode)";
  23015. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  23016. {
  23017. new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode)
  23018. };
  23019. oracleConn.Open();
  23020. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  23021. oracleConn.Close();
  23022. return sre;
  23023. }
  23024. catch (Exception ex)
  23025. {
  23026. if (oracleConn.ConnState == ConnectionState.Open)
  23027. {
  23028. oracleConn.Close();
  23029. }
  23030. throw ex;
  23031. }
  23032. finally
  23033. {
  23034. if (oracleConn.ConnState == ConnectionState.Open)
  23035. {
  23036. oracleConn.Close();
  23037. }
  23038. }
  23039. }
  23040. /// <summary>
  23041. /// 获取次品产品条码允许编辑
  23042. /// </summary>
  23043. /// <param name="barcode">产品条码</param>
  23044. /// <returns>Datase</returns>
  23045. public static ServiceResultEntity GetSubstandardInfo(string barcode)
  23046. {
  23047. ServiceResultEntity sre = new ServiceResultEntity();
  23048. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23049. try
  23050. {
  23051. //获取窑炉管理数据
  23052. string sqlString = "Select barcode from TP_PM_InProductionTrash where barcode=:barcode";
  23053. Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[]
  23054. {
  23055. new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode)
  23056. };
  23057. oracleConn.Open();
  23058. sre.Data = oracleConn.GetSqlResultToDs(sqlString, oracleParameter);
  23059. oracleConn.Close();
  23060. return sre;
  23061. }
  23062. catch (Exception ex)
  23063. {
  23064. if (oracleConn.ConnState == ConnectionState.Open)
  23065. {
  23066. oracleConn.Close();
  23067. }
  23068. throw ex;
  23069. }
  23070. finally
  23071. {
  23072. if (oracleConn.ConnState == ConnectionState.Open)
  23073. {
  23074. oracleConn.Close();
  23075. }
  23076. }
  23077. }
  23078. /// <summary>
  23079. /// 根据条码获取窑炉窑车信息
  23080. /// </summary>
  23081. /// <param name="barcode">产品条码</param>
  23082. /// <returns>DataSet</returns>
  23083. public static ServiceResultEntity GetKilnCarByBarCode(string barcode)
  23084. {
  23085. ServiceResultEntity sre = new ServiceResultEntity();
  23086. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23087. try
  23088. {
  23089. con.Open();
  23090. // string sqlString = @"
  23091. // select
  23092. // TP_MST_KilnCar.KilnCarCode,
  23093. // TP_MST_Kiln.KilnCode,
  23094. // TP_MST_DataDictionary.Dictionaryvalue
  23095. // from TP_PM_KilnCarGoods
  23096. // left join TP_MST_KilnCar
  23097. // on TP_PM_KilnCarGoods.KilnCarID=TP_MST_KilnCar.Kilncarid
  23098. // left join TP_MST_Kiln
  23099. // on TP_MST_KilnCar.Kilnid=TP_MST_Kiln.Kilnid
  23100. // left join TP_MST_DataDictionary
  23101. // on TP_PM_KilnCarGoods.KilnCarPosition=TP_MST_DataDictionary.DictionaryID
  23102. // where TP_PM_KilnCarGoods.Barcode=:Barcode
  23103. // ";
  23104. string sqlString = @"
  23105. select
  23106. TP_PM_InProduction.KilnCarCode,
  23107. TP_PM_InProduction.KilnCode,
  23108. TP_MST_DataDictionary.Dictionaryvalue
  23109. from TP_PM_InProduction
  23110. inner join TP_MST_DataDictionary
  23111. on TP_PM_InProduction.KilnCarPosition=TP_MST_DataDictionary.DictionaryID
  23112. where TP_PM_InProduction.Barcode=:Barcode
  23113. ";
  23114. OracleParameter[] paras = new OracleParameter[]{
  23115. new OracleParameter(":Barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  23116. };
  23117. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23118. return sre;
  23119. }
  23120. catch (Exception ex)
  23121. {
  23122. throw ex;
  23123. }
  23124. finally
  23125. {
  23126. if (con.ConnState == ConnectionState.Open)
  23127. {
  23128. con.Close();
  23129. }
  23130. }
  23131. }
  23132. /// <summary>
  23133. /// 由产品条码获取注浆信息
  23134. /// </summary>
  23135. /// <param name="barcode">产品条码</param>
  23136. /// <returns>DataSet</returns>
  23137. public static ServiceResultEntity GetGroutingProducttByBarCode(string barcode)
  23138. {
  23139. ServiceResultEntity sre = new ServiceResultEntity();
  23140. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23141. try
  23142. {
  23143. con.Open();
  23144. string sqlString = @"select
  23145. TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode,
  23146. TP_PM_GroutingDailyDetail.GroutingCount as GroutingNum,
  23147. TP_PM_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  23148. TP_MST_Logo.logoid,
  23149. TP_MST_Logo.logocode,
  23150. TP_MST_Logo.logoname,
  23151. (select tp_pm_inproduction.ispublicbody from
  23152. tp_pm_inproduction where tp_pm_inproduction.BarCode=:barcode) as ispublicbody,
  23153. (select tp_pm_inproductiontrash.ispublicbody from
  23154. tp_pm_inproductiontrash where tp_pm_inproductiontrash.BarCode=:barcode) as ispublicbodyTrach,
  23155. TP_PM_GroutingDailyDetail.Groutingdate
  23156. from TP_PM_GroutingDailyDetail
  23157. left join TP_MST_Logo
  23158. on TP_PM_GroutingDailyDetail.logoid=TP_MST_Logo.logoid
  23159. where TP_PM_GroutingDailyDetail.BarCode=:barcode";
  23160. OracleParameter[] paras = new OracleParameter[]{
  23161. new OracleParameter(":barcode",barcode),
  23162. };
  23163. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23164. return sre;
  23165. }
  23166. catch (Exception ex)
  23167. {
  23168. throw ex;
  23169. }
  23170. finally
  23171. {
  23172. if (con.ConnState == ConnectionState.Open)
  23173. {
  23174. con.Close();
  23175. }
  23176. }
  23177. }
  23178. /// <summary>
  23179. /// 成检时获取条码的产品信息(成检(正品)--报损-->干补-->成检)
  23180. /// </summary>
  23181. /// <param name="barcode">产品条码</param>
  23182. /// <returns>int</returns>
  23183. public static ServiceResultEntity GetGoodsInfoBybarcode(string barcode)
  23184. {
  23185. ServiceResultEntity sre = new ServiceResultEntity();
  23186. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23187. try
  23188. {
  23189. con.Open();
  23190. string sqlString = @"select
  23191. GoodsID,GoodsCode,GoodsName,
  23192. (
  23193. select
  23194. TP_PM_InProduction.SpecialRepairFlag
  23195. from TP_PM_InProduction
  23196. where TP_PM_InProduction.BarCode=:BarCode
  23197. ) SpecialRepairFlag,
  23198. (
  23199. select
  23200. TP_PM_InProduction.IsReFire
  23201. from TP_PM_InProduction
  23202. where TP_PM_InProduction.BarCode=:BarCode
  23203. ) IsReFire,
  23204. tp_mst_logo.logoid,
  23205. tp_mst_logo.logocode,
  23206. tp_mst_logo.logoname,
  23207. TP_PM_GroutingDailyDetail.UserCode,
  23208. TP_PM_GroutingDailyDetail.GroutingMouldCode as MouldCode,
  23209. TP_PM_GroutingDailyDetail.GroutingCount,
  23210. TP_PM_GroutingDailyDetail.GroutingDate
  23211. from TP_PM_GroutingDailyDetail
  23212. left join tp_mst_logo
  23213. on TP_PM_GroutingDailyDetail.logoid=tp_mst_logo.logoid
  23214. where
  23215. TP_PM_GroutingDailyDetail.BarCode=:BarCode
  23216. ";
  23217. OracleParameter[] paras = new OracleParameter[]{
  23218. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  23219. };
  23220. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23221. return sre;
  23222. }
  23223. catch (Exception ex)
  23224. {
  23225. throw ex;
  23226. }
  23227. finally
  23228. {
  23229. if (con.ConnState == ConnectionState.Open)
  23230. {
  23231. con.Close();
  23232. }
  23233. }
  23234. }
  23235. /// <summary>
  23236. /// 成检时获取条码的产品信息
  23237. /// </summary>
  23238. /// <param name="barcode">产品条码</param>
  23239. /// <returns>int</returns>
  23240. public static ServiceResultEntity GetProductionID(string barcode)
  23241. {
  23242. ServiceResultEntity sre = new ServiceResultEntity();
  23243. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23244. try
  23245. {
  23246. con.Open();
  23247. //string sqlString = @"select t.procedureid from TP_PM_INPRODUCTION t
  23248. // where t.BarCode =:BarCode ";
  23249. string sqlString = @"select tp.finishedcheckprocedureid as procedureid,t.procedureid as finishedcheckprocedureid from TP_PM_INPRODUCTION t
  23250. left join tp_pc_procedure tp on t.procedureid = tp.procedureid
  23251. where t.barcode = :BarCode ";
  23252. OracleParameter[] paras = new OracleParameter[]{
  23253. new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input),
  23254. };
  23255. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23256. return sre;
  23257. }
  23258. catch (Exception ex)
  23259. {
  23260. throw ex;
  23261. }
  23262. finally
  23263. {
  23264. if (con.ConnState == ConnectionState.Open)
  23265. {
  23266. con.Close();
  23267. }
  23268. }
  23269. }
  23270. /// <summary>
  23271. /// 根据所选工号对应的工种,查出缺陷责任员工
  23272. /// </summary>
  23273. /// <param name="jobs">工种ID</param>
  23274. /// <param name="userid">用户ID</param>
  23275. /// <param name="sUserInfo">用户基本信息</param>
  23276. /// <returns>DataSet</returns>
  23277. public static ServiceResultEntity GetDutyStaffByUserJobsID(int jobs, SUserInfo sUserInfo, int userid)
  23278. {
  23279. ServiceResultEntity sre = new ServiceResultEntity();
  23280. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23281. try
  23282. {
  23283. con.Open();
  23284. string sqlString = @"select
  23285. TP_HR_Staff.StaffID,TP_HR_Staff.StaffCode,TP_HR_Staff.StaffName,TP_HR_Staff.StaffStatus,TP_MST_UserStaff.UJobsID as SJobsID
  23286. from TP_MST_UserStaff
  23287. left join TP_HR_Staff
  23288. on TP_MST_UserStaff.Staffid=TP_HR_Staff.Staffid
  23289. where TP_MST_UserStaff.Ujobsid=:jobs and TP_MST_UserStaff.Userid=:userid
  23290. ";
  23291. OracleParameter[] paras = new OracleParameter[]{
  23292. new OracleParameter(":jobs",OracleDbType.Int32, jobs,ParameterDirection.Input),
  23293. new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
  23294. };
  23295. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23296. return sre;
  23297. }
  23298. catch (Exception ex)
  23299. {
  23300. throw ex;
  23301. }
  23302. finally
  23303. {
  23304. if (con.ConnState == ConnectionState.Open)
  23305. {
  23306. con.Close();
  23307. }
  23308. }
  23309. }
  23310. /// <summary>
  23311. /// 根据所选工号,查出漏检责任员工
  23312. /// </summary>
  23313. /// <param name="userid">工号</param>
  23314. /// <param name="sUserInfo">用户基本信息</param>
  23315. /// <returns>DataSet</returns>
  23316. public static ServiceResultEntity GetMissedStaffByUserID(int userid, SUserInfo sUserInfo)
  23317. {
  23318. ServiceResultEntity sre = new ServiceResultEntity();
  23319. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23320. try
  23321. {
  23322. con.Open();
  23323. string sqlString = @"select
  23324. TP_HR_Staff.StaffID,TP_HR_Staff.StaffCode,TP_HR_Staff.StaffName,TP_HR_Staff.StaffStatus,TP_MST_UserStaff.UJobsID as UJobsID,TP_HR_Staff.Jobs as SJobsID
  23325. from TP_MST_UserStaff
  23326. left join TP_HR_Staff
  23327. on TP_MST_UserStaff.Staffid=TP_HR_Staff.Staffid
  23328. where TP_MST_UserStaff.Userid=:userid
  23329. ";
  23330. OracleParameter[] paras = new OracleParameter[]{
  23331. new OracleParameter(":userid",OracleDbType.Int32, userid,ParameterDirection.Input),
  23332. };
  23333. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23334. return sre;
  23335. }
  23336. catch (Exception ex)
  23337. {
  23338. throw ex;
  23339. }
  23340. finally
  23341. {
  23342. if (con.ConnState == ConnectionState.Open)
  23343. {
  23344. con.Close();
  23345. }
  23346. }
  23347. }
  23348. /// <summary>
  23349. /// 数据字典
  23350. /// </summary>
  23351. /// <param name="dicType"></param>
  23352. /// <returns></returns>
  23353. public static ServiceResultEntity GetDictionaryData(string dicType, string isLeaf)
  23354. {
  23355. ServiceResultEntity sre = new ServiceResultEntity();
  23356. IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23357. try
  23358. {
  23359. string sqlString = string.Empty;
  23360. if ("1".Equals(isLeaf))
  23361. {
  23362. sqlString = "SELECT DICTIONARYID,DICTIONARYVALUE FROM Tp_Mst_Datadictionary WHERE VALUEFLAG = '1' AND ISLEAF = '1' AND DICTIONARYTYPE = :dicType ";
  23363. }
  23364. else
  23365. {
  23366. sqlString = "SELECT DICTIONARYID,DICTIONARYVALUE FROM Tp_Mst_Datadictionary WHERE VALUEFLAG = '1' AND DICTIONARYTYPE = :dicType ";
  23367. }
  23368. OracleParameter[] paras = new OracleParameter[]
  23369. {
  23370. new OracleParameter(":dicType", OracleDbType.Varchar2, dicType, ParameterDirection.Input),
  23371. };
  23372. sre.Data = con.GetSqlResultToDs(sqlString, paras);
  23373. return sre;
  23374. }
  23375. catch (Exception ex)
  23376. {
  23377. throw ex;
  23378. }
  23379. finally
  23380. {
  23381. if (con.ConnState == ConnectionState.Open)
  23382. {
  23383. con.Close();
  23384. }
  23385. }
  23386. }
  23387. #endregion
  23388. #region 一览页面查询
  23389. /// <summary>
  23390. /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据
  23391. /// </summary>
  23392. /// <param name="searchEntity">生产数据实体类</param>
  23393. /// <param name="user">用户基本信息</param>
  23394. /// <returns>DataTable</returns>
  23395. public static ServiceResultEntity GetProductionData(SearchProductionDataEntity searchEntity, SUserInfo user)
  23396. {
  23397. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23398. ServiceResultEntity sre = new ServiceResultEntity();
  23399. string sqlString = "";
  23400. //IDataParameter[] paras = null;
  23401. List<OracleParameter> parameters = new List<OracleParameter>();
  23402. try
  23403. {
  23404. sqlString = @"SELECT DISTINCT t.finishedcheckprocedureid
  23405. FROM tp_pc_procedure t
  23406. WHERE t.finishedcheckprocedureid IS NOT NULL ";
  23407. DataSet ProcedureIDSets = oracleConn.GetSqlResultToDs(sqlString);
  23408. string id = "";
  23409. if (ProcedureIDSets != null && ProcedureIDSets.Tables.Count > 0 && ProcedureIDSets.Tables[0].Rows.Count > 0)
  23410. {
  23411. for (int i = 0; i < ProcedureIDSets.Tables[0].Rows.Count; i++)
  23412. {
  23413. string finishedcheckprocedureid = ProcedureIDSets.Tables[0].Rows[i]["finishedcheckprocedureid"]+"";
  23414. if (string.IsNullOrEmpty(id))
  23415. {
  23416. id += finishedcheckprocedureid;
  23417. }
  23418. else
  23419. {
  23420. id += "," + finishedcheckprocedureid;
  23421. }
  23422. }
  23423. }
  23424. if (id.Length >0)
  23425. {
  23426. sqlString = @"SELECT
  23427. TP_PM_PRODUCTIONDATA.CREATETIME
  23428. ,TP_PM_PRODUCTIONDATA.UPDATETIME
  23429. ,TP_PM_PRODUCTIONDATA.PRODUCTIONDATAID
  23430. ,TP_PM_PRODUCTIONDATA.PRODUCTIONLINECODE
  23431. ,TP_PM_PRODUCTIONDATA.BARCODE
  23432. ,TP_PM_PRODUCTIONDATA.GOODSCODE
  23433. ,TP_PM_PRODUCTIONDATA.GOODSNAME
  23434. ,TP_PM_PRODUCTIONDATA.USERCODE
  23435. ,TP_PM_PRODUCTIONDATA.ISPUBLICBODY
  23436. ,DECODE(TP_PM_PRODUCTIONDATA.PROCEDUREMODEL
  23437. ,'1 '
  23438. ,'计数模型'
  23439. ,'检验模型') AS PROCEDUREMODEL
  23440. ,TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPENAME
  23441. ,DECODE(TP_PM_PRODUCTIONDATA.PIECETYPE
  23442. ,'1'
  23443. ,'不计件'
  23444. ,'同工种策略') AS PIECETYPE
  23445. ,TP_PM_PRODUCTIONDATA.ISREWORKED
  23446. ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSGRADE
  23447. ,TP_MST_ORGANIZATION.ORGANIZATIONNAME
  23448. ,TP_PM_PRODUCTIONDATA.REMARKS
  23449. ,TP_PM_PRODUCTIONDATA.KILNID
  23450. ,TP_PM_PRODUCTIONDATA.KILNCODE
  23451. ,TP_PM_PRODUCTIONDATA.KILNNAME
  23452. ,TP_PM_PRODUCTIONDATA.KILNCARID
  23453. ,TP_PM_PRODUCTIONDATA.KILNCARCODE
  23454. ,TP_PM_PRODUCTIONDATA.KILNCARNAME
  23455. ,TP_PM_PRODUCTIONDATA.KILNCARPOSITION
  23456. ,TP_PM_PRODUCTIONDATA.KILNCARBATCHNO
  23457. ,TP_MST_DATADICTIONARY.DICTIONARYVALUE KILNCARPOSITIONNAME
  23458. ,TP_MST_GOODSTYPE.GOODSTYPENAME
  23459. ,TP_MST_USER.USERCODE AS BARUSERCODE
  23460. ,TP_PM_PRODUCTIONDATA.GROUTINGUSERCODE
  23461. ,TP_PM_PRODUCTIONDATA.GROUTINGMOULDCODE
  23462. ,TP_PM_PRODUCTIONDATA.GROUTINGDATE
  23463. ,TP_PM_PRODUCTIONDATA.GROUTINGNUM
  23464. ,TP_MST_USER.USERNAME AS BARUSERNAME
  23465. ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSLEVELTYPE
  23466. ,REPLACE((TP_MST_LOGO.LOGONAME || '[' || TP_MST_LOGO.LOGOCODE || ']')
  23467. ,'[]'
  23468. ,'') AS LOGOCODENAME
  23469. ,TP_PM_PRODUCTIONDATA.SPECIALREPAIRFLAG
  23470. ,PCP.PROCEDURENAME INPROCEDURENAME
  23471. FROM TP_PM_PRODUCTIONDATA
  23472. LEFT JOIN TP_PM_INPRODUCTION INP
  23473. ON INP.BARCODE = TP_PM_PRODUCTIONDATA.BARCODE
  23474. LEFT JOIN TP_PC_PROCEDURE PCP
  23475. ON PCP.PROCEDUREID = INP.PROCEDUREID
  23476. LEFT JOIN TP_SYS_PROCEDUREMODELTYPE
  23477. ON TP_PM_PRODUCTIONDATA.MODELTYPE =
  23478. TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPEID
  23479. LEFT JOIN TP_MST_ORGANIZATION
  23480. ON TP_PM_PRODUCTIONDATA.ORGANIZATIONID =
  23481. TP_MST_ORGANIZATION.ORGANIZATIONID
  23482. LEFT JOIN TP_MST_DATADICTIONARY
  23483. ON TP_PM_PRODUCTIONDATA.KILNCARPOSITION =
  23484. TP_MST_DATADICTIONARY.DICTIONARYID
  23485. LEFT JOIN TP_MST_GOODSLEVEL
  23486. ON TP_PM_PRODUCTIONDATA.GOODSLEVELID =
  23487. TP_MST_GOODSLEVEL.GOODSLEVELID
  23488. LEFT JOIN TP_MST_GOODS
  23489. ON TP_PM_PRODUCTIONDATA.GOODSID = TP_MST_GOODS.GOODSID
  23490. LEFT JOIN TP_MST_GOODSTYPE
  23491. ON TP_MST_GOODS.GOODSTYPEID = TP_MST_GOODSTYPE.GOODSTYPEID
  23492. LEFT JOIN TP_MST_USER
  23493. ON TP_PM_PRODUCTIONDATA.CREATEUSERID = TP_MST_USER.USERID
  23494. LEFT JOIN TP_MST_LOGO
  23495. ON TP_PM_PRODUCTIONDATA.LOGOID = TP_MST_LOGO.LOGOID
  23496. WHERE TP_PM_PRODUCTIONDATA.VALUEFLAG = '1'
  23497. AND TP_PM_PRODUCTIONDATA.FINISHEDPROCEDUREID IS NOT NULL";
  23498. sqlString += " AND TP_PM_PRODUCTIONDATA.PROCEDUREID in (" + id + ") "
  23499. + " AND(TP_PM_PRODUCTIONDATA.CREATETIME >= :begindate AND "
  23500. +" TP_PM_PRODUCTIONDATA.CREATETIME <= :enddate) ";
  23501. parameters.Add(new OracleParameter(":begindate", OracleDbType.Date, searchEntity.BeginDate, ParameterDirection.Input));
  23502. parameters.Add(new OracleParameter(":enddate", OracleDbType.Date, searchEntity.EndDate, ParameterDirection.Input));
  23503. if (!string.IsNullOrEmpty(searchEntity.BarCode))
  23504. {
  23505. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.BARCODE = :barCode ";
  23506. parameters.Add(new OracleParameter(":barCode", OracleDbType.Varchar2, searchEntity.BarCode, ParameterDirection.Input));
  23507. }
  23508. if (!string.IsNullOrEmpty(searchEntity.GoodsCode))
  23509. {
  23510. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.GOODSCODE, :goodsCode) > 0 ";
  23511. parameters.Add(new OracleParameter(":goodsCode", OracleDbType.Varchar2, searchEntity.GoodsCode, ParameterDirection.Input));
  23512. }
  23513. if (!string.IsNullOrEmpty(searchEntity.GoodsName))
  23514. {
  23515. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.GOODSNAME, :goodsName) > 0 ";
  23516. parameters.Add(new OracleParameter(":goodsName", OracleDbType.Varchar2, searchEntity.GoodsName, ParameterDirection.Input));
  23517. }
  23518. if (!string.IsNullOrEmpty(searchEntity.UserCode))
  23519. {
  23520. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.USERCODE, :userCode) > 0 ";
  23521. parameters.Add(new OracleParameter(":userCode", OracleDbType.Varchar2, searchEntity.UserCode, ParameterDirection.Input));
  23522. }
  23523. if (!string.IsNullOrEmpty(searchEntity.OrganizationID + ""))
  23524. {
  23525. sqlString = sqlString + " AND ( :organizationID = 0 OR TP_PM_PRODUCTIONDATA.ORGANIZATIONID = :organizationID ) ";
  23526. parameters.Add(new OracleParameter(":organizationID", OracleDbType.Int32, searchEntity.OrganizationID, ParameterDirection.Input));
  23527. }
  23528. if (!string.IsNullOrEmpty(searchEntity.Remarks))
  23529. {
  23530. sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.REMARKS, :remarks) > 0 ";
  23531. parameters.Add(new OracleParameter(":remarks", OracleDbType.Varchar2, searchEntity.Remarks, ParameterDirection.Input));
  23532. }
  23533. if (!string.IsNullOrEmpty(searchEntity.IsRework))
  23534. {
  23535. sqlString = sqlString + " AND INSTR( :isReworked, TP_PM_PRODUCTIONDATA.ISREWORKED) > 0 ";
  23536. parameters.Add(new OracleParameter(":isReworked", OracleDbType.Varchar2, searchEntity.IsRework, ParameterDirection.Input));
  23537. }
  23538. if (!string.IsNullOrEmpty(searchEntity.KilnCode))
  23539. {
  23540. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCODE = :pKilnCode ";
  23541. parameters.Add(new OracleParameter(":pKilnCode", OracleDbType.Varchar2, searchEntity.KilnCode, ParameterDirection.Input));
  23542. }
  23543. if (!string.IsNullOrEmpty(searchEntity.KilnCarCode))
  23544. {
  23545. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARCODE = :pKilnCarCode ";
  23546. parameters.Add(new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2, searchEntity.KilnCarCode, ParameterDirection.Input));
  23547. }
  23548. if (!string.IsNullOrEmpty(searchEntity.KilnCarPosition + ""))
  23549. {
  23550. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARPOSITION = :pKilnCarPosition ";
  23551. parameters.Add(new OracleParameter(":pKilnCarPosition", OracleDbType.Int32, searchEntity.KilnCarPosition, ParameterDirection.Input));
  23552. }
  23553. if (!string.IsNullOrEmpty(searchEntity.KilnCarPosition + ""))
  23554. {
  23555. sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARPOSITION = :pKilnCarPosition ";
  23556. parameters.Add(new OracleParameter(":pKilnCarPosition", OracleDbType.Int32, searchEntity.KilnCarPosition, ParameterDirection.Input));
  23557. }
  23558. if (!string.IsNullOrEmpty(user.UserID + ""))
  23559. {
  23560. sqlString = sqlString + @"
  23561. AND (
  23562. TP_PM_PRODUCTIONDATA.CREATEUSERID = : userID
  23563. OR EXISTS (
  23564. SELECT
  23565. 1
  23566. FROM
  23567. TP_MST_USERPURVIEW UP
  23568. WHERE
  23569. UP.PURVIEWTYPE = 4
  23570. AND ( UP.PURVIEWID = - 1 OR UP.PURVIEWID = TP_PM_PRODUCTIONDATA.CREATEUSERID )
  23571. AND UP.USERID = : userID
  23572. )
  23573. ) ";
  23574. parameters.Add(new OracleParameter(":userID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  23575. }
  23576. if (!string.IsNullOrEmpty(searchEntity.GoodsTypeCode))
  23577. {
  23578. sqlString = sqlString + " AND INSTR(TP_MST_GOODSTYPE.GOODSTYPECODE, :goodstypecode) > 0 ";
  23579. parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, searchEntity.GoodsTypeCode, ParameterDirection.Input));
  23580. }
  23581. oracleConn.Open();
  23582. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, parameters.ToArray());
  23583. sre.Data = ds;
  23584. }
  23585. return sre;
  23586. }
  23587. catch (Exception ex)
  23588. {
  23589. throw ex;
  23590. }
  23591. finally
  23592. {
  23593. if (oracleConn.ConnState == ConnectionState.Open)
  23594. {
  23595. oracleConn.Close();
  23596. }
  23597. }
  23598. }
  23599. /// <summary>
  23600. /// 撤销
  23601. /// </summary>
  23602. /// <param name="procedureID">工序ID</param>
  23603. /// <param name="productionDataEntitys">生产数据集</param>
  23604. /// <param name="sUserInfo">用户基本信息</param>
  23605. /// <returns>string</returns>
  23606. public static ServiceResultEntity FinishedCancleData(int productionDataID, SUserInfo sUserInfo)
  23607. {
  23608. ServiceResultEntity sre = new ServiceResultEntity();
  23609. string errMsg = "";
  23610. IDBTransaction oracleTrConn = ClsDbFactory.CreateDBTransaction(DataBaseType.ORACLE, DataManager.ConnectionString);
  23611. try
  23612. {
  23613. oracleTrConn.Connect();
  23614. string sqlString =
  23615. "UPDATE TP_PM_ProductionDataIn t\n" +
  23616. " SET t.valueFlag = '0'\n" +
  23617. " WHERE t.productiondataid = " + productionDataID;
  23618. sre.OtherStatus = oracleTrConn.ExecuteNonQuery(sqlString);
  23619. // 没有错误 提交事务
  23620. if (string.IsNullOrEmpty(errMsg))
  23621. {
  23622. oracleTrConn.Commit();
  23623. }
  23624. }
  23625. catch (Exception ex)
  23626. {
  23627. oracleTrConn.Rollback();
  23628. throw ex;
  23629. }
  23630. finally
  23631. {
  23632. // 释放资源
  23633. if (oracleTrConn.ConnState == System.Data.ConnectionState.Open)
  23634. {
  23635. oracleTrConn.Disconnect();
  23636. }
  23637. }
  23638. return sre;
  23639. }
  23640. #endregion
  23641. #region 撤销接口-查询
  23642. /// <summary>
  23643. /// 撤销接口-查询
  23644. /// </summary>
  23645. /// <param name="searchEntity">生产数据实体类</param>
  23646. /// <param name="user">用户基本信息</param>
  23647. /// <returns>DataTable</returns>
  23648. public static ServiceResultEntity GetFinishedCancleData(string barCode, SUserInfo user)
  23649. {
  23650. IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
  23651. ServiceResultEntity sre = new ServiceResultEntity();
  23652. string sqlString = "";
  23653. List<OracleParameter> parameters = new List<OracleParameter>();
  23654. try
  23655. {
  23656. sqlString = @"SELECT to_char( TP_PM_PRODUCTIONDATA.PRODUCTIONDATAID) as PRODUCTIONDATAID
  23657. ,TP_MST_USER.USERNAME AS BARUSERNAME
  23658. ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSLEVELTYPE
  23659. ,PCP.PROCEDURENAME INPROCEDURENAME
  23660. ,TP_MST_GOODSTYPE.GOODSTYPENAME
  23661. FROM TP_PM_PRODUCTIONDATA
  23662. LEFT JOIN TP_PM_INPRODUCTION INP
  23663. ON INP.BARCODE = TP_PM_PRODUCTIONDATA.BARCODE
  23664. LEFT JOIN TP_PC_PROCEDURE PCP
  23665. ON PCP.PROCEDUREID = INP.PROCEDUREID
  23666. LEFT JOIN TP_MST_GOODSLEVEL
  23667. ON TP_PM_PRODUCTIONDATA.GOODSLEVELID =
  23668. TP_MST_GOODSLEVEL.GOODSLEVELID
  23669. LEFT JOIN TP_MST_GOODS
  23670. ON TP_PM_PRODUCTIONDATA.GOODSID = TP_MST_GOODS.GOODSID
  23671. LEFT JOIN TP_MST_GOODSTYPE
  23672. ON TP_MST_GOODS.GOODSTYPEID = TP_MST_GOODSTYPE.GOODSTYPEID
  23673. LEFT JOIN TP_MST_USER
  23674. ON TP_PM_PRODUCTIONDATA.CREATEUSERID = TP_MST_USER.USERID
  23675. WHERE TP_PM_PRODUCTIONDATA.VALUEFLAG = '1'
  23676. AND TP_PM_PRODUCTIONDATA.FINISHEDPROCEDUREID IS NOT NULL
  23677. AND TP_PM_PRODUCTIONDATA.BARCODE = :barCode
  23678. ";
  23679. parameters.Add(new OracleParameter(":barCode", OracleDbType.Varchar2, barCode, ParameterDirection.Input));
  23680. if (!string.IsNullOrEmpty(user.UserID + ""))
  23681. {
  23682. sqlString = sqlString + @"
  23683. AND (
  23684. TP_PM_PRODUCTIONDATA.CREATEUSERID = :userID
  23685. OR EXISTS (
  23686. SELECT
  23687. 1
  23688. FROM
  23689. TP_MST_USERPURVIEW UP
  23690. WHERE
  23691. UP.PURVIEWTYPE = 4
  23692. AND ( UP.PURVIEWID = - 1 OR UP.PURVIEWID = TP_PM_PRODUCTIONDATA.CREATEUSERID )
  23693. AND UP.USERID = :userID
  23694. )
  23695. ) ";
  23696. parameters.Add(new OracleParameter(":userID", OracleDbType.Int32, user.UserID, ParameterDirection.Input));
  23697. }
  23698. sqlString = sqlString + @" order by TP_PM_PRODUCTIONDATA.CREATETIME desc ";
  23699. oracleConn.Open();
  23700. DataSet ds = oracleConn.GetSqlResultToDs(sqlString, parameters.ToArray());
  23701. sre.Data = ds;
  23702. return sre;
  23703. }
  23704. catch (Exception ex)
  23705. {
  23706. throw ex;
  23707. }
  23708. finally
  23709. {
  23710. if (oracleConn.ConnState == ConnectionState.Open)
  23711. {
  23712. oracleConn.Close();
  23713. }
  23714. }
  23715. }
  23716. #endregion
  23717. }
  23718. }