| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235 |
- <?php
- namespace app\api\controller;
- use think\console\command\make\Model;
- use think\Controller;
- use think\Db;
- use think\Request;
- use think\Route;
- use think\Session;
- //第三屏数据
- class Third extends Controller{
- //开始时间方法--当年-01-01 00:00:00
- public function start_time(){
- return gettimeinfo();
- }
- //结束时间方法--当年-12-31 23:59:59
- public function end_time(){
- return gettimeinfo(1);
- }
- //开始时间方法--去年-01-01 00:00:00
- public function qstart_time(){
- return getLastYear();
- }
- //结束时间方法--去年-12-31 23:59:59
- public function qend_time(){
- return getLastYear(1);
- }
- /**
- * 第三屏第一页 实时生产进度看板
- */
- //实时生产进度
- //未审核未提交、已提交待生产、已提交已生产->缓存
- public function scztone_redis(){
- $redis = redis();
- $redis_key = md5('scztone_redis');
- $sql = "SELECT
- dd.订单状态,
- dd.订单数,
- ROUND(dd.纸令数, 0) AS 纸令数,
- dd.册数,
- CAST(zd.已装册数 AS SIGNED) AS 已装册数,
- CAST(zd.未装册数 AS SIGNED) AS 未装册数,
- CAST(ys.已印纸令 AS SIGNED) AS 已印纸令,
- CAST(ys.未印纸令 AS SIGNED) AS 未印纸令
- FROM (SELECT hz.订单状态,
- Count(hz.订单状态)订单数,
- Sum(hz.NZDLS) 纸令数,
- Sum(hz.NCS) 册数
- FROM (SELECT a.CCYDH,
- a.CYJMC,
- a.CYJLX,
- a.DCYRQ,
- a.DJFRQ,
- a.CHY,
- zds.NCS,
- a.ICYDSTATE,
- CASE
- WHEN a.ICYDTYPE = 2 THEN '零活订单'
- WHEN a.ICYDTYPE = 1 THEN '书刊订单'
- ELSE '其他'
- END 订单类型,
- yss.NZDLS,
- CASE
- WHEN a.iCommited = 0 THEN '未提交,未审核'
- WHEN a.iCommited = 1 THEN '已审核,已提交生产'
- ELSE '其他'
- END 订单状态
- FROM mcyd a
- LEFT JOIN (SELECT a1.CCYDH,
- a1.NZDLS,
- a1.iCommited
- FROM mcyd a1
- WHERE a1.CHY <> '集团教材外')yss
- ON a.CCYDH = yss.CCYDH
- LEFT JOIN (SELECT a2.CCYDH,
- a2.NCS,
- a2.iCommited
- FROM mcyd a2
- WHERE a2.CHY <> '集团教材外'
- AND a2.cdf <> '散装'
- AND a2.cdf <> '单片')zds
- ON a.CCYDH = zds.CCYDH
- WHERE a.ICYDID > 0
- AND a.iCydState <> -1
- AND a.lwcbs = 0
- AND a.ICYDSTATE > -1
-
- )hz
- GROUP BY hz.订单状态)dd
- LEFT JOIN (SELECT '已审核,已提交生产' AS 订单状态,
- Sum(hz.纸令) 纸令,
- Sum(hz.发外数量) 发外令数,
- Sum(hz.纸令) - Sum(hz.发外数量) 本厂应生产纸令,
- Sum(hz.已印) 已印纸令,
- Sum(hz.纸令) - Sum(hz.发外数量) - Sum(hz.已印) 未印纸令
- FROM (SELECT hj.承印日期,
- hj.订单号,
- hj.印件名称,
- hj.开本,
- hj.订法,
- hj.业务单位名称,
- hj.印件类型,
- hj.活源,
- hj.纸令,
- hj.已印,
- hj.发外数量,
- hj.未印量
- FROM (SELECT IFnull(LWCBS, 0) 完工,
- DATE_FORMAT(cyd.dCyrq, '%Y-%m-%d') AS 承印日期,
- cyd.ccydh AS 订单号,
- cyd.cyjmc AS 印件名称,
- cyd.czwkb 开本,
- cyd.cdf AS 订法,
- cyd.CYWDWMC AS 业务单位名称,
- cyd.CYJLX AS 印件类型,
- cyd.CHY AS 活源,
- cyd.NZDLS AS 纸令,
- yy.已印数 已印,
- IFnull(t.数量, 0) 发外数量,
- CASE
- WHEN cyd.nzdls - yy.已印数 - IFnull(t.数量, 0) < 20 THEN 0
- ELSE Round(cyd.nzdls - yy.已印数 - IFnull(t.数量, 0), 0)
- END 未印量
- FROM mcyd cyd
- LEFT JOIN (SELECT
- D3.订单号 AS 订单号,
- SUM(D3.已印纸令) AS 已印数
- FROM
- (
- SELECT
- a.ccydh AS 订单号,
- COALESCE(SUM(
- CASE
- WHEN c.dFinishsl > c.NGZL * 1.5 THEN c.dFinishsl / 2
- ELSE c.dFinishsl
- END / 1000), 0) AS 已印纸令
- FROM
- mcyd a
- LEFT JOIN (
- SELECT
- cd.id,
- cd.icydid,
- cd.CDXMC,
- cd.csc,
- yscp.cyfa
- FROM
- scyddx cd
- LEFT JOIN YSCPDXXX yscp ON yscp.dxid = cd.id
- ) DX ON a.ICYDID = dx.ICYDID
- LEFT JOIN YSJZZYFK ZYFK ON DX.id = ZYFK.Cyddxid
- LEFT JOIN scydgy c ON a.ICYDID = c.ICYDID AND dx.CDXMC = c.CDXMC
- WHERE
- a.ICYDSTATE >= 0
- AND a.icydid > 0
- AND cyfa <> ''
- AND (cgymc = '平印' OR cgymc = '轮印')
- AND a.chy <> '集团教材外'
- GROUP BY
- a.ccydh, dx.CSC, cYm, a.cyjlx, cyfa, a.CZWKB
- ) D3
- GROUP BY
- D3.订单号) yy
- ON yy.订单号 = cyd.CCYDH
- LEFT JOIN (SELECT hz.CCYDH,
- Sum(COALESCE(hz.发外纸令, hz.发外数量, 0))数量
- FROM (SELECT fw.CHY,
- fw.CCYDH,
- Sum(fw.发外数量)发外数量,
- fwx.发外纸令
- FROM (SELECT w3.CHY,
- w3.ccydh,
- w12.cSccpMc,
- w12.cdxmc,
- w12.chjxmmc,
- w3.cyf,
- w3.NYYL 发外数量
- FROM (SELECT w1.csccpbh,
- w2.cSccpMc,
- w1.cdw,
- w1.cdxmc,
- w1.chjxmmc,
- w2.csccj,
- w2.iCydId,
- w2.cKhmc,
- w1.fsl
- FROM ZBHJXM w1
- LEFT JOIN SCCP w2
- ON w1.SCCPID = w2.SCCPID
- AND bOutProcess = 1) w12
- LEFT JOIN (SELECT a.icydid,
- dx.fZzl nyyl,
- a.chy,
- a.icydstate,
- a.ncs,
- a.CZWKB,
- a.dCyrq,
- a.CCPCC,
- dx.cyf,
- dx.CDXMC,
- CYJLX,
- CSC,
- a.ccydh
- FROM MCYD a
- LEFT JOIN (SELECT dd.fZzl fZzl,
- da.cdxmc,
- da.icydid,
- da.cyf cyf,
- da.csc csc
- FROM scyddx da
- LEFT JOIN (SELECT cp.CSCCJ,
- yscpdxxx .dxid,
- yscpdxxx .cdx,
- yscpdxxx .fzzl
- FROM YSCPDXXX yscpdxxx
- LEFT JOIN yscp cp
- ON cp.sccpid = yscpdxxx.yscpid
- WHERE ( csccj <> '轮转联动中心'
- AND csccj <> '平版印刷中心' ))dd
- ON dd.dxid = da.id) DX
- ON dx.ICYDID = a.ICYDID) W3
- ON w12.icydid = w3.icydid
- AND LEFT(w12.chjxmmc, 1) = LEFT(W3.cyf, 1)
- AND w12.cdxmc = w3.CDXMC
- AND W3.ICYDSTATE <> '-1')fw
- LEFT JOIN (SELECT aa.ccydh,
- CASE
- WHEN Sum(aa.nfysl) = 0 THEN NULL
- ELSE Sum(aa.nfysl)
- END 发外纸令
- FROM (SELECT LEFT(csccpbh, 10) ccydh,
- nfysl
- FROM ZbHjXm
- WHERE 1 = 1
- AND ( cGymc = '印刷'
- OR cGymc = '平印'
- OR cGymc = '轮印' )
- AND cGzzxmc = ''
- AND cdxmc <> '封面')aa
- LEFT JOIN (SELECT tt.ccydh,
- Sum(nfysl)nfysl
- FROM (SELECT LEFT(csccpbh, 10) ccydh,
- nfysl
- FROM ZbHjXm
- WHERE 1 = 1
- AND ( cGymc LIKE '%联动' )
- AND cGzzxmc = '')tt
- GROUP BY tt.ccydh)bb
- ON bb.ccydh = aa.ccydh
- GROUP BY aa.ccydh,
- bb.nfysl) fwx
- ON fw.CCYDH = fwx.ccydh
- GROUP BY fw.CHY,
- fw.CCYDH,
- fwx.发外纸令)hz
- GROUP BY hz.CCYDH) t
- ON t.ccydh = cyd.ccydh
- WHERE 1 = 1
- AND ICYDSTATE > -1
- AND cyd.CHY <> '集团教材外'
- AND cyd.lwcbs = 0
- AND cyd.iCommited = 1)hj
- WHERE 1 = 1 /*Wheres*/
- )hz)ys
- ON dd.订单状态 = ys.订单状态
- LEFT JOIN (SELECT '已审核,已提交生产' AS 订单状态,
- Sum(hz.印数) 印数,
- Sum(hz.发外册数) 发外册数,
- Sum(hz.印数) - Sum(hz.发外册数) 本厂应装订册数,
- Sum(hz.装订数量) 已装册数,
- Sum(hz.印数) - Sum(hz.发外册数) - Sum(hz.装订数量) 未装册数
- FROM (SELECT hj.承印日期,
- hj.订单号,
- hj.印件名称,
- hj.开本,
- hj.订法,
- hj.业务单位名称,
- hj.印件类型,
- hj.活源,
- hj.印数,
- hj.装订数量,
- hj.发外册数,
- hj.未装订数量
- FROM (SELECT IFnull(LWCBS, 0) 完工,
- DATE_FORMAT(cyd.dCyrq, '%Y-%m-%d') AS 承印日期,
- cyd.ccydh AS 订单号,
- cyd.cyjmc AS 印件名称,
- cyd.czwkb 开本,
- cyd.cdf AS 订法,
- cyd.CYWDWMC AS 业务单位名称,
- cyd.CYJLX AS 印件类型,
- cyd.CHY AS 活源,
- cyd.ncs AS 印数,
- ( IFnull(nyzsl, 0) + IFnull(nyzsl2, 0) ) 装订数量,
- IFnull(t.发外册数, 0) 发外册数,
- CASE
- WHEN cyd.ncs - ( IFnull(nyzsl, 0) + IFnull(nyzsl2, 0) ) - IFnull(t.发外册数, 0) < 0 THEN 0
- ELSE cyd.ncs - ( IFnull(nyzsl, 0) + IFnull(nyzsl2, 0) ) - IFnull(t.发外册数, 0)
- END 未装订数量
- FROM mcyd cyd
- LEFT JOIN (SELECT mcyd.icydid,
- Sum(iWcl)AS nyzsl
- FROM cpjtfk
- LEFT JOIN mcyd
- ON mcyd.ICYDID = ID_CYD
- AND ( CASE
- WHEN mcyd.cdf = '无线胶订'
- OR mcyd.cdf = '索线胶订' THEN RIGHT(mcyd.cdf, 2)
- ELSE crwmc
- END ) = crwmc
- WHERE 1 = 1
- AND ( crwmc = '胶订'
- OR crwmc = '骑马订'
- OR crwmc = '生产' )
- GROUP BY mcyd.icydid) ZD
- ON cyd.ICYDID = ZD.ICYDID
- LEFT JOIN (SELECT mcyd.icydid,
- Sum(c. dfinishsl) AS nyzsl2
- FROM SCYDGY c
- LEFT JOIN mcyd
- ON mcyd.ICYDID = c.icydid
- WHERE 1 = 1
- AND ( c.cgymc = '胶订联动'
- OR c.cgymc = '骑马联动'
- OR c.cgymc = '精装联动'
- OR c.cgymc = '胶头' )
- GROUP BY mcyd.icydid) ZD1
- ON cyd.ICYDID = ZD1.ICYDID
- LEFT JOIN (SELECT hz.CCYDH,
- Sum(COALESCE(hz.发外册数, hz.册数, 0)) 发外册数
- FROM (SELECT fw.CHY,
- fw.CCYDH,
- fw.册数,
- fwx.发外册数
- FROM (SELECT w3.CHY,
- w3.ccydh,
- w12.cSccpMc,
- w12.cdxmc,
- w12.chjxmmc,
- w3.cyf,
- w3.ncs 册数
- FROM (SELECT w1.csccpbh,
- w2.cSccpMc,
- w1.cdw,
- w1.cdxmc,
- w1.chjxmmc,
- w2.csccj,
- w2.iCydId,
- w2.cKhmc,
- w1.fsl
- FROM ZBHJXM w1
- LEFT JOIN SCCP w2
- ON w1.SCCPID = w2.SCCPID
- AND bOutProcess = 1) w12
- LEFT JOIN (SELECT a.icydid,
- dx.fZzl nyyl,
- a.chy,
- a.icydstate,
- a.ncs,
- a.CZWKB,
- a.dCyrq,
- a.CCPCC,
- dx.cyf,
- dx.CDXMC,
- CYJLX,
- CSC,
- a.ccydh
- FROM MCYD a
- LEFT JOIN (SELECT dd.fZzl fZzl,
- da.cdxmc,
- da.icydid,
- da.cyf cyf,
- da.csc csc
- FROM scyddx da
- LEFT JOIN (SELECT cp.CSCCJ,
- yscpdxxx .dxid,
- yscpdxxx .cdx,
- yscpdxxx .fzzl
- FROM YSCPDXXX yscpdxxx
- LEFT JOIN yscp cp
- ON cp.sccpid = yscpdxxx.yscpid
- WHERE ( csccj <> '轮转联动中心'
- AND csccj <> '平版印刷中心' ))dd
- ON dd.dxid = da.id) DX
- ON dx.ICYDID = a.ICYDID) W3
- ON w12.icydid = w3.icydid
- AND LEFT(w12.chjxmmc, 1) = LEFT(W3.cyf, 1)
- AND w12.cdxmc = w3.CDXMC
- AND W3.ICYDSTATE <> '-1')fw
- LEFT JOIN (SELECT bb.ccydh,
- CASE
- WHEN CAST(bb.nfysl AS SIGNED) = 0 THEN NULL
- ELSE CAST(bb.nfysl AS SIGNED)
- END AS 发外册数
- FROM (SELECT tt.ccydh,
- Sum(nfysl)nfysl
- FROM (SELECT LEFT(csccpbh, 10) ccydh,
- nfysl
- FROM ZbHjXm
- WHERE 1 = 1
- AND ( cGymc LIKE '%联动' )
- AND cGzzxmc = '')tt
- GROUP BY tt.ccydh)bb
- GROUP BY bb.ccydh,
- bb.nfysl) fwx
- ON fw.CCYDH = fwx.ccydh
- GROUP BY fw.CHY,
- fw.CCYDH,
- fw.册数,
- fwx.发外册数)hz
- GROUP BY hz.CCYDH) t
- ON t.ccydh = cyd.ccydh
- WHERE 1 = 1
- AND ICYDSTATE > -1
- AND cyd.CHY <> '集团教材外'
- AND cyd.cdf <> '单片'
- AND cyd.cdf <> '散装'
- AND cyd.lwcbs = 0
- AND cyd.iCommited = 1)hj
- WHERE 1 = 1
- )hz)zd
- ON dd.订单状态 = zd.订单状态
- ";
- $res=Db::query($sql);
- //将查询结果存入 Redis 缓存中
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").' 存进去了';
- return json($res);
- }
- //未提交未审核->接口
- public function scwtj(){
- $redis = redis();
- $sczt_one = json_decode($redis->get(md5('scztone_redis')), true);
- // 初始化变量用于存放结果
- $result = [
- '未提交未审核订单' => 0,
- '未提交未审核纸令' => 0,
- '未提交未审核册数' => 0,
- ];
- // 遍历第一个数组
- foreach ($sczt_one as $va) {
- if ($va['订单状态'] == '未提交,未审核') {
- $result['未提交未审核订单'] = $va['订单数'];
- $result['未提交未审核纸令'] = $va['纸令数'];
- $result['未提交未审核册数'] = $va['册数'];
- }
- }
- // 格式化为新的数组格式,并将'name'替换为具体名称
- $formattedResult = array_map(function ($key, $value) {
- return ['name' => ' ', 'value' => $value];
- }, array_keys($result), $result);
- // 构造返回数据
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $formattedResult,
- ];
- // 返回JSON格式的结果
- return json($res);
- }
- //已提交待生产->接口
- public function scysh(){
- $redis = redis();
- $sczt_one = json_decode($redis->get(md5('scztone_redis')),true);
- $result = [
- '已提交待生产订单' => 0,
- '已提交待生产纸令' => 0,
- '已提交待生产册数' => 0,
- ];
- // 遍历第一个数组
- foreach ($sczt_one as $va) {
- if ($va['订单状态'] == '已审核,已提交生产') {
- $result['已提交待生产订单'] = $va['订单数'];
- $result['已提交待生产纸令'] = $va['未印纸令'];
- $result['已提交待生产册数'] = $va['未装册数'];
- }
- }
- // 格式化为新的数组格式
- $formattedResult = array_map(function ($key, $value) {
- return ['name' => ' ', 'value' => $value];
- }, array_keys($result), $result);
- // 构造返回数据
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $formattedResult,
- ];
- // 返回JSON格式的结果
- return json($res);
- }
- //已提交已生产->接口
- public function sczsc(){
- $redis = redis();
- $sczt_one = json_decode($redis->get(md5('scztone_redis')),true);
- // 初始化变量用于存放结果
- $result = [
- '已提交已生产纸令' => 0,
- '已提交已生产册数' => 0,
- ];
- // 遍历第一个数组
- foreach ($sczt_one as $va) {
- if ($va['订单状态'] == '已审核,已提交生产') {
- $result['已提交已生产纸令'] = $va['已印纸令'];
- $result['已提交已生产册数'] = $va['已装册数'];
- }
- }
- // 格式化为新的数组格式
- $formattedResult = array_map(function ($key, $value) {
- return ['name' => ' ', 'value' => $value];
- }, array_keys($result), $result);
- // 构造返回数据
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $formattedResult,
- ];
- // 返回JSON格式的结果
- return json($res);
- }
- /**
- * 原
- */
- //在线重点产品生产进度情况 缓存(暂时不用)
- public function zdcp_completion_redis_ssssss(){
- $redis=redis();
- $redis_key = md5('zdcp_completion_redis');
- //--以下为昨日印刷数据
- $sql = "SELECT
- CONVERT(a.dcyrq,CHAR(10)) 承印日期,
- a.zt 状态,
- a.tj,
- a.icydid,
- a.ccydh 订单编号,
- a.cyjlx 印件类型,a.Czlyq 质量要求,
- CONVERT(a.DJFRQ,CHAR(10)) 交付日期,
- a.NZWYZ 正文印张,
- a.cyjmc 印件名称,
- a.CYWDWMC 委印单位名称,
- a.CDF 订法,
- a.chy 活源,
- a.czwkb 正文开本,
- a.csc 色次,
- a.ncs 印数,
- a.zdzl 装订纸令,
- a.ydzl 已订令,
- a.NGZL,
- a.ydct 已订册数,
- a.wdct 未定册数,
- a.fm 封面,
- a.fmyy 封面已印,
- a.fmwy 封面未印,
- a.zw 正文,
- a.zwyy 正文已印,
- a.zwwy 正文未印,
- a.zw1,
- a.zwyy1,
- a.zwwy1,
- a.zw2,
- a.zwyy2,
- a.zwwy2,
- a.cy 插页,
- a.cyyy 插页已印,
- a.cywy 插页未印,
- a.hc 环衬,
- a.hcyy 环衬已印,
- a.hcwy 环衬未印,
- a.wy,
- a.wd,
- a.pt,
- a.出库数量 iAmount_Out,
- a.未发数量 nAmount from
- (
- SELECT
- a.dcyrq,
- CASE WHEN a.iCommited = 0 THEN '未提交'
- WHEN a.LWCBS = '0' THEN '未完'
- ELSE '完成'
- END zt,
- a.iCommited tj,
- a.icydid,
- a.DJFRQ,
- a.NZWYZ,
- a.ccydh,
- a.cyjmc,
- a.CYWDWMC,
- a.CDF,
- a.chy,
- a.cyjlx,
- a.Czlyq,
- a.czwkb,
- m.csc,
- a.ncs,
- IFNULL(b.纸令数, 0) zdzl,
- CASE WHEN l.izdsl > 0
- THEN CONVERT(IFNULL(b.纸令数, 0)
- * IFNULL(c.dFinishsl, 0) / l.izdsl,DECIMAL(10, 3))
- ELSE 0
- END ydzl,
- c.NGZL,
- IFNULL(c.dFinishsl, 0) ydct,
- c.NGZL - IFNULL(c.dFinishsl, 0) wdct,
- IFNULL(d.fLlyl, 0) fm,
- IFNULL(d.nzl, 0) fmyy,
- CASE WHEN IFNULL(d.fLlyl, 0) < IFNULL(d.nzl, 0) THEN 0
- ELSE IFNULL(d.fLlyl, 0) - IFNULL(d.nzl, 0)
- END fmwy,
- IFNULL(e.fLlyl, 0) zw,
- IFNULL(e.nzl, 0) zwyy,
- CASE WHEN IFNULL(e.fLlyl, 0) < IFNULL(e.nzl, 0) THEN 0
- ELSE IFNULL(e.fLlyl, 0) - IFNULL(e.nzl, 0)
- END zwwy,
- IFNULL(i.fLlyl1, 0) zw1,
- IFNULL(i.nzl1, 0) zwyy1,
- CASE WHEN IFNULL(i.fLlyl1, 0) < IFNULL(i.nzl1, 0) THEN 0
- ELSE IFNULL(i.fLlyl1, 0) - IFNULL(i.nzl1, 0)
- END zwwy1,
- IFNULL(j.fLlyl2, 0) zw2,
- IFNULL(j.nzl2, 0) zwyy2,
- CASE WHEN IFNULL(j.fLlyl2, 0) < IFNULL(j.nzl2, 0) THEN 0
- ELSE IFNULL(j.fLlyl2, 0) - IFNULL(j.nzl2, 0)
- END zwwy2,
- IFNULL(f.fLlyl, 0) cy,
- IFNULL(f.nzl, 0) cyyy,
- CASE WHEN IFNULL(f.fLlyl, 0) < IFNULL(f.nzl, 0) THEN 0
- ELSE IFNULL(f.fLlyl, 0) - IFNULL(f.nzl, 0)
- END cywy,
- IFNULL(k.fLlyl, 0) hc,
- IFNULL(k.nzl, 0) hcyy,
- CASE WHEN IFNULL(k.fLlyl, 0) < IFNULL(k.nzl, 0) THEN 0
- ELSE IFNULL(k.fLlyl, 0) - IFNULL(k.nzl, 0)
- END hcwy,
- IFNULL(g.fLlyl, 0) wy,
- IFNULL(h.fZhls, 0) wd,
- CASE WHEN c.NGZL - IFNULL(c.dFinishsl, 0) <= 1 THEN 4
- WHEN IFNULL(e.fLlyl, 0) - IFNULL(e.nzl, 0) < 0.1
- AND IFNULL(d.fLlyl, 0) - IFNULL(d.nzl, 0) < 0.1
- AND IFNULL(f.fLlyl, 0) - IFNULL(f.nzl, 0) < 0.1
- AND c.NGZL - IFNULL(c.dFinishsl, 0) > 10 THEN 1
- WHEN IFNULL(e.fLlyl, 0) - IFNULL(e.nzl, 0) < 0.1
- AND ( IFNULL(d.fLlyl, 0) - IFNULL(d.nzl, 0) >= 0.1
- OR IFNULL(f.fLlyl, 0) - IFNULL(f.nzl, 0) >= 0.1
- ) THEN 2
- WHEN IFNULL(e.fLlyl, 0) - IFNULL(e.nzl, 0) >= 0.1
- AND IFNULL(d.fLlyl, 0) - IFNULL(d.nzl, 0) < 0.1
- AND IFNULL(f.fLlyl, 0) - IFNULL(f.nzl, 0) < 0.1 THEN 3
- ELSE 0
- END pt
- ,cast(case when CK.ncksl=0 then ck1.ncksl else ck.ncksl+IFNULL(ck1.ncksl,0) end as decimal (18,0)) as 出库数量,
- cast( a.ncs- case when CK.ncksl=0 then ck1.ncksl else ck.ncksl+IFNULL(ck1.ncksl,0) end as decimal (18,0))未发数量
- FROM
- MCYD a
- LEFT JOIN
- (SELECT MCYD.ccydh,SUM(ncksl) AS ncksl FROM sexpstore LEFT JOIN MCYD ON MCYD.CCYDH = sexpstore.ccydh GROUP BY mcyd.ccydh) CK1 ON a.ccydh=CK1.ccydh
-
- LEFT JOIN ( SELECT ck.cCode cCode,SUM(nAmount_Out) AS ncksl FROM (SELECT d.ID, b.ID AS ID_Detail, b.ID_Mcyd AS ID_Order, a.ICYDID AS ID_Vers, a.CCYDH AS cCode, c.cCode AS cPCode,
- c.cName AS cPName, a.CYJLX, 1 AS iVers, c.cUnit,
- CASE WHEN a.LWCBS = 1 THEN 4 ELSE CASE WHEN a.iCommited = 1 THEN 3 ELSE a.ICYDSTATE END END AS iState,
- a.NCS AS nOrderAmount, 0 AS nOrderAmount_Sample, d.NSL AS iAmount, c.cSize, 0 AS nRang_num,
- 0 AS iAmount_Sample, b.iAmount AS iRang_MaxAmount, b.iAmount AS iRang_MinAmount, c.iTag_Group,
- c.ID AS ID_Request, IFNULL(op.nAmount_Notice, 0) AS nAmount_Notice, IFNULL(op.nAmount_Sample_Notice, 0)
- AS nAmount_Sample_Notice, 0 AS iAmount_S, IFNULL(op.nAmount_Out, 0) + 0 AS nAmount_Out,
- IFNULL(op.nAmount_Sample_Out, 0) AS nAmount_Sample_Out, '' AS cCustomerCode, '' AS cCustomerName,
- '' AS cCustomerUnit, '' AS cSaleIndex, CAST(d.LJSBS AS SIGNED INTEGER) AS LJSBS, a.CWYDH AS cCode_CBill,
- d.CQXMC AS cSaleName, d.cAreaCode, d.cAddress, d.cshr AS cLinkman, d.ctel, DZYWDW.cdwmc AS cClientName,
- a.IYWDWID AS ID_Client, 0 AS ID_LinkMan, d.ID AS ID_Address, a.IYWYID AS ID_Seller, a.CYWYXM AS cSeller,
- d.dfhrq AS dDate_Send, 0 AS iSign_FSC, '' AS cPayType, d.iState AS iSendState, a.DZDRQ AS CreateOrderDate,
- a.DJFRQ, d.mbz AS cRemark, CASE WHEN b.ID_Parent = 0 THEN 0 ELSE 1 END AS iChildFlag, b.ID_Parent,
- '' AS cRemark_Detail, b.nUnitPlanWeight, b.nActualWeight,
- CASE WHEN a.CBCYEAR <> '' THEN a.CBCYEAR + '年' ELSE '' END + CASE WHEN a.CBCmonth <> '' THEN a.CBCmonth +
- '月' ELSE '' END + CASE WHEN a.CBC <> '' THEN a.CBC + '版' ELSE '' END + CASE WHEN a.cYCyear <> '' THEN a.cYCyear
- + '年' ELSE '' END + CASE WHEN a.cYCmonth <> '' THEN a.cYCmonth + '月' ELSE '' END + CASE WHEN a.CYC <> '' THEN
- a.CYC + '次' ELSE '' END AS cBanCi, a.NYJDJ AS nPrice, a.CYJSH, a.NZWKB, IFNULL
- ((SELECT SUM(nje) AS Expr1
- FROM SCYDGXHJ
- WHERE (iType = 2) AND (icydid = a.ICYDID)), 0) AS nFreight, 0 AS iIsCalc_Sample
- FROM MCYD AS a INNER JOIN
- qlOrderProduct AS b ON b.ID_Mcyd = a.ICYDID INNER JOIN
- qlAProduct AS c ON c.ID = b.ID_qlAProduct LEFT OUTER JOIN
- SCYDYSQX AS d ON d.ICYDID = a.ICYDID AND d.ID_qlOrderProduct = b.ID LEFT OUTER JOIN
- fnSaleOrderOutAmount AS op ON op.ID_SaleProductDetail = d.ID AND
- op.ID_scSaleOrder_Product = b.ID LEFT OUTER JOIN
- DZYWDW ON DZYWDW.iywdwid = a.IYWDWID
- WHERE (a.iCommited = 1) AND (a.ICYDSTATE <> - 1)) ck GROUP BY ck.cCode) CK ON a.ccydh=CK.cCode
-
-
- LEFT JOIN (
- SELECT
- icydid,
- MIN(csc) csc
- FROM
- scyddx
- WHERE
- INSTR(CDXLXMC,'正文') > 0
- GROUP BY
- icydid
- ) m ON m.icydid = a.icydid
- LEFT JOIN (
- SELECT
- a.ICYDID,
- SUM(a.NZDLS) 纸令数
- FROM
- SCYDDX a
- GROUP BY
- a.ICYDID
- ) b ON b.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.cProductCode,
- SUM(a.nPAmount) ngzl,
- SUM(a.nCompleteAmount) dFinishsl
- FROM
- (
- SELECT
- a.cProductCode,
- a.nPAmount,
- a.nCompleteAmount,
- c.cGymc 工序名称
- FROM
- scMachineJob a
- INNER JOIN scMachineJobTech b ON b.ID_scMachineJob = a.ID
- INNER JOIN DZTECH c ON c.iGyid = b.ID_ATech
- WHERE
- c.cGymc IN ( '骑订联动','骑马联动' , '胶订联动','精装联动')
- ) a
- GROUP BY
- a.cProductCode
- ) c ON c.cProductCode = a.ccydh
- LEFT JOIN (
- SELECT
- a.iCydId,
- a.CydDxlxMc,
- SUM(a.fLlyl) fLlyl,
- SUM(IFNULL(a.nzl, 0)) nzl
- FROM
- (
- SELECT
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl,
- SUM(CASE WHEN job.nDeliverAmount > 0
- THEN IFNULL(c.nzl, 0) * job.nStdAmount
- / job.nDeliverAmount
- ELSE 0
- END) nzl
- FROM
- Yscp a
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- LEFT JOIN QL_Report_FeedBack_Day c ON c.iSccpID = a.sccpid
- AND INSTR(b.cDx,c.cCyddxMc) > 0
- LEFT JOIN scMachineJob job ON job.id = c.iMJobID
- WHERE
- a.bOutProcess = 0
- AND ( ( INSTR(b.CydDxlxMc,'封面') > 0 )
- OR b.cDx LIKE '%封面合印%'
- )
- AND A.ISCCPLX <> 9
- GROUP BY
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl
- ) a
- GROUP BY
- a.ICYDID,
- a.CydDxlxMc
- ) d ON d.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.iCydId,
- a.CydDxlxMc,
- SUM(a.fLlyl) fLlyl,
- SUM(IFNULL(a.nzl, 0)) nzl
- FROM
- (
- SELECT
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl,
- SUM(CASE WHEN job.nDeliverAmount > 0
- THEN IFNULL(c.nzl, 0) * job.nStdAmount
- / job.nDeliverAmount
- ELSE 0
- END) nzl
- FROM
- Yscp a
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- LEFT JOIN QL_Report_FeedBack_Day c ON c.iSccpID = a.sccpid
- AND c.cCyddxMc = b.cDx
- LEFT JOIN scMachineJob job ON job.id = c.iMJobID
- WHERE
- a.bOutProcess = 0
- AND ( INSTR(b.CydDxlxMc,'正文') > 0 )
- AND A.ISCCPLX <> 9
- GROUP BY
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl
- ) a
- GROUP BY
- a.ICYDID,
- a.CydDxlxMc
- ) e ON e.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.iCydId,
- a.CydDxlxMc,
- SUM(a.fLlyl) fLlyl1,
- SUM(IFNULL(a.nzl, 0)) nzl1
- FROM
- (
- SELECT
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl,
- SUM(CASE WHEN job.nDeliverAmount > 0
- THEN IFNULL(c.nzl, 0) * job.nStdAmount
- / job.nDeliverAmount
- ELSE 0
- END) nzl
- FROM
- Yscp a
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- LEFT JOIN QL_Report_FeedBack_Day c ON c.iSccpID = a.sccpid
- AND c.cCyddxMc = b.cDx
- LEFT JOIN scMachineJob job ON job.id = c.iMJobID
- WHERE
- a.bOutProcess = 0
- AND ( INSTR(b.CydDxlxMc,'正文') > 0 )
- AND b.CYFA IN ( '彩平', '胶平' )
- AND A.ISCCPLX <> 9
- GROUP BY
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl
- ) a
- GROUP BY
- a.ICYDID,
- a.CydDxlxMc
- ) i ON i.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.iCydId,
- a.CydDxlxMc,
- SUM(a.fLlyl) fLlyl2,
- SUM(IFNULL(a.nzl, 0)) nzl2
- FROM
- (
- SELECT
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl,
- SUM(CASE WHEN job.nDeliverAmount > 0
- THEN IFNULL(c.nzl, 0) * job.nStdAmount
- / job.nDeliverAmount
- ELSE 0
- END) nzl
- FROM
- Yscp a
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- LEFT JOIN QL_Report_FeedBack_Day c ON c.iSccpID = a.sccpid
- AND c.cCyddxMc = b.cDx
- LEFT JOIN scMachineJob job ON job.id = c.iMJobID
- WHERE
- a.bOutProcess = 0
- AND ( INSTR(b.CydDxlxMc,'正文') > 0 )
- AND b.CYFA IN ( '彩轮', '胶轮' )
- AND A.ISCCPLX <> 9
- GROUP BY
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl
- ) a
- GROUP BY
- a.ICYDID,
- a.CydDxlxMc
- ) j ON j.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.iCydId,
- a.CydDxlxMc,
- SUM(a.fLlyl) fLlyl,
- SUM(IFNULL(a.nzl, 0)) nzl
- FROM
- (
- SELECT
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl,
- SUM(CASE WHEN job.nDeliverAmount > 0
- THEN IFNULL(c.nzl, 0) * job.nStdAmount
- / job.nDeliverAmount
- ELSE 0
- END) nzl
- FROM
- Yscp a
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- LEFT JOIN QL_Report_FeedBack_Day c ON c.iSccpID = a.sccpid
- AND INSTR(b.cDx,c.cCyddxMc) > 0
- LEFT JOIN scMachineJob job ON job.id = c.iMJobID
- WHERE
- a.bOutProcess = 0
- AND ( b.CydDxlxMc = '插页'
- OR b.cDx LIKE '%插页合印%'
- )
- AND A.ISCCPLX <> 9
- GROUP BY
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl
- ) a
- GROUP BY
- a.ICYDID,
- a.CydDxlxMc
- ) f ON f.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.iCydId,
- a.CydDxlxMc,
- SUM(a.fLlyl) fLlyl,
- SUM(IFNULL(a.nzl, 0)) nzl
- FROM
- (
- SELECT
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl,
- SUM(CASE WHEN job.nDeliverAmount > 0
- THEN IFNULL(c.nzl, 0) * job.nStdAmount
- / job.nDeliverAmount
- ELSE 0
- END) nzl
- FROM
- Yscp a
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- LEFT JOIN QL_Report_FeedBack_Day c ON c.iSccpID = a.sccpid
- AND INSTR(b.cDx,c.cCyddxMc) > 0
- LEFT JOIN scMachineJob job ON job.id = c.iMJobID
- WHERE
- a.bOutProcess = 0
- AND ( b.CydDxlxMc = '环衬'
- OR b.cDx LIKE '%环衬合印%'
- )
- AND A.ISCCPLX <> 9
- GROUP BY
- a.iCydid,
- b.cDx,
- b.CydDxlxMc,
- b.fLlyl
- ) a
- GROUP BY
- a.ICYDID,
- a.CydDxlxMc
- ) k ON k.ICYDID = a.ICYDID
- LEFT JOIN (
- SELECT
- a.iCydId,
- SUM(b.fLlyl) fLlyl
- FROM
- Yscp a
- INNER JOIN sccp c ON a.SccpId = c.SccpId
- INNER JOIN Yscpdxxx b ON b.YscpId = a.SccpId
- WHERE
- a.bOutProcess = 1
- AND c.bZfbz = 0
- GROUP BY
- a.iCydId
- ) g ON g.ICYDID = a.iCydId
- LEFT JOIN (
- SELECT
- a.iCydid,
- SUM(a.fZhls) fZhls
- FROM
- Zdcp a
- WHERE
- bOutProcess = 1
- GROUP BY
- iCydid
- ) h ON h.iCydid = a.iCydid
- LEFT JOIN (
- SELECT
- a.iCydid,
- SUM(distinct a.izdsl) izdsl,
- SUM(distinct a.fZls) fzls
- FROM
- Zdcp a
- WHERE
- bOutProcess = 0
- GROUP BY
- iCydid
- ) l ON l.iCydid = a.iCydid
- WHERE
- a.ICYDID > 0
- AND a.icydState <> -1
- -- AND a.CCYDH = '202306211S'
- and a.Czlyq='重点产品'
- ) a
- WHERE
-
- 1 = 1 and ((a.zt = '未完'))
- ORDER BY 承印日期 DESC
- -- 在线重点产品生产进度20231018
- ";
- $res = Db::query($sql);
- if ($res) {
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").' 存进去了';
- return $res;
- }
- }
- //在线重点产品生产进度情况 接口(暂时不用)
- public function zdcp_completion_ssssss(){
- $redis=redis();
- $list = json_decode($redis->get(md5('zdcp_completion_redis')), true);
- $result['columns']=[
- ['name'=>'订单号','id'=>'ddh','width'=>'10','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'印件名称','id'=>'yjmc','width'=>'26','textAlign'=>'left'],
- ['name'=>'印数','id'=>'ys','width'=>'8','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'承印日期','id'=>'cyrq','width'=>'10','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'交付日期','id'=>'jfrq','width'=>'10','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'封面印刷完成率','id'=>'fmwcl','width'=>'10','autoWrap'=>"true",'textAlign'=>'center'],
- ['name'=>'正文印刷完成率','id'=>'zwysl','width'=>'10','autoWrap'=>"true",'textAlign'=>'center'],
- ['name'=>' 装 订 完成率','id'=>'zdwcl','width'=>'8','autoWrap'=>"true",'textAlign'=>'center'],
- ['name'=>' 发 货 完成率','id'=>'fhwcl','width'=>'8','autoWrap'=>"true",'textAlign'=>'center']
- // ['name'=>'封面印刷','id'=>'fmwcl','width'=>'12','autoWrap'=>"true",'textAlign'=>'center','remark'=>'封面印刷完成率'],
- // ['name'=>'正文印刷','id'=>'zwysl','width'=>'12','autoWrap'=>"true",'textAlign'=>'center','remark'=>'正文印刷完成率'],
- // ['name'=>'装订','id'=>'zdwcl','width'=>'8','autoWrap'=>"true",'textAlign'=>'left','remark'=>'装订完成率'],
- // ['name'=>'发货','id'=>'fhwcl','width'=>'8','autoWrap'=>"true",'textAlign'=>'left','remark'=>'发货完成率']
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['ddh']=$v['订单编号'];
- $result['rows'][$k]['yjmc']=$v['印件名称'];
- $result['rows'][$k]['ys']=$v['印数'];
- $result['rows'][$k]['cyrq']=$v['承印日期'];
- $result['rows'][$k]['jfrq'] = $v['交付日期'];
- $result['rows'][$k]['fmwcl']=round(($v['封面']==0? 1 : $v['封面已印']/$v['封面'])*100).'%';
- $result['rows'][$k]['zwysl']=round(($v['正文']==0? 1 : $v['正文已印']/$v['正文'])*100).'%';
- $result['rows'][$k]['zdwcl']=round(($v['装订纸令']==0? 1 : $v['已订令']/$v['装订纸令'])*100).'%';
- $result['rows'][$k]['fhwcl']=round(($v['印数']==0? 1 : $v['iAmount_Out']/$v['印数'])*100).'%';
- $result['rows'][$k]['fmwcl']=substr($result['rows'][$k]['fmwcl'],0,-1)>100 ? '100%' : $result['rows'][$k]['fmwcl'];
- $result['rows'][$k]['zwysl']=substr($result['rows'][$k]['zwysl'],0,-1)>100 ? '100%' : $result['rows'][$k]['zwysl'];
- $result['rows'][$k]['zdwcl']=substr($result['rows'][$k]['zdwcl'],0,-1)>100 ? '100%' : $result['rows'][$k]['zdwcl'];
- $result['rows'][$k]['fhwcl']=substr($result['rows'][$k]['fhwcl'],0,-1)>100 ? '100%' : $result['rows'][$k]['fhwcl'];
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- return json($res);
- }
- /**
- * 现
- */
- //工作中心负荷 缓存
- public function zdcp_completion_redis(){
- $redis=redis();
- $redis_key = md5('zdcp_completion_redis');
- //--以下为昨日印刷数据
- $sql = "SELECT /*CONVERT(VARCHAR(10), Getdate(), 23) 日期,*/ b.cGzzxMc 工作中心,
- a.cGymc 工序,
- Sum(a.nGzl) 已下达总量,
- Sum(a.dFinishsl) 已完成总量,
- Sum(nSyl + nPrepareAmount) 未完成量,
- CASE
- WHEN b.cBmmc = '轮转联动中心'THEN ( CASE
- WHEN b.cGzzxMc = '手工工作中心' THEN 0
- ELSE b.iGzzxfh
- END ) * 24
- ELSE( CASE
- WHEN b.cGzzxMc = '手工工作中心' THEN 0
- ELSE b.iGzzxfh
- END ) * 20
- END 日产能,
- CASE
- WHEN b.cGzzxMc = '手工工作中心' THEN ''
- ELSE ( CASE
- WHEN SUM(nSyl + nPrepareAmount) > 0 AND b.iGzzxfh > 0 THEN CONCAT(
- CAST(FLOOR(SUM(nSyl + nPrepareAmount) / b.iGzzxfh / 20) AS CHAR), '天',
- CAST(ROUND(SUM(nSyl + nPrepareAmount) / b.iGzzxfh - FLOOR(SUM(nSyl + nPrepareAmount) / b.iGzzxfh / 20) * 20) AS CHAR), '时'
- )
- ELSE ''
- END )
- END AS 生产天数
- FROM (SELECT a.cGzzxBh,
- a.cGzzxMc,
- a.cBmmc,
- a.cGymc,
- a.nGzl,
- a.dFinishsl,
- a.nSyl,
- a.nPrepareTime * nRationValue nPrepareAmount,
- a.nAmountTime,
- a.nPrepareTime,
- a.nAmountTime + a.nPrepareTime nRemainTime
- FROM (SELECT GY.cGzzxBh,
- GY.cGzzxMc,
- Cp.cSccpBh,
- Cp.cSccpMc,
- GY.ngzl,
- Gy.dFinishsl,
- gy.CGYMC,
- Ord.CDF,
- Ord.NCS,
- Ord.nZWKB,
- Ord.cZWKB,
- Ord.DJFRQ,
- Obj.cDx,
- Obj.cSc,
- IFnull(scRation.cValue, GZzx.iGzzxfh) AS nRationValue,
- ( CASE
- WHEN NGZL > dFinishsl THEN NGZL - dFinishsl
- ELSE 0
- END ) AS nSYL,
- CASE
- WHEN IFnull(scRation.cValue, GZzx.iGzzxfh) > 0 THEN ( ( CASE
- WHEN NGZL > dFinishsl THEN NGZL - dFinishsl
- ELSE 0
- END ) / IFnull(scRation.cValue, GZzx.iGzzxfh) )
- ELSE 0.00
- END AS nAmountTime,
- CASE
- WHEN ( GY.dFinishsl < gy.NGZL )
- AND ( gy.nPrepareTime > 0 ) THEN ( gy.NGZL - gy.dFinishsl ) / gy.NGZL * gy.nPrepareTime
- ELSE 0
- END nPrepareTime,
- ( CASE GY.iType
- WHEN 20 THEN 1
- WHEN 3 THEN 2
- ELSE 0
- END ) AS iTechState,
- GY.iScxh iScxh_Gy,
- GY.DQSRQ,
- gzzx.cBmmc,
- GY.DJSRQ,
- ( CASE
- WHEN GY.iScxh > 0 THEN 0
- ELSE 1
- END ) iScxh_L
- FROM SCYDGY GY
- INNER JOIN Sccp Cp
- ON GY.ISCCPID = Cp.SccpId
- INNER JOIN DZTECH Tech
- ON GY.IGYID = Tech.IGYID
- LEFT JOIN Yscpdxxx Obj
- ON GY.ISCCPID = Obj.YscpId
- AND GY.IDXID = Obj.DxId
- LEFT JOIN MCYD Ord
- ON GY.ICYDID = Ord.ICYDID
- INNER JOIN MKernel GZzx
- ON GY.cGzzxBh = GZzx.cBh
- LEFT JOIN (SELECT a.id_Parent,
- b.igyid_dzTech,
- a.cValue
- FROM scRation a
- INNER JOIN scRationDetail b
- ON b.id_scRation = a.ID) scRation
- ON scRation.id_Parent = Gzzx.ID
- AND scRation.igyid_dzTech = GY.iGyID
- WHERE ( Cp.bxdbz = 1 )
- AND ( Cp.bWcbz = 0 )
- AND ( Cp.bZfbz = 0 )
- AND ( GY.iType IN ( 2, 3, 20 ) )
- AND ( GY.iEndBz = 0 )
- AND ( Cp.iSccpLx <> 5 )
- AND ( GY.pid <> -1 )
- AND gy.cGzzxBh IN( '069', '071', '081', '086',
- '087', '065', '066', '075',
- '076', '078', '079', '083', '084' )) a
- UNION /*ALL*/
- SELECT a.cGzzxBh,
- a.cGzzxMc,
- a.cBmmc,
- a.CGYMC,
- a.nSyl,
- a.NGZL,
- a.dFinishsl,
- a.nPrepareTime * nRationValue nPrepareAmount,
- a.nAmountTime,
- a.nPrepareTime,
- a.nAmountTime + a.nPrepareTime nRemainTime
- FROM (SELECT GY.cGzzxBh,
- GY.cGzzxMc,
- Cp.cSccpBh,
- Cp.cSccpMc,
- gy.CGYMC,
- GY.ngzl,
- Gy.dFinishsl,
- Ord.CDF,
- Ord.NCS,
- Ord.nZWKB,
- Ord.cZWKB,
- Ord.DJFRQ,
- Obj.cDx,
- Obj.cSc,
- IFnull(scRation.cValue, GZzx.iGzzxfh) AS nRationValue,
- ( CASE
- WHEN NGZL > dFinishsl THEN NGZL - dFinishsl
- ELSE 0
- END ) AS nSYL,
- CASE
- WHEN IFnull(scRation.cValue, GZzx.iGzzxfh) > 0 THEN ( ( CASE
- WHEN NGZL > dFinishsl THEN NGZL - dFinishsl
- ELSE 0
- END ) / IFnull(scRation.cValue, GZzx.iGzzxfh) )
- ELSE 0.00
- END AS nAmountTime,
- CASE
- WHEN ( GY.dFinishsl < gy.NGZL )
- AND ( gy.nPrepareTime > 0 ) THEN ( gy.NGZL - gy.dFinishsl ) / gy.NGZL * gy.nPrepareTime
- ELSE 0
- END nPrepareTime,
- ( CASE GY.iType
- WHEN 20 THEN 1
- WHEN 3 THEN 2
- ELSE 0
- END ) AS iTechState,
- GY.iScxh iScxh_Gy,
- gzzx.cBmmc,
- GY.DQSRQ,
- GY.DJSRQ,
- ( CASE
- WHEN GY.iScxh > 0 THEN 0
- ELSE 1
- END ) iScxh_L
- FROM YsBan
- INNER JOIN SCYDGY GY
- ON GY.ISCCPID = ysban.iSccpId
- AND GY.iPbId = YsBan.MBanID
- AND gy.ICYDID = YsBan.iCydId
- INNER JOIN Sccp Cp
- ON GY.ISCCPID = Cp.SccpId
- INNER JOIN DZTECH Tech
- ON GY.IGYID = Tech.IGYID
- LEFT JOIN Yscpdxxx Obj
- ON GY.ISCCPID = Obj.YscpId
- AND YsBan.YSBanID = Obj.DxId
- LEFT JOIN MCYD Ord
- ON GY.ICYDID = Ord.ICYDID
- INNER JOIN MKernel GZzx
- ON GY.cGzzxBh = GZzx.cBh
- LEFT JOIN (SELECT a.id_Parent,
- b.igyid_dzTech,
- a.cValue
- FROM scRation a
- INNER JOIN scRationDetail b
- ON b.id_scRation = a.ID) scRation
- ON scRation.id_Parent = Gzzx.ID
- AND scRation.igyid_dzTech = GY.iGyID
- WHERE ( Cp.bxdbz = 1 )
- AND ( Cp.bWcbz = 0 )
- AND ( Cp.bZfbz = 0 )
- AND ( GY.iType IN ( 2, 3, 20 ) )
- AND ( GY.iEndBz = 0 )
- AND ( Cp.iSccpLx IN ( 5 ) )
- AND ( GY.IDXID >= 0 )
- AND ( GY.pid <> -1 )
- AND Tech.cTechType = '印刷'
- AND gy.cGzzxBh IN( '069', '071', '081', '086',
- '087', '065', '066', '075',
- '076', '078', '079', '083', '084' )) a) a
- INNER JOIN Mkernel b
- ON b.cbh = a.cGzzxbh
- AND b.bgzfh = 1
- GROUP BY a.cGzzxBh,
- b.cGzzxMc,
- b.cBmbh,
- b.cBmmc,
- a.CGYMC,
- b.iGzzxfh,
- a.cBmmc
- ORDER BY b.cBmmc DESC,
- a.cGzzxBh,
- a.CGYMC ";
- $res = Db::query($sql);
- if ($res) {
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").' 存进去了';
- return $res;
- }
- }
- //工作中心负荷 接口
- public function zdcp_completion(){
- $redis=redis();
- $list = json_decode($redis->get(md5('zdcp_completion_redis')), true);
- $result['columns']=[
- ['name'=>'工作中心','id'=>'gzzx','width'=>'20','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'工序','id'=>'gx','width'=>'14','textAlign'=>'left'],
- ['name'=>'已下达总量','id'=>'yxdzl','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'已完成总量','id'=>'ywczl','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'未完成量','id'=>'jwwczl','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'日产能','id'=>'rcn','width'=>'14','autoWrap'=>"true",'textAlign'=>'center'],
- ['name'=>'生产天数','id'=>'scts','width'=>'14','autoWrap'=>"true",'textAlign'=>'center'],
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['gzzx']=$v['工作中心'];
- $result['rows'][$k]['gx']=$v['工序'];
- $result['rows'][$k]['yxdzl']=$v['已下达总量'];
- $result['rows'][$k]['ywczl']=$v['已完成总量'];
- $result['rows'][$k]['jwwczl'] = $v['未完成量'];
- $result['rows'][$k]['rcn'] = $v['日产能'];
- $result['rows'][$k]['scts'] = $v['生产天数'];
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- return json($res);
- }
- //机台缓存【下面的三个机台汇总】缓存(暂时用不到)
- public function machine__redis(){
- $redis=redis();
- $redis_key = md5('machine__redis');
- $sql = "SELECT * FROM(SELECT
- MKernel.cGzzxmc 工作中心,
- IFnull(Dev.cName, '') 机台名称,
- CASE
- WHEN Job.iStatus = '2' THEN '进行中'
- WHEN Job.iStatus = '1' THEN '已下达'
- WHEN Job.iStatus = '10' THEN '作业暂停'
- WHEN Job.iStatus = '20' THEN '下班挂起'
- ELSE '其他'
- END 状态,
- Row_number()
- OVER (
- PARTITION BY Dev.cName
- ORDER BY CASE Dev.iType
- WHEN 2 THEN Dev.id
- ELSE Job.Id_Machine
- END,
- ischeduled DESC,
- CASE Job.iStatus
- WHEN 2 THEN 1
- ELSE Job.iXH
- END,
- Job.iSubXH,
- Job.ID ) AS 序列,
- job.cJobCode 作业编号,
- job.cJobName 作业名称,
- job.cPartName 对象,
- ttATech.cName AS 工序,
- job.nDeliverAmount 工作量,
- DATE_FORMAT( job.dFactStart, '%Y-%m-%d %H:%i:%s' ) AS 开始时间,
- DATE_FORMAT( job.dFactEnd, '%Y-%m-%d %H:%i:%s' ) AS 完成时间,
- job.nPlanTime 计划用时,
- d.cPlanRemark 排产备注
- FROM scMachineJob Job
- LEFT JOIN (SELECT iType, ID, cCode, cName, iGzzxId, ID_BM, cbmbh, cbmmc, cType_Sys, iStop, cType_Dev, cShortName, iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType, MKernel.ID, MKernel.cBh AS cCode, MKernel.cGzzxmc AS cName, MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, Mkernel.cGzzxlx AS cType_Sys, MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev, MKernel.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM MKernel INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType, dzyssb.ID, dzyssb.csbbh AS cCode, dzyssb.csbmc AS cName, Mkernel.ID AS iGzzxId, dzBM.id AS ID_BM,
- dzBM.cbmbh, dzBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, dzyssb.iStopUse AS iStop, dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM dzyssb INNER JOIN
- MKernel ON MKernel.ID = dzyssb.ID_Center INNER JOIN
- dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType, MKerJzmb.ID, MKerJzmb.cJzbh AS cCode, MKerJzmb.cJzmc AS cName, MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev, MKerJzmb.cShortName, MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb INNER JOIN
- MKernel ON MKernel.ID = MKerJzmb.iGzzxId INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cbmbh INNER JOIN
- dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType, iywdwid AS ID, cywdwbh AS cCode, cdwmc AS cName, iywdwid AS iGzzxId, iywdwid AS ID_BM,
- cywdwbh AS cbmbh, cdwmc AS cbmmc, '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop, '' AS cType_Dev, DZYWDW.cjc AS cShortName,
- 0 iTypeWage, 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType, - 1, '', '外厂资源', - 1, - 1 AS ID_BM, '' AS cbmbh, '' AS cbmmc, '' AS cType_Sys, 0 AS iStop, '' AS cType_Dev,
- '外厂' AS cShortName, 0 AS iTypeWage, 0 AS iOverProductType)scvDeviceAll
- WHERE (iStop = 0)
- ) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- LEFT JOIN scMachineJobTech c
- ON c.ID_scMachineJob = Job.id
- AND c.iIndex = 1
- LEFT JOIN sysTech ttATech
- ON ttATech.ID = c.ID_ATech
- LEFT JOIN scMachineJobRemark d
- ON d.ID_scMachineJob = Job.id
- LEFT JOIN MKernel
- ON MKernel.ID = Dev.iGzzxid
- WHERE 1 = 1
- AND Job.iStatus IN( 2, 1, 10, 20 )
- AND Job.iJobType IN ( 0, 4, 5 )
- AND Job.iType_Res = 0
- ORDER BY CASE Dev.iType
- WHEN 2 THEN Dev.id
- ELSE Job.Id_Machine
- END,
- ischeduled DESC,
- CASE Job.iStatus
- WHEN 2 THEN 1
- ELSE Job.iXH
- END,
- Job.iSubXH,
- Job.ID
- ) aa
- WHERE 序列=1
- ";
- $res = Db::query($sql);
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- //印刷机台实时生产进度->缓存
- public function ys_schedule_redis(){
- $redis=redis();
- $redis_key = md5('ys_schedule_redis');
- $sql = "
- SELECT Row_number()
- OVER (
- PARTITION BY tb.机台名称
- ORDER BY tb.状态 desc ) AS 排序,
- tb.*
- from
- (SELECT MKernel.cGzzxmc 工作中心,
- Ifnull(Dev.cName, '') 机台名称,
- CASE
- WHEN Job.iStatus = '2' THEN '进行中'
- WHEN Job.iStatus = '1' THEN '已排产'
- WHEN Job.iStatus = '10' THEN '作业暂停'
- WHEN Job.iStatus = '20' THEN '下班挂起'
- ELSE '其他'
- END 状态,
- Row_number()
- OVER (
- PARTITION BY Dev.cName, Job.iStatus
- ORDER BY job.iXh) AS 序列,
- job.cJobCode 作业编号,
- job.cJobName 作业名称,
- job.cPartName 对象,
- ttATech.cName AS 工序,
- job.nDeliverAmount 工作量,
- CASE
- WHEN job.dFactStart = '1900-01-01 00:00:00' THEN NULL
- ELSE job.dFactStart
- END AS '开始时间',
- Cast(Timestampdiff(MINUTE, CASE
- WHEN job.dFactStart = '1900-01-01 00:00:00' THEN NULL
- ELSE job.dFactStart
- END, Now()) / 60.0 AS DECIMAL(18, 2)) AS '持续时间',
- job.nPlanTime 计划用时,
- d.cPlanRemark 排产备注
- FROM scMachineJob Job
- LEFT JOIN (SELECT iType,
- ID,
- cCode,
- cName,
- iGzzxId,
- ID_BM,
- cbmbh,
- cbmmc,
- cType_Sys,
- iStop,
- cType_Dev,
- cShortName,
- iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM MKernel
- INNER JOIN DZBM
- ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM dzyssb
- INNER JOIN MKernel
- ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM
- ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb
- INNER JOIN MKernel
- ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM
- ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb
- ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE
- WHEN DZYWDW.nstate < 0 THEN 1
- ELSE 0
- END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType,
- -1,
- '',
- '外厂资源',
- -1,
- -1 AS ID_BM,
- '' AS cbmbh,
- '' AS cbmmc,
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType)scvDeviceAll
- WHERE ( iStop = 0 )) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- LEFT JOIN scMachineJobTech c
- ON c.ID_scMachineJob = Job.id
- AND c.iIndex = 1
- LEFT JOIN sysTech ttATech
- ON ttATech.ID = c.ID_ATech
- LEFT JOIN scMachineJobRemark d
- ON d.ID_scMachineJob = Job.id
- LEFT JOIN MKernel
- ON MKernel.ID = Dev.iGzzxid
- WHERE 1 = 1
- AND Job.iStatus IN( 2, 1, 10, 20 )
- AND Job.iJobType IN ( 0, 4, 5 )
- AND Job.iType_Res = 0
- -- AND Job.iStatus = '2'
-
- ) tb
- where tb.序列<=5
- -- and tb.状态='进行中'
- -- and tb.机台名称='折页机05号'
- GROUP BY tb.工作中心,
- tb.机台名称,
- tb.状态,
- tb.序列,
- tb.作业编号,
- tb.作业名称,
- tb.对象,
- tb.工序,
- tb.工作量,
- tb.开始时间,
- tb.持续时间,
- tb.计划用时,
- tb.排产备注
- ";
- //order by tb.排序,tb.机台名称 ";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //折、配、锁、糊机台实时生产进度->缓存
- public function zpsh_schedule_redis(){
- $redis=redis();
- $redis_key = md5('zpsh_schedule_redis');
- $sql = "(SELECT Row_number()
- OVER (
- PARTITION BY tb.机台名称
- ORDER BY tb.状态 ) AS 排序,
- tb.*
- FROM (SELECT *
- FROM (SELECT MKernel.cGzzxmc 工作中心,
- IFnull(Dev.cName, '') 机台名称,
- CASE
- WHEN Job.iStatus = '2' THEN '进行中'
- WHEN Job.iStatus = '1' THEN '已排产'
- WHEN Job.iStatus = '10' THEN '作业暂停'
- WHEN Job.iStatus = '20' THEN '下班挂起'
- ELSE '其他'
- END 状态,
- Row_number()
- OVER (
- PARTITION BY Dev.cName, Job.iStatus
- ORDER BY job.iXh) AS 序列,
- job.cJobCode 作业编号,
- job.cJobName 作业名称,
- job.cPartName 对象,
- ttATech.cName AS 工序,
- job.nDeliverAmount 工作量,
- CASE
- WHEN CAST(job.dFactStart AS DATETIME) = '1900-01-01 00:00:00' THEN NULL
- ELSE CAST(job.dFactStart AS DATETIME)
- END AS 开始时间,
- CAST(
- TIMESTAMPDIFF(
- MINUTE,
- CASE
- WHEN CAST(job.dFactStart AS DATETIME) = '1900-01-01 00:00:00' THEN NULL
- ELSE CAST(job.dFactStart AS DATETIME)
- END,
- NOW()
- ) / 60.0 AS DECIMAL(18, 2)
- ) AS 持续时间,
- job.nPlanTime 计划用时,
- d.cPlanRemark 排产备注
- FROM scMachineJob Job
- LEFT JOIN ((SELECT iType, ID, cCode, cName, iGzzxId, ID_BM, cbmbh, cbmmc, cType_Sys, iStop, cType_Dev, cShortName, iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType, MKernel.ID, MKernel.cBh AS cCode, MKernel.cGzzxmc AS cName, MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, Mkernel.cGzzxlx AS cType_Sys, MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev, MKernel.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM MKernel INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType, dzyssb.ID, dzyssb.csbbh AS cCode, dzyssb.csbmc AS cName, Mkernel.ID AS iGzzxId, dzBM.id AS ID_BM,
- dzBM.cbmbh, dzBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, dzyssb.iStopUse AS iStop, dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM dzyssb INNER JOIN
- MKernel ON MKernel.ID = dzyssb.ID_Center INNER JOIN
- dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType, MKerJzmb.ID, MKerJzmb.cJzbh AS cCode, MKerJzmb.cJzmc AS cName, MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev, MKerJzmb.cShortName, MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb INNER JOIN
- MKernel ON MKernel.ID = MKerJzmb.iGzzxId INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cbmbh INNER JOIN
- dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType, iywdwid AS ID, cywdwbh AS cCode, cdwmc AS cName, iywdwid AS iGzzxId, iywdwid AS ID_BM,
- cywdwbh AS cbmbh, cdwmc AS cbmmc, '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop, '' AS cType_Dev, DZYWDW.cjc AS cShortName,
- 0 iTypeWage, 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType, - 1, '', '外厂资源', - 1, - 1 AS ID_BM, '' AS cbmbh, '' AS cbmmc, '' AS cType_Sys, 0 AS iStop, '' AS cType_Dev,
- '外厂' AS cShortName, 0 AS iTypeWage, 0 AS iOverProductType)scvDeviceAll
- WHERE (iStop = 0)
- ) ) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- LEFT JOIN scMachineJobTech c
- ON c.ID_scMachineJob = Job.id
- AND c.iIndex = 1
- LEFT JOIN sysTech ttATech
- ON ttATech.ID = c.ID_ATech
- LEFT JOIN scMachineJobRemark d
- ON d.ID_scMachineJob = Job.id
- LEFT JOIN MKernel
- ON MKernel.ID = Dev.iGzzxid
- WHERE 1 = 1
- AND Job.iStatus IN( 2, 1, 10, 20 )
- AND Job.iJobType IN ( 0, 4, 5 )
- AND Job.iType_Res = 0) tb
- WHERE tb.序列 <= 5
- GROUP BY tb.工作中心,
- tb.机台名称,
- tb.状态,
- tb.序列,
- tb.作业编号,
- tb.作业名称,
- tb.对象,
- tb.工序,
- tb.工作量,
- tb.开始时间,
- tb.持续时间,
- tb.计划用时,
- tb.排产备注) tb)";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //装订机台实时生产进度->缓存
- public function zd_schedule_redis(){
- $redis=redis();
- $redis_key = md5('zd_schedule_redis');
- $sql = "(SELECT Row_number()
- OVER (
- PARTITION BY tb.机台名称
- ORDER BY tb.状态 ) AS 排序,
- tb.*
- FROM (SELECT *
- FROM (SELECT MKernel.cGzzxmc 工作中心,
- IFnull(Dev.cName, '') 机台名称,
- CASE
- WHEN Job.iStatus = '2' THEN '进行中'
- WHEN Job.iStatus = '1' THEN '已排产'
- WHEN Job.iStatus = '10' THEN '作业暂停'
- WHEN Job.iStatus = '20' THEN '下班挂起'
- ELSE '其他'
- END 状态,
- Row_number()
- OVER (
- PARTITION BY Dev.cName, Job.iStatus
- ORDER BY job.iXh) AS 序列,
- job.cJobCode 作业编号,
- job.cJobName 作业名称,
- job.cPartName 对象,
- ttATech.cName AS 工序,
- job.nDeliverAmount 工作量,
- CASE
- WHEN CAST(job.dFactStart AS DATETIME) = '1900-01-01 00:00:00' THEN NULL
- ELSE CAST(job.dFactStart AS DATETIME)
- END AS 开始时间,
- CAST(
- TIMESTAMPDIFF(
- MINUTE,
- CASE
- WHEN CAST(job.dFactStart AS DATETIME) = '1900-01-01 00:00:00' THEN NULL
- ELSE CAST(job.dFactStart AS DATETIME)
- END,
- NOW()
- ) / 60.0 AS DECIMAL(18, 2)
- ) AS 持续时间,
- job.nPlanTime 计划用时,
- d.cPlanRemark 排产备注
- FROM scMachineJob Job
- LEFT JOIN ((SELECT iType, ID, cCode, cName, iGzzxId, ID_BM, cbmbh, cbmmc, cType_Sys, iStop, cType_Dev, cShortName, iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType, MKernel.ID, MKernel.cBh AS cCode, MKernel.cGzzxmc AS cName, MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, Mkernel.cGzzxlx AS cType_Sys, MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev, MKernel.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM MKernel INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType, dzyssb.ID, dzyssb.csbbh AS cCode, dzyssb.csbmc AS cName, Mkernel.ID AS iGzzxId, dzBM.id AS ID_BM,
- dzBM.cbmbh, dzBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, dzyssb.iStopUse AS iStop, dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM dzyssb INNER JOIN
- MKernel ON MKernel.ID = dzyssb.ID_Center INNER JOIN
- dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType, MKerJzmb.ID, MKerJzmb.cJzbh AS cCode, MKerJzmb.cJzmc AS cName, MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev, MKerJzmb.cShortName, MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb INNER JOIN
- MKernel ON MKernel.ID = MKerJzmb.iGzzxId INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cbmbh INNER JOIN
- dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType, iywdwid AS ID, cywdwbh AS cCode, cdwmc AS cName, iywdwid AS iGzzxId, iywdwid AS ID_BM,
- cywdwbh AS cbmbh, cdwmc AS cbmmc, '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop, '' AS cType_Dev, DZYWDW.cjc AS cShortName,
- 0 iTypeWage, 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType, - 1, '', '外厂资源', - 1, - 1 AS ID_BM, '' AS cbmbh, '' AS cbmmc, '' AS cType_Sys, 0 AS iStop, '' AS cType_Dev,
- '外厂' AS cShortName, 0 AS iTypeWage, 0 AS iOverProductType)scvDeviceAll
- WHERE (iStop = 0)
- ) ) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- LEFT JOIN scMachineJobTech c
- ON c.ID_scMachineJob = Job.id
- AND c.iIndex = 1
- LEFT JOIN sysTech ttATech
- ON ttATech.ID = c.ID_ATech
- LEFT JOIN scMachineJobRemark d
- ON d.ID_scMachineJob = Job.id
- LEFT JOIN MKernel
- ON MKernel.ID = Dev.iGzzxid
- WHERE 1 = 1
- AND Job.iStatus IN( 2, 1, 10, 20 )
- AND Job.iJobType IN ( 0, 4, 5 )
- AND Job.iType_Res = 0) tb
- WHERE tb.序列 <= 5
- GROUP BY tb.工作中心,
- tb.机台名称,
- tb.状态,
- tb.序列,
- tb.作业编号,
- tb.作业名称,
- tb.对象,
- tb.工序,
- tb.工作量,
- tb.开始时间,
- tb.持续时间,
- tb.计划用时,
- tb.排产备注) tb)";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //印刷机台实时生产进度->接口
- public function ys_schedule(){
- $redis = redis();
- $list = json_decode($redis->get(md5('ys_schedule_redis')), true);
- // 按排序顺序排序
- usort($list, function($a, $b) {
- return $a['排序'] - $b['排序'];
- });
- // 工作中心相同的,先按状态排序
- $status_order = ['进行中', '已排产', '作业暂停', '下班挂起'];
- usort($list, function($a, $b) use ($status_order) {
- $work_center_cmp = strcmp($a['机台名称'], $b['机台名称']);
- if ($work_center_cmp === 0) {
- $status_cmp = array_search($a['状态'], $status_order) - array_search($b['状态'], $status_order);
- if ($status_cmp === 0) {
- return $a['排序'] - $b['排序'];
- }
- return $status_cmp;
- }
- return $work_center_cmp;
- });
- $machineSerialData = Db::table("machineneserial")->where('status', 1)->select();
- $machineSerials = array_column($machineSerialData, null, 'machinen_name');
- $result = [
- 'columns' => [
- ['name' => '机台名称', 'id' => 'jtmc', 'width' => '19', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '作业编号', 'id' => 'zybh', 'width' => '18', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '作业名称', 'id' => 'zymc', 'width' => '32', 'textAlign' => 'left'],
- ['name' => '持续时间', 'id' => 'cxsj', 'width' => '14', 'textAlign' => 'left'],
- ['name' => '状态', 'id' => 'zt', 'width' => '12', 'textAlign' => 'left'],
- ['name' => '应交页子', 'id' => 'gzl', 'width' => '10', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '计划用时', 'id' => 'jhys', 'width' => '8', 'autoWrap' => "true", 'textAlign' => 'left']
- ],
- 'rows' => []
- ];
- // 将 $list 转换为一个以 '机台名称' 为键的数组
- $listIndexed = [];
- foreach ($list as $item) {
- if (!isset($listIndexed[$item['机台名称']])) {
- $listIndexed[$item['机台名称']] = [];
- }
- $listIndexed[$item['机台名称']][] = $item;
- }
- foreach ($machineSerials as $machineName => $v) {
- if (isset($listIndexed[$machineName])) {
- foreach ($listIndexed[$machineName] as $v1) {
- $result['rows'][] = [
- 'jtmc' => $machineName,
- 'zt' => $v1['状态'],
- 'cxsj' => $v1['持续时间'],
- 'zybh' => $v1['作业编号'],
- 'zymc' => $v1['作业名称'],
- 'gzl' => round($v1['工作量'], 2),
- 'jhys' => round($v1['计划用时'], 2)
- ];
- }
- } else {
- $result['rows'][] = [
- 'jtmc' => $machineName,
- 'zt' => $v['status'] == 1 ? '未排产' : $v['status'],
- 'cxsj' => '',
- 'zybh' => '',
- 'zymc' => '',
- 'gzl' => '',
- 'jhys' => ''
- ];
- }
- }
- // 不再需要 ksort 和 array_values,因为 $result['rows'] 已经是按顺序添加的
- $res = ['status' => 0, 'msg' => '', 'data' => $result];
- return json($res);
- }
- //折、配、锁、糊机台实时生产进度->接口
- public function zpsh_schedule(){
- $redis = redis();
- $list = json_decode($redis->get(md5('zpsh_schedule_redis')), true);
- // 按排序顺序排序
- usort($list, function($a, $b) {
- return $a['排序'] - $b['排序'];
- });
- // 工作中心相同的,先按状态排序
- $status_order = ['进行中', '已排产', '作业暂停', '下班挂起'];
- usort($list, function($a, $b) use ($status_order) {
- $work_center_cmp = strcmp($a['机台名称'], $b['机台名称']);
- if ($work_center_cmp === 0) {
- $status_cmp = array_search($a['状态'], $status_order) - array_search($b['状态'], $status_order);
- if ($status_cmp === 0) {
- return $a['排序'] - $b['排序'];
- }
- return $status_cmp;
- }
- return $work_center_cmp;
- });
- $machineSerialData = Db::table("machineneserial")->where('status', 2)->select();
- $machineSerials = array_column($machineSerialData, null, 'machinen_name');
- $result = [
- 'columns' => [
- ['name' => '机台名称', 'id' => 'jtmc', 'width' => '19', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '作业编号', 'id' => 'zybh', 'width' => '18', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '作业名称', 'id' => 'zymc', 'width' => '32', 'textAlign' => 'left'],
- ['name' => '持续时间', 'id' => 'cxsj', 'width' => '14', 'textAlign' => 'left'],
- ['name' => '状态', 'id' => 'zt', 'width' => '12', 'textAlign' => 'left'],
- ['name' => '工作量 ', 'id' => 'gzl', 'width' => '12', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '计划用时', 'id' => 'jhys', 'width' => '8', 'autoWrap' => "true", 'textAlign' => 'left']
- ],
- 'rows' => []
- ];
- // 将 $list 转换为一个以 '机台' 为键的数组的数组
- $listIndexed = [];
- foreach ($list as $item) {
- if (!isset($listIndexed[$item['机台名称']])) {
- $listIndexed[$item['机台名称']] = [];
- }
- $listIndexed[$item['机台名称']][] = $item;
- }
- foreach ($machineSerials as $machineName => $v) {
- $serial = $v['serial'];
- if (isset($listIndexed[$machineName])) {
- foreach ($listIndexed[$machineName] as $v1) {
- $result['rows'][] = [
- 'jtmc' => $v['machinen_name'],
- 'zt' => $v1['状态'],
- 'cxsj' => $v1['持续时间'],
- 'zybh' => $v1['作业编号'],
- 'zymc' => $v1['作业名称'],
- 'gzl' => round($v1['工作量'], 2),
- 'jhys' => round($v1['计划用时'], 2)
- ];
- }
- } else {
- $result['rows'][] = [
- 'jtmc' => $machineName,
- 'zt' => $v['status'] == 2 ? '未排产' : $v['status'],
- 'zybh' => '',
- 'zymc' => '',
- 'gzl' => '',
- 'jhys' => '',
- 'zt1' => '' // 添加这个字段,确保结构一致
- ];
- }
- }
- // 不再需要 ksort 和 array_values,因为 $result['rows'] 已经是按顺序添加的
- $res = ['status' => 0, 'msg' => '', 'data' => $result];
- return json($res);
- }
- //装订机台实时生产进度->接口
- public function zd_schedule(){
- $redis = redis();
- $list = json_decode($redis->get(md5('zd_schedule_redis')), true);
- // 按排序顺序排序
- usort($list, function($a, $b) {
- return $a['排序'] - $b['排序'];
- });
- // 工作中心相同的,先按状态排序
- $status_order = ['进行中', '已排产', '作业暂停', '下班挂起'];
- usort($list, function($a, $b) use ($status_order) {
- $work_center_cmp = strcmp($a['机台名称'], $b['机台名称']);
- if ($work_center_cmp === 0) {
- $status_cmp = array_search($a['状态'], $status_order) - array_search($b['状态'], $status_order);
- if ($status_cmp === 0) {
- return $a['排序'] - $b['排序'];
- }
- return $status_cmp;
- }
- return $work_center_cmp;
- });
- $machineSerialData = Db::table("machineneserial")->where('status', 3)->select();
- $machineSerials = array_column($machineSerialData, null, 'machinen_name');
- $result = [
- 'columns' => [
- ['name' => '机台名称', 'id' => 'jtmc', 'width' => '19', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '作业编号', 'id' => 'zybh', 'width' => '18', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '作业名称', 'id' => 'zymc', 'width' => '32', 'textAlign' => 'left'],
- ['name' => '持续时间', 'id' => 'cxsj', 'width' => '14', 'textAlign' => 'left'],
- ['name' => '状态', 'id' => 'zt', 'width' => '12', 'textAlign' => 'left'],
- ['name' => '工作量 ', 'id' => 'gzl', 'width' => '12', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '计划用时', 'id' => 'jhys', 'width' => '8', 'autoWrap' => "true", 'textAlign' => 'left']
- ],
- 'rows' => []
- ];
- // 将 $list 转换为一个以 '机台' 为键的数组的数组
- $listIndexed = [];
- foreach ($list as $item) {
- if (!isset($listIndexed[$item['机台名称']])) {
- $listIndexed[$item['机台名称']] = [];
- }
- $listIndexed[$item['机台名称']][] = $item;
- }
- foreach ($machineSerials as $machineName => $v) {
- $serial = $v['serial'];
- if (isset($listIndexed[$machineName])) {
- foreach ($listIndexed[$machineName] as $v1) {
- $result['rows'][] = [
- 'jtmc' => $v['machinen_name'],
- 'zt' => $v1['状态'],
- 'cxsj' => $v1['持续时间'],
- 'zybh' => $v1['作业编号'],
- 'zymc' => $v1['作业名称'],
- 'gzl' => round($v1['工作量'], 2),
- 'jhys' => round($v1['计划用时'], 2)
- ];
- }
- } else {
- $result['rows'][] = [
- 'jtmc' => $machineName,
- 'zt' => $v['status'] == 3 ? '未排产' : $v['status'],
- 'zybh' => '',
- 'zymc' => '',
- 'gzl' => '',
- 'jhys' => '',
- 'zt1' => '' // 添加这个字段,确保结构一致
- ];
- }
- }
- // 不再需要 ksort 和 array_values,因为 $result['rows'] 已经是按顺序添加的
- $res = ['status' => 0, 'msg' => '', 'data' => $result];
- return json($res);
- }
- /**
- * 第三屏第二页 机台生产效率看板
- */
- //饼状图分组【Bi根据饼状图分组轮播,柱状图机台变化】
- public function machine_grouping() {
- $result = ['单双色印刷机台', '四色印刷机', '标规轮转印刷机', '大规轮转印刷机', '胶订联动线', '骑马精装联动线'];
- $data = [
- "columns" => [
- ["name" => "分组", "id" => "subsys"]
- ],
- "rows" => []
- ];
- foreach ($result as $value) {
- $data["rows"][] = ["subsys" => $value];
- }
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $data
- ];
- return json_encode($res, JSON_UNESCAPED_UNICODE);
- }
- //单双色印刷机台 缓存
- public function dssj_scxl_redis(){
- //设置redis缓存
- $redis=redis();
- $redis_key = md5('dssj_scxl_redis');
- //查询近30天
- $start_time = date('Y-m-d', strtotime('-30 days'));
- $end_time = date('Y-m-d', time());
- //单双色机
- $res1 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- (SELECT GROUP_CONCAT(DISTINCT aa.机长) FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长 AS 机长
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- DTp.cName 机长
- FROM scDayRpt_Teams ttT
- LEFT JOIN scDayRpt_Teams_People DTP
- ON ttT.ID = DTP.ID_Teams
- AND DTP.cStation = '机长'
- WHERE ttt.nOutput_RZ > 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.Name_WorkGroup,
- DTp.cName)TB1
- WHERE LEFT(TB1.机台名称, 3) = 'BB机'
- OR TB1.机台名称 IN ( '海德堡SM1号', '海德堡SM2号' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- )aa
- WHERE aa.班组名称 = tbu.班组名称
- ) AS 机长信息, Cast(Sum(TBU.班组产量) AS SIGNED) AS 实物总产量,
- Cast(Sum(TBU.有效工作时间 * TBU.定额 ) AS SIGNED) AS 折算后总产量,
- Sum(TBU.考核工作时间 * TBU.定额) AS 考核总产量,
- CASE
- WHEN Sum(TBU.有效工作时间 * TBU.定额 ) >= Sum(TBU.考核工作时间 * TBU.定额) THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- TBU.考核工作时间 * Count(*) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( TBU.考核工作时间 * Count(*) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(5, 0)) / Count(*) AS DECIMAL(6, 4))AS 完成率
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- 5500 定额,
- TB1.班组名称,
- Sum(TB1.实际工作时间) 实际工作时间,
- Sum(TB1.班组产量) 班组产量,
- Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(5, 2)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 2)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 10 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 10 AS 考核工作时间,
- CASE
- WHEN Cast(( Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) ) / 10 * 100 AS DECIMAL(5, 2)) >= 100 THEN 100
- ELSE Cast(( Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) ) / 10 * 100 AS DECIMAL(5, 2))
- END AS 完成百分比,
- CASE
- WHEN Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) >= 10 THEN '1'
- ELSE '未完成'
- END AS 效率分析
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttT.id,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ,
- ttt.iWorkingHours)TB1
- WHERE LEFT(TB1.机台名称, 3) = 'BB机'
- OR TB1.机台名称 IN ( '海德堡SM1号', '海德堡SM2号' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.考核工作时间
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC");
- foreach($res1 as $k=>$v){
- $res[$k]['完成率']=round($v['完成率']*100);
- $res[$k]['班组名称']=$v['班组名称'];
- $res[$k]['开机总次数']=$v['开机总次数'];
- $res[$k]['完成次数']=$v['完成次数'];
- }
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'机台生产效率单双色机、四色机缓存 存进去了';
- return json($res);
- }
- //四色印刷机 缓存
- public function ssj_scxl_redis(){
- //设置redis缓存
- $redis=redis();
- $redis_key = md5('ssj_scxl_redis');
- //查询近30天
- $start_time = date('Y-m-d', strtotime('-30 days'));
- $end_time = date('Y-m-d', time());
- //四色机
- $res2 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- (SELECT GROUP_CONCAT(DISTINCT aa.机长) FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长 AS 机长
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- DTp.cName 机长
- FROM scDayRpt_Teams ttT
- LEFT JOIN scDayRpt_Teams_People DTP
- ON ttT.ID = DTP.ID_Teams
- AND DTP.cStation = '机长'
- WHERE ttt.nOutput_RZ > 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.Name_WorkGroup,
- DTp.cName)TB1
- WHERE TB1.机台名称 IN ( '四色机02号机', '海德堡5+L 01号机', '海德堡01号机', '三菱机02号机',
- '三菱机01号机', '小森八色01号机', '小森八色02号机' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- )aa
- WHERE aa.班组名称 = tbu.班组名称) AS 机长信息,
- Cast(Sum(TBU.班组产量) AS SIGNED) AS 实物总产量,
- Cast(Sum(TBU.有效工作时间* TBU.定额 ) AS SIGNED) AS 折算后总产量,
- Sum(TBU.考核工作时间 * TBU.定额) AS 考核总产量,
- CASE
- WHEN Sum(TBU.有效工作时间 ) >= Sum(TBU.考核工作时间 ) THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- TBU.考核工作时间 * Count(*) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( TBU.考核工作时间 * Count(*) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(6, 0)) / Count(*) AS DECIMAL(5, 2))AS 完成率
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- 8000 定额,
- TB1.班组名称,
- Sum(TB1.班组产量) 班组产量,
- Sum(TB1.实际工作时间) 实际工作时间,
- Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 2)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 10 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 10 AS 考核工作时间,
- CASE
- WHEN Cast(( Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) ) / 10 * 100 AS DECIMAL(5, 2)) >= 100 THEN 100
- ELSE Cast(( Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) ) / 10 * 100 AS DECIMAL(5, 2))
- END AS 完成百分比,
- CASE
- WHEN Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) >= 10 THEN '1'
- ELSE '未完成'
- END AS 效率分析
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- -- 上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- left JOIN sctJFBActive b
- ON b.ID = a.ID_Act WHERE ttT.iDayRptStatus >=0
-
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ,
- ttt.iWorkingHours)TB1
- WHERE TB1.机台名称 IN( '四色机02号机', '海德堡5+L 01号机', '海德堡01号机', '三菱机02号机', '三菱机01号机' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称
-
- UNION ALL
- SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- 7000 定额,
- TB1.班组名称,
- Sum(TB1.班组产量) 班组产量,
- Sum(TB1.实际工作时间) 实际工作时间,
- Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 3)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 10 / 60.00 AS DECIMAL(5, 3)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 10 AS 考核工作时间,
- CASE
- WHEN Cast(( Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) ) / 10 * 100 AS DECIMAL(5, 2)) >= 100 THEN 100
- ELSE Cast(( Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) ) / 10 * 100 AS DECIMAL(5, 2))
- END AS 完成百分比,
- CASE
- WHEN Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) >= 10 THEN '1'
- ELSE '未完成'
- END AS 效率分析
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- -- 上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.iWorkingHours,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '小森八色01号机'
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称
-
- UNION ALL
- SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- 10000 定额, TB1.班组名称,
- Sum(TB1.班组产量) 班组产量,
- Sum(TB1.实际工作时间) 实际工作时间,
- Cast(Sum(TB1.班组产量) / 10000 AS DECIMAL(5, 2)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 2)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 2.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 10000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 2.5 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 12 AS 考核工作时间,
- Cast(( Cast(Sum(TB1.班组产量) / 10000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 2.5 / 60.00 + Sum(TB1.周保养时间) ) / 12 * 100 AS DECIMAL(5, 2)) AS 完成百分比,
- CASE
- WHEN Cast(Sum(TB1.班组产量) / 10000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 2.5 / 60.00 + Sum(TB1.周保养时间) >= 12 THEN '1'
- ELSE '未完成'
- END AS 效率分析
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.iWorkingHours,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '小森八色02号机'
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称
- )TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.考核工作时间
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC
- ");
- foreach($res2 as $k=>$v){
- $res[$k]['完成率']=round($v['完成率']*100);
- $res[$k]['班组名称']=$v['班组名称'];
- $res[$k]['开机总次数']=$v['开机总次数'];
- $res[$k]['完成次数']=$v['完成次数'];
- }
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'机台生产效率单双色机、四色机缓存 存进去了';
- return json($res);
- }
- //标规轮转印刷机
- public function bglz_scxl_redis(){
- //设置redis缓存
- $redis=redis();
- $redis_key = md5('bglz_scxl_redis');
- //查询近30天
- $start_time = date('Y-m-d', strtotime('-30 days'));
- $end_time = date('Y-m-d', time());
- //标规轮转印刷机
- $res5 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- (SELECT GROUP_CONCAT(DISTINCT aa.机长)FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长 AS 机长
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- DTp.cName 机长
- FROM scDayRpt_Teams ttT
- LEFT JOIN scDayRpt_Teams_People DTP
- ON ttT.ID = DTP.ID_Teams
- AND DTP.cStation = '机长'
- WHERE ttt.nOutput_RZ > 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.Name_WorkGroup,
- DTp.cName)TB1
- WHERE TB1.机台名称 IN ( '标规小森商轮1号', '标规小森商轮2号', '标规三菱商轮1号',
- '标规三菱商轮2号', '标规高斯轮转1号', '标规报轮1号', '标规204胶轮1号' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- )aa
- WHERE aa.班组名称 = tbu.班组名称) AS 机长,
- Cast(Sum(TBU.班组产量) AS SIGNED) AS 实物总产量,
- Cast(Sum(TBU.考核工作时间 * TBU.定额 * TBU.完成百分比 / 100) AS SIGNED) AS 折算后总产量,
- Sum(TBU.考核工作时间 * TBU.定额) AS 考核总产量,
- CASE
- WHEN Cast(Sum(TBU.考核工作时间 * TBU.定额 * TBU.完成百分比 / 100) AS SIGNED) >= Sum(TBU.考核工作时间 * TBU.定额)THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- TBU.考核工作时间 * Count(*) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( TBU.考核工作时间 * Count(*) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(2, 0)) / Count(*) AS DECIMAL(5, 2))AS 完成率
- FROM (SELECT TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- DATE_FORMAT(TBU2.生产日期,'%w') 备注,
- CASE
- WHEN ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) >= TBU2.考核工作时间 THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- TBU2.定额,
- TBU2.考核工作时间,
- Sum(TBU2.班组产量) 班组产量,
- Sum(TBU2.产量折算时间) 产量折算时间,
- Sum(TBU2.改墨次数) 改墨次数,
- Sum(TBU2.改墨时间) 改墨时间,
- Sum(TBU2.改纸路次数) 改纸路次数,
- Sum(TBU2.改纸路时间) 改纸路时间,
- Sum(TBU2.上版块数) 上版块数,
- Sum(TBU2.上版时间) 上版时间,
- Sum(TBU2.周保养时间) 周保养时间,
- ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) AS 有效工作时间,
- Cast(( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) / TBU2.考核工作时间 * 100 AS DECIMAL(5, 2)) 完成百分比
- FROM (SELECT TB1.生产日期,
- TB1.机台名称,
- 14000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 14000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 14000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '标规小森商轮1号'
- UNION ALL
- SELECT TB1.生产日期,
- TB1.机台名称,
- 18000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 18000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 18000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '标规小森商轮1号'
- UNION ALL
- SELECT TB1.生产日期,
- TB1.机台名称,
- 20000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 20000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 20000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 IN( '标规小森商轮2号', '标规三菱商轮1号', '标规三菱商轮2号', '标规204胶轮1号', '标规高斯轮转1号' )
- UNION ALL
- SELECT TB1.生产日期,
- TB1.机台名称,
- 12000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 12000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 12000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 IN( '标规高斯轮转1号', '标规报轮1号' ))TBU2
- WHERE TBU2.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU2.班组产量 > 0 /*Wheres*/
- GROUP BY TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.定额,
- TBU2.考核工作时间)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.考核工作时间
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC
- ");
- foreach($res5 as $k=>$v){
- $res[$k]['完成率']=round($v['完成率']*100);
- $res[$k]['班组名称']=$v['班组名称'];
- $res[$k]['开机总次数']=$v['开机总次数'];
- $res[$k]['完成次数']=$v['完成次数'];
- }
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'轮转缓存 存进去了';
- return json($res);
- }
- //大规轮转印刷机
- public function dglz_scxl_redis(){
- //设置redis缓存
- $redis=redis();
- $redis_key = md5('dglz_scxl_redis');
- //查询近30天
- $start_time = date('Y-m-d', strtotime('-30 days'));
- $end_time = date('Y-m-d', time());
- //大规轮转印刷机
- $res5 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- (SELECT GROUP_CONCAT(DISTINCT aa.机长)FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长 AS 机长
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- DTp.cName 机长
- FROM scDayRpt_Teams ttT
- LEFT JOIN scDayRpt_Teams_People DTP
- ON ttT.ID = DTP.ID_Teams
- AND DTP.cStation = '机长'
- WHERE ttt.nOutput_RZ > 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.Name_WorkGroup,
- DTp.cName)TB1
- WHERE TB1.机台名称 IN ( '大规三菱商轮1号', '大规小森商轮1号')
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- )aa
- WHERE aa.班组名称 = tbu.班组名称) AS 机长,
- Cast(Sum(TBU.班组产量) AS SIGNED) AS 实物总产量,
- Cast(Sum(TBU.考核工作时间 * TBU.定额 * TBU.完成百分比 / 100) AS SIGNED) AS 折算后总产量,
- Sum(TBU.考核工作时间 * TBU.定额) AS 考核总产量,
- CASE
- WHEN Cast(Sum(TBU.考核工作时间 * TBU.定额 * TBU.完成百分比 / 100) AS SIGNED) >= Sum(TBU.考核工作时间 * TBU.定额)THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- TBU.考核工作时间 * Count(*) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( TBU.考核工作时间 * Count(*) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(2, 0)) / Count(*) AS DECIMAL(5, 2))AS 完成率
- FROM (SELECT TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- DATE_FORMAT(TBU2.生产日期,'%w') 备注,
- CASE
- WHEN ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) >= TBU2.考核工作时间 THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- TBU2.定额,
- TBU2.考核工作时间,
- Sum(TBU2.班组产量) 班组产量,
- Sum(TBU2.产量折算时间) 产量折算时间,
- Sum(TBU2.改墨次数) 改墨次数,
- Sum(TBU2.改墨时间) 改墨时间,
- Sum(TBU2.改纸路次数) 改纸路次数,
- Sum(TBU2.改纸路时间) 改纸路时间,
- Sum(TBU2.上版块数) 上版块数,
- Sum(TBU2.上版时间) 上版时间,
- Sum(TBU2.周保养时间) 周保养时间,
- ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) AS 有效工作时间,
- Cast(( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) / TBU2.考核工作时间 * 100 AS DECIMAL(5, 2)) 完成百分比
- FROM (SELECT TB1.生产日期,
- TB1.机台名称,
- 14000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 14000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 14000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '大规三菱商轮1号'
- UNION ALL
- SELECT TB1.生产日期,
- TB1.机台名称,
- 18000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 18000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 18000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '大规小森商轮1号'
- UNION ALL
- SELECT TB1.生产日期,
- TB1.机台名称,
- 20000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 20000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 20000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 IN('大规小森商轮1号')
- UNION ALL
- SELECT TB1.生产日期,
- TB1.机台名称,
- 12000 定额,
- TB1.班组名称,
- TB1.班组产量,
- Cast(TB1.班组产量 / 12000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 12000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CONVERT(ttt.drptdate,CHAR(10)) 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.drptdate,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 IN( '大规三菱商轮1号', '大规小森商轮1号' ))TBU2
- WHERE TBU2.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU2.班组产量 > 0 /*Wheres*/
- GROUP BY TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.定额,
- TBU2.考核工作时间)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.考核工作时间
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC
- ");
- foreach($res5 as $k=>$v){
- $res[$k]['完成率']=round($v['完成率']*100);
- $res[$k]['班组名称']=$v['班组名称'];
- $res[$k]['开机总次数']=$v['开机总次数'];
- $res[$k]['完成次数']=$v['完成次数'];
- }
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'轮转缓存 存进去了';
- return json($res);
- }
- //胶订联动线
- public function jdld_scxl_redis(){
- //设置redis缓存
- $redis=redis();
- $redis_key = md5('jdld_scxl_redis');
- //查询近30天
- $start_time = date('Y-m-d', strtotime('-30 days'));
- $end_time = date('Y-m-d', time());
- //胶订
- $res4 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- -- TBU.机长,
- -- (SELECT GROUP_CONCAT(DISTINCT aa.机长)FROM (SELECT TBU.机台名称,
- -- TBU.班组名称,
- -- TBU.机长,
- -- TBU.生产日期
- -- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- -- TB1.机台名称,
- -- TB1.班组名称
- -- TB1.机长 AS 机长
- -- FROM (SELECT CASE
- -- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- -- FROM sysetup
- -- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(dOnDuty,INTERVAL -1 day)
- -- ELSE ttt.dOnDuty
- -- END 生产日期,
- -- ttt.Name_Machine 机台名称,
- -- ttt.Name_WorkGroup 班组名称,
- -- DTp.cName 机长
- -- FROM scDayRpt_Teams ttT
- -- LEFT JOIN scDayRpt_Teams_People DTP
- -- ON ttT.ID = DTP.ID_Teams
- -- AND DTP.cStation = '机长'
- -- WHERE ttt.nOutput_RZ > 0 and ttt.dOnDuty BETWEEN '{$start_time}' AND '{$end_time}'
- -- GROUP BY ttt.dOnDuty,
- -- ttt.Name_Machine,
- -- ttt.Name_WorkGroup,
- -- DTp.cName)TB1
- -- WHERE TB1.机台名称 IN ( '胶订潮流1号', '胶订潮流2号', '胶订潮流2号', '胶订精工1号',
- -- '胶订精密达1号', '胶订精密达2号' )
- -- GROUP BY TB1.生产日期,
- -- TB1.机台名称,
- -- TB1.班组名称,
- -- TB1.机长)TBU
- -- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- -- GROUP BY TBU.机台名称,
- -- TBU.班组名称,
- -- TBU.机长,
- -- TBU.生产日期)aa
- -- WHERE aa.班组名称 = tbu.班组名称) AS 机长信息,
- Cast(Sum(TBU.班组产量) AS SIGNED) AS 总产量,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- Sum(TBU.考核工作时间) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( Sum(TBU.考核工作时间) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(2, 0)) / Count(*) AS DECIMAL(5, 2)) AS 完成率
- FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- CASE
- WHEN Sum(TBU.有效工作时间) >= TBU.考核工作时间 THEN '1'
- ELSE '未完成'
- END AS 效率分析,
- TBU.定额,
- TBU.考核工作时间,
- Sum(TBU.班组产量) 班组产量,
- Sum(TBU.产量折算工时) 产量折算工时,
- Sum(TBU.改规次数) 改规次数,
- Sum(TBU.改规时间) 改规时间,
- Sum(TBU.做零活时间) 做零活时间,
- Sum(TBU.周保养时间) 周保养时间,
- Sum(TBU.有效工作时间) 有效工作时间
- FROM (SELECT TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时 考核工作时间,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- FROM (SELECT TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- IFNULL(AttFB2.班次时长, 10) 考核工时,
- Sum(TBU.班组产量) 班组产量,
- Sum(TBU.产量折算工时) 产量折算工时,
- IFNULL(ATTFB1.改规次数, 0) AS 改规次数,
- IFNULL(AttFB1.改规时间, 0) AS 改规时间,
- IFNULL(AttFB1.做零活时间, 0) 做零活时间,
- IFNULL(AttFB1.周保养时间, 0) 周保养时间,
- ( Sum(TBU.产量折算工时) + IFNULL(AttFB1.改规时间, 0)
- + IFNULL(AttFB1.做零活时间, 0)
- + IFNULL( AttFB1.周保养时间, 0) ) 有效工作时间
- FROM (SELECT JobTB.ID ID_Calendar,
- JobTB.机台名称,
- JobTB.班组名称,
- JobTB.生产日期,
- DATE_FORMAT(JobTB.生产日期,'%W') 备注,
- Avg(JobTB.定额) 定额,
- Sum(JobTB.班组产量) 班组产量,
- Cast(Sum(产量折算工时) AS DECIMAL(5, 2)) 产量折算工时
- FROM (SELECT ttFC.ID,
- CONVERT (dRealRptDate,CHAR(10)) 生产日期,
- TB2.ID_Teams,
- TB2.cJtmc 机台名称,
- CASE
- WHEN a.CZWKB LIKE '大16%' THEN ( CASE
- WHEN a.NZWYZ >= 9.75 THEN 4500
- ELSE 7000
- END )
- ELSE ( CASE
- WHEN a.NZWYZ >= 9.75 THEN 4500
- ELSE 7500
- END )
- END AS 定额,
- TB2.cName_Team 班组名称,
- ttFc.ID_TeamManRecord,
- ttTJ.cCode_ProductOrder AS cCode_ProductOrder,
- ttTJ.cCode_JobM AS cCode_JobM,
- ttTJ.cName_JobM AS cName_JobM,
- ttTj.cType_AProduct,
- a.NZWYZ,
- ttTJ.nOutput_R AS 班组产量,
- CASE
- WHEN a.CZWKB LIKE '大16%' THEN ( CASE
- WHEN a.NZWYZ >= 9.75 THEN Cast(Round(ttTJ.nOutput_R / 4500, 3)AS DECIMAL(6, 3))
- ELSE Cast(Round(ttTJ.nOutput_R / 7000, 3)AS DECIMAL(6, 3))
- END )
- ELSE ( CASE
- WHEN a.NZWYZ >= 9.75 THEN Cast(Round(ttTJ.nOutput_R / 4500, 3)AS DECIMAL(6, 3))
- ELSE Cast(Round(ttTJ.nOutput_R / 7500, 3)AS DECIMAL(6, 3))
- END )
- END AS 产量折算工时
- FROM scDayRpt_Teams_JobContent ttTJ
- INNER JOIN scmachinejob b
- ON b.ID = ttTJ.ID_JobM
- LEFT JOIN scFactoryCalendar ttFC
- ON ttTJ.id_scFactoryCalendar = ttFC.id
- LEFT JOIN (SELECT CONVERT(CONVERT(ttDRpt_T.dRealRptDate,CHAR(10)),DATETIME) dRealRptDate,
- ttT.cJtmc AS cJtmc,
- ttT.cBanzuMc AS cName_Team,
- ttT.cBmbh AS cBmbh,
- ttT.cBmmc AS cbmmc,
- ttDRpt_T.ID_WorkCenter,
- ttT.cGzzxmc AS cgzzxmc,
- tvD.cName AS cname,
- ttS.cName AS cName_S,
- ttDRpt_T.dOnDuty AS dStart,
- ttDRpt_T.dOffDuty AS dEnd,
- ttDRpt_T.nOutput_RZ AS nAmount_R,
- IFNULL(ttDRpt_T.iDayRptStatus, -1) AS iDayRptStatus,
- ttFC.ID AS ID_TC,
- IFNULL(ttDRpt_T.ID, -1) AS ID_TDRpt,
- ttDRpt_T.dstamp,
- ttDRpt_T.id AS ID_Teams
-
- FROM scFactoryCalendar ttFC
- LEFT JOIN scShift ttS
- ON ttS.ID = ttFC.id_scShift
- LEFT JOIN (SELECT *,
- CASE
- WHEN CONVERT(dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(dOnDuty,INTERVAL -1 DAY)
- ELSE dOnDuty
- END dRealRptDate
- FROM scDayRpt_Teams) ttDRpt_T
- ON ttDRpt_T.ID_Calendar = ttFC.ID
- AND ttDRpt_T.iDayRptStatus >= 0
- LEFT JOIN banzu ttT
- ON ttT.banzuId = ttFC.id_Machine
- LEFT JOIN (SELECT iType, ID, cCode, cName, iGzzxId, ID_BM, cbmbh, cbmmc, cType_Sys, iStop, cType_Dev, cShortName, iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType, MKernel.ID, MKernel.cBh AS cCode, MKernel.cGzzxmc AS cName, MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, Mkernel.cGzzxlx AS cType_Sys, MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev, MKernel.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM MKernel INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType, dzyssb.ID, dzyssb.csbbh AS cCode, dzyssb.csbmc AS cName, Mkernel.ID AS iGzzxId, dzBM.id AS ID_BM,
- dzBM.cbmbh, dzBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, dzyssb.iStopUse AS iStop, dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM dzyssb INNER JOIN
- MKernel ON MKernel.ID = dzyssb.ID_Center INNER JOIN
- dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType, MKerJzmb.ID, MKerJzmb.cJzbh AS cCode, MKerJzmb.cJzmc AS cName, MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev, MKerJzmb.cShortName, MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb INNER JOIN
- MKernel ON MKernel.ID = MKerJzmb.iGzzxId INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cbmbh INNER JOIN
- dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType, iywdwid AS ID, cywdwbh AS cCode, cdwmc AS cName, iywdwid AS iGzzxId, iywdwid AS ID_BM,
- cywdwbh AS cbmbh, cdwmc AS cbmmc, '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop, '' AS cType_Dev, DZYWDW.cjc AS cShortName,
- 0 iTypeWage, 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType, - 1, '', '外厂资源', - 1, - 1 AS ID_BM, '' AS cbmbh, '' AS cbmmc, '' AS cType_Sys, 0 AS iStop, '' AS cType_Dev,
- '外厂' AS cShortName, 0 AS iTypeWage, 0 AS iOverProductType)scvDeviceAll
- WHERE (iStop = 0)) tvD
- ON tvD.ID = ttFC.ID_Parent
- AND tvD.iType IN ( 0, 1, 2 )) TB2
- ON TB2.ID_Teams = ttTJ.ID_Teams
- LEFT JOIN MCYD a
- ON a.CCYDH = ttTJ.cCode_AProduct where dRealRptDate BETWEEN '{$this->start_time()}' AND '{$this->end_time()}')JobTB
- GROUP BY 生产日期,
- JobTB.ID,
- 机台名称,
- 班组名称) tbu
- LEFT JOIN(SELECT a.ID_Calendar,
- Sum(CASE
- WHEN a.cCode_Item = 'U0073' THEN a.iState
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0073' THEN a.iState
- ELSE 0
- END) * 1 AS 改规时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0070' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 做零活时间
- FROM sctMJobFeedBackDetail_AttFB a
- LEFT JOIN MCYD b
- ON a.cProductBillCode = b.CCYDH
- /*改规U0036,改规U0064,骑订改规矩U0075,骑订项目U0076,周保养U0040*/
- GROUP BY ID_Calendar) AttFB1
- ON TBU.ID_Calendar = AttFB1.ID_Calendar
- LEFT JOIN(SELECT ID_Calendar,
- 班次时长,
- 最晚时间
- FROM (SELECT a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN Cast(a.nAmount_Item AS DECIMAL(4, 2))
- ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number()
- OVER (
- PARTITION BY a.ID_Calendar
- ORDER BY a.dTime DESC) AS RowNumber
- FROM sctMJobFeedBackDetail_AttFB a
- WHERE a.cCode_Item = 'U0077') AS subquery
- WHERE RowNumber = 1) AttFB2
- ON TBU.ID_Calendar = AttFB2.ID_Calendar
- GROUP BY TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- AttFB2.班次时长,
- AttFB1.做零活时间,
- AttFB1.周保养时间,
- ATTFB1.改规次数,
- AttFB1.改规时间) TBU2
- WHERE TBU2.机台名称 LIKE '%胶订精密达%'
- GROUP BY TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- UNION ALL
- SELECT TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时 考核工作时间,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- FROM (SELECT TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- IFNULL(AttFB2.班次时长, 10) 考核工时,
- Sum(TBU.班组产量) 班组产量,
- Sum(TBU.产量折算工时) 产量折算工时,
- IFNULL(ATTFB1.改规次数, 0) AS 改规次数,
- IFNULL(AttFB1.改规时间, 0) AS 改规时间,
- IFNULL(AttFB1.做零活时间, 0) 做零活时间,
- IFNULL(AttFB1.周保养时间, 0) 周保养时间,
- ( Sum(TBU.产量折算工时) + IFNULL(AttFB1.改规时间, 0)
- + IFNULL(AttFB1.做零活时间, 0)
- + IFNULL( AttFB1.周保养时间, 0) ) 有效工作时间
- FROM (SELECT JobTB.ID ID_Calendar,
- JobTB.机台名称,
- JobTB.班组名称,
- JobTB.生产日期,
- DATE_FORMAT(JobTB.生产日期,'%W') 备注,
- Avg(JobTB.定额) 定额,
- Sum(班组产量) 班组产量,
- Cast(Sum(产量折算工时) AS DECIMAL(5, 2)) 产量折算工时
- FROM (SELECT ttFC.ID,
- CONVERT (dRealRptDate,CHAR(10)) 生产日期,
- TB2.ID_Teams,
- TB2.cJtmc 机台名称,
- CASE
- WHEN a.CYJLX LIKE '%课本%'
- OR a.CYJLX LIKE'%教辅%' THEN 4500
- ELSE 3000
- END 定额,
- TB2.cName_Team 班组名称,
- -- TB2.机长 机长,
- ttFc.ID_TeamManRecord,
- ttTJ.cCode_ProductOrder AS cCode_ProductOrder,
- ttTJ.cCode_JobM AS cCode_JobM,
- ttTJ.cName_JobM AS cName_JobM,
- ttTj.cType_AProduct,
- a.CYJLX,
- ttTJ.nOutput_R AS 班组产量,
- CASE
- WHEN a.CYJLX LIKE'%课本%'
- OR a.CYJLX LIKE'%教辅%' THEN Cast(Round(ttTJ.nOutput_R / 4500, 3)AS DECIMAL(6, 3))
- ELSE Cast(Round(ttTJ.nOutput_R / 3000, 3)AS DECIMAL(6, 3))
- END AS 产量折算工时
- FROM scDayRpt_Teams_JobContent ttTJ
- INNER JOIN scmachinejob b
- ON b.ID = ttTJ.ID_JobM
- LEFT JOIN scFactoryCalendar ttFC
- ON ttTJ.id_scFactoryCalendar = ttFC.id
- LEFT JOIN (SELECT CONVERT(CONVERT(ttDRpt_T.dRealRptDate,CHAR(10)),DATETIME) dRealRptDate,
- ttT.cJtmc AS cJtmc,
- ttT.cBanzuMc AS cName_Team,
- ttT.cBmbh AS cBmbh,
- ttT.cBmmc AS cbmmc,
- ttDRpt_T.ID_WorkCenter,
- ttT.cGzzxmc AS cgzzxmc,
- tvD.cName AS cname,
- ttS.cName AS cName_S,
- ttDRpt_T.dOnDuty AS dStart,
- ttDRpt_T.dOffDuty AS dEnd,
- ttDRpt_T.nOutput_RZ AS nAmount_R,
- IFNULL(ttDRpt_T.iDayRptStatus, -1) AS iDayRptStatus,
- ttFC.ID AS ID_TC,
- IFNULL(ttDRpt_T.ID, -1) AS ID_TDRpt,
- ttDRpt_T.dstamp,
- ttDRpt_T.id AS ID_Teams
-
- FROM scFactoryCalendar ttFC
- LEFT JOIN scShift ttS
- ON ttS.ID = ttFC.id_scShift
- LEFT JOIN (SELECT *,
- CASE
- WHEN CONVERT(dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(dOnDuty,INTERVAL -1 DAY)
- ELSE dOnDuty
- END dRealRptDate
- FROM scDayRpt_Teams) ttDRpt_T
- ON ttDRpt_T.ID_Calendar = ttFC.ID
- AND ttDRpt_T.iDayRptStatus >= 0
- LEFT JOIN banzu ttT
- ON ttT.banzuId = ttFC.id_Machine
- LEFT JOIN (SELECT iType, ID, cCode, cName, iGzzxId, ID_BM, cbmbh, cbmmc, cType_Sys, iStop, cType_Dev, cShortName, iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType, MKernel.ID, MKernel.cBh AS cCode, MKernel.cGzzxmc AS cName, MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, Mkernel.cGzzxlx AS cType_Sys, MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev, MKernel.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM MKernel INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType, dzyssb.ID, dzyssb.csbbh AS cCode, dzyssb.csbmc AS cName, Mkernel.ID AS iGzzxId, dzBM.id AS ID_BM,
- dzBM.cbmbh, dzBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, dzyssb.iStopUse AS iStop, dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM dzyssb INNER JOIN
- MKernel ON MKernel.ID = dzyssb.ID_Center INNER JOIN
- dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType, MKerJzmb.ID, MKerJzmb.cJzbh AS cCode, MKerJzmb.cJzmc AS cName, MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev, MKerJzmb.cShortName, MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb INNER JOIN
- MKernel ON MKernel.ID = MKerJzmb.iGzzxId INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cbmbh INNER JOIN
- dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType, iywdwid AS ID, cywdwbh AS cCode, cdwmc AS cName, iywdwid AS iGzzxId, iywdwid AS ID_BM,
- cywdwbh AS cbmbh, cdwmc AS cbmmc, '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop, '' AS cType_Dev, DZYWDW.cjc AS cShortName,
- 0 iTypeWage, 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType, - 1, '', '外厂资源', - 1, - 1 AS ID_BM, '' AS cbmbh, '' AS cbmmc, '' AS cType_Sys, 0 AS iStop, '' AS cType_Dev,
- '外厂' AS cShortName, 0 AS iTypeWage, 0 AS iOverProductType)scvDeviceAll
- WHERE (iStop = 0)) tvD
- ON tvD.ID = ttFC.ID_Parent
- AND tvD.iType IN ( 0, 1, 2 )) TB2
- ON TB2.ID_Teams = ttTJ.ID_Teams
- LEFT JOIN MCYD a
- ON a.CCYDH = ttTJ.cCode_AProduct where dRealRptDate BETWEEN '{$this->start_time()}' AND '{$this->end_time()}')JobTB
- GROUP BY 生产日期,
- JobTB.ID,
- 机台名称,
- 班组名称
-
- ) tbu
- LEFT JOIN(SELECT a.ID_Calendar,
- Sum(CASE
- WHEN a.cCode_Item = 'U0073' THEN a.iState
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0073' THEN a.iState
- ELSE 0
- END) * 0.75 AS 改规时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0070' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 做零活时间
- FROM sctMJobFeedBackDetail_AttFB a
- LEFT JOIN MCYD b
- ON a.cProductBillCode = b.CCYDH
- /*改规U0036,改规U0064,骑订改规矩U0075,骑订项目U0076,周保养U0040*/
- GROUP BY ID_Calendar) AttFB1
- ON TBU.ID_Calendar = AttFB1.ID_Calendar
- LEFT JOIN(SELECT ID_Calendar,
- 班次时长,
- 最晚时间
- FROM (SELECT a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN Cast(a.nAmount_Item AS DECIMAL(4, 2))
- ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number()
- OVER (
- PARTITION BY a.ID_Calendar
- ORDER BY a.dTime DESC) AS RowNumber
- FROM sctMJobFeedBackDetail_AttFB a
- WHERE a.cCode_Item = 'U0077') AS subquery
- WHERE RowNumber = 1) AttFB2
- ON TBU.ID_Calendar = AttFB2.ID_Calendar
- GROUP BY TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- AttFB2.班次时长,
- AttFB1.做零活时间,
- AttFB1.周保养时间,
- ATTFB1.改规次数,
- AttFB1.改规时间) TBU2
- WHERE TBU2.机台名称 LIKE '%胶订精工%'
- GROUP BY TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- UNION ALL
- SELECT TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时 考核工作时间,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- FROM (SELECT TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- IFNULL(AttFB2.班次时长, 10) 考核工时,
- Sum(TBU.班组产量) 班组产量,
- Sum(TBU.产量折算工时) 产量折算工时,
- IFNULL(ATTFB1.改规次数, 0) AS 改规次数,
- IFNULL(AttFB1.改规时间, 0) AS 改规时间,
- IFNULL(AttFB1.做零活时间, 0) 做零活时间,
- IFNULL(AttFB1.周保养时间, 0) 周保养时间,
- ( Sum(TBU.产量折算工时) + IFNULL(AttFB1.改规时间, 0)
- + IFNULL(AttFB1.做零活时间, 0)
- + IFNULL( AttFB1.周保养时间, 0) ) 有效工作时间
- FROM (SELECT JobTB.ID ID_Calendar,
- JobTB.机台名称,
- JobTB.班组名称,
- JobTB.生产日期,
- DATE_FORMAT(JobTB.生产日期,'%W') 备注,
- Avg(JobTB.定额) 定额,
- Sum(班组产量) 班组产量,
- Cast(Sum(产量折算工时) AS DECIMAL(5, 2)) 产量折算工时
- FROM (SELECT ttFC.ID,
- CONVERT (dRealRptDate,CHAR(10)) 生产日期,
- TB2.ID_Teams,
- TB2.cJtmc 机台名称,
- CASE
- WHEN a.CYJLX LIKE '%课本%'
- OR a.CYJLX LIKE'%教辅%' THEN 4500
- ELSE 3000
- END 定额,
- TB2.cName_Team 班组名称,
- ttFc.ID_TeamManRecord,
- ttTJ.cCode_ProductOrder AS cCode_ProductOrder,
- ttTJ.cCode_JobM AS cCode_JobM,
- ttTJ.cName_JobM AS cName_JobM,
- ttTj.cType_AProduct,
- a.CYJLX,
- ttTJ.nOutput_R AS 班组产量,
- CASE
- WHEN a.CYJLX LIKE'%课本%'
- OR a.CYJLX LIKE'%教辅%' THEN Cast(Round(ttTJ.nOutput_R / 4500, 3)AS DECIMAL(6, 3))
- ELSE Cast(Round(ttTJ.nOutput_R / 3000, 3)AS DECIMAL(6, 3))
- END AS 产量折算工时
- FROM scDayRpt_Teams_JobContent ttTJ
- INNER JOIN scmachinejob b
- ON b.ID = ttTJ.ID_JobM
- LEFT JOIN scFactoryCalendar ttFC
- ON ttTJ.id_scFactoryCalendar = ttFC.id
- LEFT JOIN (SELECT CONVERT(CONVERT(ttDRpt_T.dRealRptDate,CHAR(10)),DATETIME) dRealRptDate,
- ttT.cJtmc AS cJtmc,
- ttT.cBanzuMc AS cName_Team,
- ttT.cBmbh AS cBmbh,
- ttT.cBmmc AS cbmmc,
- ttDRpt_T.ID_WorkCenter,
- ttT.cGzzxmc AS cgzzxmc,
- tvD.cName AS cname,
- ttS.cName AS cName_S,
- ttDRpt_T.dOnDuty AS dStart,
- ttDRpt_T.dOffDuty AS dEnd,
- ttDRpt_T.nOutput_RZ AS nAmount_R,
- IFNULL(ttDRpt_T.iDayRptStatus, -1) AS iDayRptStatus,
- ttFC.ID AS ID_TC,
- IFNULL(ttDRpt_T.ID, -1) AS ID_TDRpt,
- ttDRpt_T.dstamp,
- ttDRpt_T.id AS ID_Teams
-
- FROM scFactoryCalendar ttFC
- LEFT JOIN scShift ttS
- ON ttS.ID = ttFC.id_scShift
- LEFT JOIN (SELECT *,
- CASE
- WHEN CONVERT(dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(dOnDuty,INTERVAL -1 DAY)
- ELSE dOnDuty
- END dRealRptDate
- FROM scDayRpt_Teams) ttDRpt_T
- ON ttDRpt_T.ID_Calendar = ttFC.ID
- AND ttDRpt_T.iDayRptStatus >= 0
- LEFT JOIN banzu ttT
- ON ttT.banzuId = ttFC.id_Machine
- LEFT JOIN (SELECT iType, ID, cCode, cName, iGzzxId, ID_BM, cbmbh, cbmmc, cType_Sys, iStop, cType_Dev, cShortName, iTypeWage,
- iOverProductType
- FROM (SELECT 0 AS iType, MKernel.ID, MKernel.cBh AS cCode, MKernel.cGzzxmc AS cName, MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, Mkernel.cGzzxlx AS cType_Sys, MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev, MKernel.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM MKernel INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 1 AS iType, dzyssb.ID, dzyssb.csbbh AS cCode, dzyssb.csbmc AS cName, Mkernel.ID AS iGzzxId, dzBM.id AS ID_BM,
- dzBM.cbmbh, dzBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, dzyssb.iStopUse AS iStop, dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName, 0 iTypeWage, 0 iOverProductType
- FROM dzyssb INNER JOIN
- MKernel ON MKernel.ID = dzyssb.ID_Center INNER JOIN
- dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT 2 AS iType, MKerJzmb.ID, MKerJzmb.cJzbh AS cCode, MKerJzmb.cJzmc AS cName, MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM, DZBM.cbmbh, DZBM.cbmmc, MKernel.cGzzxlx AS cType_Sys, MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev, MKerJzmb.cShortName, MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb INNER JOIN
- MKernel ON MKernel.ID = MKerJzmb.iGzzxId INNER JOIN
- DZBM ON DZBM.cbmbh = MKernel.cbmbh INNER JOIN
- dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT 3 AS iType, iywdwid AS ID, cywdwbh AS cCode, cdwmc AS cName, iywdwid AS iGzzxId, iywdwid AS ID_BM,
- cywdwbh AS cbmbh, cdwmc AS cbmmc, '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop, '' AS cType_Dev, DZYWDW.cjc AS cShortName,
- 0 iTypeWage, 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1
- UNION
- SELECT 3 AS iType, - 1, '', '外厂资源', - 1, - 1 AS ID_BM, '' AS cbmbh, '' AS cbmmc, '' AS cType_Sys, 0 AS iStop, '' AS cType_Dev,
- '外厂' AS cShortName, 0 AS iTypeWage, 0 AS iOverProductType)scvDeviceAll
- WHERE (iStop = 0)) tvD
- ON tvD.ID = ttFC.ID_Parent
- AND tvD.iType IN ( 0, 1, 2 )) TB2
- ON TB2.ID_Teams = ttTJ.ID_Teams
- LEFT JOIN MCYD a
- ON a.CCYDH = ttTJ.cCode_AProduct where dRealRptDate BETWEEN '{$this->start_time()}' AND '{$this->end_time()}')JobTB
- GROUP BY 生产日期,
- JobTB.ID,
- 机台名称,
- 班组名称
- ) tbu
- LEFT JOIN(SELECT a.ID_Calendar,
- Sum(CASE
- WHEN a.cCode_Item = 'U0073' THEN a.iState
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0073' THEN a.iState
- ELSE 0
- END) * 0.67 AS 改规时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0070' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 做零活时间
- FROM sctMJobFeedBackDetail_AttFB a
- LEFT JOIN MCYD b
- ON a.cProductBillCode = b.CCYDH
- /*改规U0036,改规U0064,骑订改规矩U0075,骑订项目U0076,周保养U0040*/
- GROUP BY ID_Calendar) AttFB1
- ON TBU.ID_Calendar = AttFB1.ID_Calendar
- LEFT JOIN(SELECT ID_Calendar,
- 班次时长,
- 最晚时间
- FROM (SELECT a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN Cast(a.nAmount_Item AS DECIMAL(4, 2))
- ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number()
- OVER (
- PARTITION BY a.ID_Calendar
- ORDER BY a.dTime DESC) AS RowNumber
- FROM sctMJobFeedBackDetail_AttFB a
- WHERE a.cCode_Item = 'U0077') AS subquery
- WHERE RowNumber = 1) AttFB2
- ON TBU.ID_Calendar = AttFB2.ID_Calendar
- GROUP BY TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- AttFB2.班次时长,
- AttFB1.做零活时间,
- AttFB1.周保养时间,
- ATTFB1.改规次数,
- AttFB1.改规时间) TBU2
- WHERE TBU2.机台名称 LIKE '%胶订潮流%'
- GROUP BY TBU2.机台名称,
- TBU2.班组名称,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间)TBU
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- TBU.考核工作时间)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC
- ");
- foreach($res4 as $k=>$v){
- $res[$k]['完成率']=round($v['完成率']*100);
- $res[$k]['班组名称']=$v['班组名称'];
- $res[$k]['开机总次数']=$v['开机总次数'];
- $res[$k]['完成次数']=$v['完成次数'];
- }
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'胶订联动缓存 存进去了';
- return json($res);
- }
- //骑马精装联动线
- public function qmjz_scxl_redis(){
- //设置redis缓存
- $redis=redis();
- $redis_key = md5('qmjz_scxl_redis');
- //查询近30天
- $start_time = date('Y-m-d', strtotime('-30 days'));
- $end_time = date('Y-m-d', time());
- //骑马
- $res6 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- (SELECT GROUP_CONCAT(DISTINCT aa.机长) FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长 AS 机长
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- DTp.cName 机长
- FROM scDayRpt_Teams ttT
- LEFT JOIN scDayRpt_Teams_People DTP
- ON ttT.ID = DTP.ID_Teams
- AND DTP.cStation = '机长'
- WHERE ttt.nOutput_RZ > 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.Name_WorkGroup,
- DTp.cName)TB1
- WHERE TB1.机台名称 IN ( '骑马联动01号', '骑马联动02号', '骑马联动03号' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期)aa
- WHERE aa.班组名称 = tbu.班组名称) AS 机长,
- Cast(Sum(TBU.班组产量) AS SIGNED) AS 总产量,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- Sum(TBU.考核工作时间) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( Sum(TBU.考核工作时间) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(2, 0)) / Count(*) AS DECIMAL(5, 2)) AS 完成率
- FROM (
-
- SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- CASE
- WHEN Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) >= TBU.考核工时 THEN '1'
- ELSE '未完成'
- END 效率分析,
- TBU.定额,
- TBU.考核工时 考核工作时间,
- Sum(TBU.班组产量) 班组产量,
- Sum(TBU.产量折算工时) 产量折算工时,
- Sum(TBU.改规次数) 改规次数,
- Sum(TBU.改规时间) 改规时间,
- Sum(TBU.做零活时间) 做零活时间,
- Sum(TBU.周保养时间) 周保养时间,
- Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) 有效工作时间,
- CASE
- WHEN Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) >= TBU.考核工时 THEN 100
- ELSE Cast(( Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) ) / TBU.考核工时 * 100 AS DECIMAL (4, 2))
- END 完成百分比
- FROM (SELECT ttt.Name_Machine 机台名称,
- CONVERT(ttt.dRealRptDate,CHAR(10)) 生产日期,
- DATE_FORMAT(ttt.dRealRptDate,'%W') 备注,
- ttt.Name_WorkGroup 班组名称,
- CASE
- WHEN ttt.Name_Machine = '骑马联动01号' THEN 4000
- WHEN ttt.Name_Machine = '骑马联动02号'THEN 4500
- WHEN ttt.Name_Machine = '骑马联动03号'THEN 5000
- ELSE 5000
- END 定额,
- ttt.nOutput_RZ 班组产量,
- CASE
- WHEN ttt.Name_Machine = '骑马联动01号' THEN Cast(ttt.nOutput_RZ / 4000 AS DECIMAL(5, 1))
- WHEN ttt.Name_Machine = '骑马联动02号'THEN Cast(ttt.nOutput_RZ / 4500 AS DECIMAL(5, 1))
- WHEN ttt.Name_Machine = '骑马联动03号'THEN Cast(ttt.nOutput_RZ / 5000 AS DECIMAL(5, 1))
- ELSE Cast(ttt.nOutput_RZ / 5000 AS DECIMAL(5, 1))
- END 产量折算工时,
- IFNULL(AttFB2.班次时长, 10) 考核工时,
- Sum(CASE
- WHEN a.cCode_Item = 'U0075' THEN a.iReported
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0075' THEN a.iReported
- ELSE 0
- END) * 0.5 AS 改规时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0070' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 做零活时间
- /*做零活U0070,上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM (SELECT *,
- CASE
- WHEN CONVERT(dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(dOnDuty,INTERVAL -1 day)
- ELSE dOnDuty
- END dRealRptDate
- FROM scDayRpt_Teams
- WHERE iDayRptStatus >= 0) ttT /*iDayRptStatus=0未审核,iDayRptStatus=-10产量为0,iDayRptStatus=10正常*/
- LEFT JOIN(SELECT ID_Calendar,
- 班次时长,
- 最晚时间
- FROM (SELECT a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN Cast(a.nAmount_Item AS DECIMAL(4, 2))
- ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number()
- OVER (
- PARTITION BY a.ID_Calendar
- ORDER BY a.dTime DESC) AS RowNumber
- FROM sctMJobFeedBackDetail_AttFB a
- WHERE a.cCode_Item = 'U0077') AS subquery
- WHERE RowNumber = 1) AttFB2
- ON ttT.ID_Calendar = AttFB2.ID_Calendar
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
-
- GROUP BY ttt.dRealRptDate,
- ttt.Name_Machine,
- ttT.id,
- AttFB2.班次时长,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TBU
- WHERE TBU.机台名称 IN( '骑马联动01号', '骑马联动02号', '骑马联动03号' )
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- TBU.考核工时
-
- )TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC
- ");
- //精装联动
- $res3 = Db::query("SELECT '{$start_time}' 提交起始日期,
- '{$end_time}' 提交结束日期,
- DATEDIFF(DATE_ADD('{$end_time}',INTERVAL 1 day),'{$start_time}') AS 统计周期,
- TBU.机台名称,
- TBU.班组名称,
- (SELECT GROUP_CONCAT(DISTINCT aa.机长) FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期
- FROM (SELECT CONVERT (TB1.生产日期,CHAR(10)) 生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长 AS 机长
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- DTp.cName 机长
- FROM scDayRpt_Teams ttT
- LEFT JOIN scDayRpt_Teams_People DTP
- ON ttT.ID = DTP.ID_Teams
- AND DTP.cStation = '机长'
- WHERE ttt.nOutput_RZ > 0
- AND ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.Name_WorkGroup,
- DTp.cName)TB1
- WHERE TB1.机台名称 = '精装联动线01号'
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期)aa
- WHERE aa.班组名称 = tbu.班组名称) AS 机长,
- Cast(Sum(TBU.班组产量) AS SIGNED) AS 总产量,
- Cast(Sum(TBU.有效工作时间) AS DECIMAL(6, 1)) AS 总工作时间,
- Sum(TBU.考核工作时间) AS 总应工作时间,
- Cast(Sum(TBU.班组产量) / ( Sum(TBU.考核工作时间) )AS SIGNED) AS 平均产量,
- Sum(TBU.定额) / Count(*) AS 平均定额,
- Count(*) AS 开机总次数,
- Sum(CASE
- WHEN TBU.效率分析 = '未完成' THEN 1
- ELSE 0
- END) AS 未完成次数,
- Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END) AS 完成次数,
- Cast(Cast(Sum(CASE
- WHEN TBU.效率分析 = '1' THEN 1
- ELSE 0
- END)AS DECIMAL(2, 0)) / Count(*) AS DECIMAL(5, 2)) AS 完成率
- FROM (SELECT TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.备注,
- CASE
- WHEN Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) >= TBU.考核工时 THEN '1'
- ELSE '未完成'
- END 效率分析,
- TBU.定额,
- TBU.考核工时 考核工作时间,
- Sum(TBU.班组产量) 班组产量,
- Sum(TBU.产量折算工时) 产量折算工时,
- Sum(TBU.改规次数) 改规次数,
- Sum(TBU.改规时间) 改规时间,
- Sum(TBU.做零活时间) 做零活时间,
- Sum(TBU.周保养时间) 周保养时间,
- Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) 有效工作时间,
- CASE
- WHEN Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) >= TBU.考核工时 THEN 100
- ELSE Cast(( Sum(TBU.产量折算工时) + Sum(TBU.改规时间)
- + Sum(TBU.周保养时间) + Sum(TBU.做零活时间) ) / TBU.考核工时 * 100 AS DECIMAL (4, 2))
- END 完成百分比
- FROM (SELECT ttt.Name_Machine 机台名称,
- CONVERT(ttt.dRealRptDate,CHAR(10)) 生产日期,
- DATE_FORMAT(ttt.dRealRptDate,'%W') 备注,
- ttt.Name_WorkGroup 班组名称,
- 900 定额,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.nOutput_RZ / 900 AS DECIMAL(5, 1)) 产量折算工时,
- IFNULL(AttFB2.班次时长, 10) 考核工时,
- Sum(CASE
- WHEN a.cCode_Item = 'U0071' THEN a.iReported
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0071' THEN a.iReported
- ELSE 0
- END) * 1 AS 改规时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0070' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 做零活时间
- /*做零活U0070,上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM (SELECT *,
- CASE
- WHEN CONVERT(dOnDuty,CHAR(10)) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(dOnDuty,INTERVAL -1 day)
- ELSE dOnDuty
- END dRealRptDate
- FROM scDayRpt_Teams
- WHERE iDayRptStatus >= 0) ttT /*iDayRptStatus=0未审核,iDayRptStatus=-10产量为0,iDayRptStatus=10正常*/
- LEFT JOIN(SELECT ID_Calendar,
- 班次时长,
- 最晚时间
- FROM (SELECT a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN Cast(a.nAmount_Item AS DECIMAL(4, 2))
- ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number()
- OVER (
- PARTITION BY a.ID_Calendar
- ORDER BY a.dTime DESC) AS RowNumber
- FROM sctMJobFeedBackDetail_AttFB a
- WHERE a.cCode_Item = 'U0077') AS subquery
- WHERE RowNumber = 1) AttFB2
- ON ttT.ID_Calendar = AttFB2.ID_Calendar
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- GROUP BY ttt.dRealRptDate,
- ttt.Name_Machine,
- ttT.id,
- AttFB2.班次时长,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TBU
- WHERE TBU.机台名称 LIKE '%精装联动%'
- GROUP BY TBU.机台名称,
- TBU.班组名称,
- TBU.生产日期,
- TBU.考核工时,
- TBU.备注,
- TBU.定额)TBU
- WHERE TBU.生产日期 BETWEEN '{$start_time}' AND '{$end_time}'
- AND TBU.班组产量 > 0
- GROUP BY TBU.机台名称,
- TBU.班组名称
- ORDER BY TBU.机台名称,
- TBU.班组名称 DESC
- ");
- $result =array_merge($res6,$res3);
- foreach($result as $k=>$v){
- $res[$k]['完成率']=round($v['完成率']*100);
- $res[$k]['班组名称']=$v['班组名称'];
- $res[$k]['开机总次数']=$v['开机总次数'];
- $res[$k]['完成次数']=$v['完成次数'];
- }
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'轮转缓存 存进去了';
- return json($res);
- }
- //近30天班组生产效率完成情况 生产异常情况统计->接口
- public function machine_scxl(){
- // $postData = input('post.dependence.item.name');
- $postData = input('post.dependence.item.subsys');
- $redisKeys = [
- "单双色印刷机台" => 'dssj_scxl_redis',
- "四色印刷机" => 'ssj_scxl_redis',
- "标规轮转印刷机" => 'bglz_scxl_redis',
- "大规轮转印刷机" => 'dglz_scxl_redis',
- "胶订联动线" => 'jdld_scxl_redis',
- "骑马精装联动线" => 'qmjz_scxl_redis'
- ];
- $redis_key = isset($redisKeys[$postData]) ? md5($redisKeys[$postData]) : md5('dssj_scxl_redis');
- $redis = redis();
- $result = json_decode($redis->get($redis_key), true);
- if (!$result) {
- // 处理没有数据的情况
- $response_data = [
- 'status' => 1,
- 'msg' => '没有找到相关数据',
- 'data' => []
- ];
- return json_encode($response_data, JSON_UNESCAPED_UNICODE);
- }
- // 进行数据排序和截取
- $staval = 1;
- if($postData == '单双色印刷机台') {
- $staval = 1;
- } else if($postData == '四色印刷机') {
- $staval = 2;
- } else if($postData == '标规轮转印刷机') {
- $staval = 3;
- } else if($postData == '大规轮转印刷机') {
- $staval = 4;
- } else if($postData == '胶订联动线') {
- $staval = 5;
- } else if($postData == '骑马精装联动线') {
- $staval = 6;
- }
- $machineSerialData = Db::table('machineneserial')->where('staval', '=', $staval)->select();
- $machineSerials = array_column($machineSerialData, 'serial', 'machinen_name');
- usort($result, function($a, $b) use ($machineSerials) {
- $aMatchedSerial = $bMatchedSerial = 0;
- foreach ($machineSerials as $machinen_name => $serial) {
- if (stripos($a["班组名称"], $machinen_name) !== false) {
- $aMatchedSerial = $serial;
- }
- if (stripos($b["班组名称"], $machinen_name) !== false) {
- $bMatchedSerial = $serial;
- }
- }
- return $aMatchedSerial - $bMatchedSerial;
- });
- // 只按完成率排序,并截取前100项
- $result = array_slice($result, 0, 100);
- // 格式化数据
- $categories = array_column($result, '班组名称');
- $values = array_column($result, '完成率');
- $kjsum = array_column($result, '开机总次数');
- $wcsum = array_column($result, '完成次数');
- // 构建响应数据
- $response_data = [
- 'status' => 0,
- 'msg' => '',
- 'data' => [
- 'categories' => $categories,
- 'series' => [
- [
- 'name' => '完成率',
- 'data' => $values,
- 'type' => 'line',
- "yAxisIndex" => 1
- ],
- [
- 'name' => '开机总次数',
- 'data' => $kjsum,
- 'type' => 'bar',
- "yAxisIndex" => 0
- ],
- [
- 'name' => '完成次数',
- 'data' => $wcsum,
- 'type' => 'bar',
- "yAxisIndex" => 0
- ]
- ]
- ]
- ];
- // 返回 JSON 数据
- return json($response_data);
- }
- //2.1平版印刷机昨日生产料率分析(查询前一天数据)缓存
- public function yester_pb_redis(){
- $redis=redis();
- $redis_key = md5('yester_pb_redis');
- $ztday = date("Y-m-d",strtotime("-1 day"));
- $sql = "SELECT DATE_FORMAT(tt.生产日期,'%Y-%m-%d') 生产日期,
- -- tt.生产日期,
- -- tt.机台名称,
- tt.班组名称,
- tt.机长,
- tt.定额,
- CASE
- WHEN ( Sum(tt.产量折算时间) + Sum(tt.改墨时间) + Sum(tt.上版时间)
- + Sum(tt.周保养时间) ) >= tt.考核工作时间 THEN '已完成'
- ELSE '未完成'
- END 效率分析,
- Cast(CASE
- WHEN ( Sum(tt.产量折算时间) + Sum(tt.改墨时间) + Sum(tt.上版时间)
- + Sum(tt.周保养时间) ) >= tt.考核工作时间 THEN '100'
- ELSE ( Sum(tt.产量折算时间) + Sum(tt.改墨时间) + Sum(tt.上版时间)
- + Sum(tt.周保养时间) ) / tt.考核工作时间 * 100
- END AS SIGNED) 完成百分比,
- -- Sum(tt.实际工作时间) 实际工作时间,
- Sum(tt.班组产量) 班组产量
- -- Sum(tt.产量折算时间) 产量折算时间,
- -- Sum(tt.改墨次数) 改墨次数,
- -- Sum(tt.改墨时间) 改墨时间,
- -- Sum(tt.上版块数) 上版块数,
- -- Sum(tt.上版时间) 上版时间,
- -- Sum(tt.周保养时间) 周保养时间,
- -- Sum(tt.有效工作时间) 有效工作时间,
- -- tt.考核工作时间
- FROM (SELECT CONVERT (TB1.生产日期, CHAR) 生产日期,
- 1 AS 序号,
- TB1.机台名称,
- TB1.定额,
- TB1.班组名称,
- TB1.机长 AS 机长,
- Sum(TB1.实际工作时间) 实际工作时间,
- Sum(TB1.班组产量) 班组产量,
- Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(8, 2)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(8, 2)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 10 / 60.00 AS DECIMAL(8, 2)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 5500 AS DECIMAL(8, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 10 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- 5500 定额,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(8, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- /***上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040***/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >=0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ,
- ttt.iWorkingHours)TB1
- WHERE LEFT(TB1.机台名称, 3) = 'BB机'
- OR TB1.机台名称 IN ( '海德堡SM1号', '海德堡SM2号' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长,
- TB1.定额,
- TB1.班组产量,
- TB1.实际工作时间
- UNION ALL
- SELECT CONVERT (TB1.生产日期, CHAR) 生产日期,
- 2 AS 序号,
- TB1.机台名称,
- TB1.定额,
- TB1.班组名称,
- TB1.机长 AS 机长,
- Sum(TB1.实际工作时间) 实际工作时间,
- Sum(TB1.班组产量) 班组产量,
- Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 2)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 10 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 8000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 10 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- 8000 定额,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- -- 上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ,
- ttt.iWorkingHours)TB1
- WHERE TB1.机台名称 IN( '四色机02号机', '海德堡5+L 01号机', '海德堡01号机', '三菱机02号机', '三菱机01号机' )
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长,
- TB1.定额,
- TB1.班组产量,
- TB1.实际工作时间
- UNION ALL
- SELECT CONVERT (TB1.生产日期, CHAR) 生产日期,
- 3 AS 序号,
- TB1.机台名称,
- TB1.定额,
- TB1.班组名称,
- TB1.机长 AS 机长,
- Sum(TB1.实际工作时间) 实际工作时间,
- Sum(TB1.班组产量) 班组产量,
- Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 3)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 10 / 60.00 AS DECIMAL(5, 3)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 7000 AS DECIMAL(5, 3)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 10 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 10 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- 7000 定额,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- -- 上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.iWorkingHours,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '小森八色01号机'
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长,
- TB1.定额,
- TB1.班组产量,
- TB1.实际工作时间
- UNION ALL
- SELECT CONVERT (TB1.生产日期, CHAR) 生产日期,
- 4 AS 序号,
- TB1.机台名称,
- TB1.定额,
- TB1.班组名称,
- TB1.机长 AS 机长,
- Sum(TB1.实际工作时间) 实际工作时间,
- Sum(TB1.班组产量) 班组产量,
- Cast(Sum(TB1.班组产量) / 10000 AS DECIMAL(5, 2)) 产量折算时间,
- Sum(TB1.改墨次数) 改墨次数,
- Cast(Sum(TB1.改墨次数) * 1.0 AS DECIMAL(5, 2)) AS 改墨时间,
- Sum(TB1.上版块数) 上版块数,
- Cast(Sum(TB1.上版块数) * 2.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- Sum(TB1.周保养时间) 周保养时间,
- Cast(Sum(TB1.班组产量) / 10000 AS DECIMAL(5, 2)) + Sum(TB1.改墨次数) * 1.0 + Sum(TB1.上版块数) * 2.5 / 60.00 + Sum(TB1.周保养时间) AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- 10000 定额,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Cast(ttt.iWorkingHours / 60.0 AS DECIMAL(5, 2)) 实际工作时间,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0041', 'U0037' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 3))
- ELSE 0
- END) AS 周保养时间
- -- 上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.iWorkingHours,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '小森八色02号机'
- GROUP BY TB1.生产日期,
- TB1.机台名称,
- TB1.班组名称,
- TB1.机长,
- TB1.定额,
- TB1.班组产量,
- TB1.实际工作时间)tt
- WHERE tt.生产日期 >= '{$ztday}'
- AND tt.班组产量 > 0
- GROUP BY tt.生产日期,
- tt.序号,
- tt.机台名称,
- tt.班组名称,
- tt.机长,
- tt.定额,
- tt.实际工作时间,
- tt.考核工作时间
- ORDER BY 完成百分比 desc,
- tt.序号,
- tt.机台名称,
- tt.班组名称 ";
- $res = Db::query($sql);
- // echo "<pre>";print_r($list);echo "</pre>";die;
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").' 平版印刷机昨日生产料率分析 存进去了';
- return $res;
- }
- //2.1平版印刷机昨日生产料率分析
- public function yester_pb(){
- $redis=redis();
- $list = json_decode($redis->get(md5('yester_pb_redis')), true);
- $result['columns']=[
- ['name'=>'日期','id'=>'rq','width'=>'11','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'班组名称','id'=>'bzmc','width'=>'24','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'机长','id'=>'jz','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'定额','id'=>'dl','width'=>'16','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'班组产量','id'=>'bzcl','width'=>'11','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'生产效率分析','id'=>'scxlfx','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'完成百分比','id'=>'wcbfb','width'=>'12','autoWrap'=>"true",'textAlign'=>'left']
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['rq']=$v['生产日期'];
- $result['rows'][$k]['bzmc']=$v['班组名称'];
- $result['rows'][$k]['jz']=$v['机长'];
- $result['rows'][$k]['dl']=$v['定额'];
- $result['rows'][$k]['bzcl']=round($v['班组产量']);
- $result['rows'][$k]['scxlfx']=$v['效率分析'];
- $result['rows'][$k]['wcbfb']=round($v['完成百分比']);
- }
- if($list==[]){
- $result['rows'][0]['rq']='';
- $result['rows'][0]['bzmc']='';
- $result['rows'][0]['jz']='';
- $result['rows'][0]['dl']='';
- $result['rows'][0]['bzcl']='';
- $result['rows'][0]['scxlfx']='';
- $result['rows'][0]['wcbfb']='';
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- return json($res);
- }
- //2.2装订印刷机昨日生产料率分析(查询前一天数据)缓存
- public function yester_zd_redis(){
- $redis=redis();
- $redis_key = md5('yester_zd_redis');
- $ztday = date("Y-m-d",strtotime("-1 day"));
- $sql = "
- SELECT DATE_FORMAT(tt.生产日期,'%Y-%m-%d') 生产日期,
- tt.班组名称,
- tt.机长,
- tt.定额,
- tt.班组产量,
- tt.生产效率分析,
- tt.完成百分比
- FROM(
- SELECT
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- CASE
- WHEN Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) >= TBU.考核工时 THEN
- '已完成' ELSE '未完成'
- END 生产效率分析,
- TBU.定额,
- TBU.考核工时 考核工作时间,
- Sum( TBU.班组产量 ) 班组产量,
- Sum( TBU.产量折算工时 ) 产量折算工时,
- Sum( TBU.改规次数 ) 改规次数,
- Sum( TBU.改规时间 ) 改规时间,
- Sum( TBU.做零活时间 ) 做零活时间,
- Sum( TBU.周保养时间 ) 周保养时间,
- Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) 有效工作时间,
- CASE
- WHEN Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) >= TBU.考核工时 THEN
- 100 ELSE Cast(
- ( Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) ) / TBU.考核工时 * 100 AS DECIMAL ( 4, 2 )
- )
- END 完成百分比
- FROM
- (
- SELECT
- ttt.Name_Machine 机台名称,
- CONVERT ( ttt.dRealRptDate, CHAR) 生产日期,
- DATE_FORMAT( ttt.dRealRptDate, '%W' ) 备注,-- Datename(WEEKDAY, ttt.dRealRptDate) 备注,
- ttt.Name_WorkGroup 班组名称,
- ( SELECT GROUP_CONCAT( b.cName ) FROM scDayRpt_Teams_People b WHERE b.ID_Teams = ttT.ID AND b.cStation = '机长' ) 机长,
- '900' 定额,
- ttt.nOutput_RZ 班组产量,
- Cast( ttt.nOutput_RZ / 900 AS DECIMAL ( 5, 1 ) ) 产量折算工时,
- IFNULL( AttFB2.班次时长, 10 ) 考核工时,
- Sum( CASE WHEN a.cCode_Item = 'U0071' THEN a.iReported ELSE 0 END ) AS 改规次数,
- Sum( CASE WHEN a.cCode_Item = 'U0071' THEN a.iReported ELSE 0 END ) * 1 AS 改规时间,
- Sum( CASE WHEN a.cCode_Item = 'U0040' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 周保养时间,
- Sum( CASE WHEN a.cCode_Item = 'U0070' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 做零活时间
- FROM
- (
- SELECT
- *,
- CASE
- WHEN CONVERT ( dOnDuty, CHAR ) < ( SELECT IFNULL( csetvalue, '00:00' ) + ':00' FROM sysetup WHERE csetname = 'frmFSetupAtt.dxtdBegin' ) THEN
- DATE_ADD( dOnDuty, INTERVAL - 1 DAY ) ELSE dOnDuty
- END dRealRptDate
- FROM
- scDayRpt_Teams
- WHERE
- iDayRptStatus >= 0
- ) ttT
- LEFT JOIN (
- SELECT
- ID_Calendar,
- 班次时长,
- 最晚时间
- FROM
- (
- SELECT
- a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN
- Cast( a.nAmount_Item AS DECIMAL ( 4, 2 ) ) ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number ( ) OVER ( PARTITION BY a.ID_Calendar ORDER BY a.dTime DESC ) AS RowNumber
- FROM
- sctMJobFeedBackDetail_AttFB a
- WHERE
- a.cCode_Item = 'U0077'
- ) AS subquery
- WHERE
- RowNumber = 1
- ) AttFB2 ON ttT.ID_Calendar = AttFB2.ID_Calendar
- LEFT JOIN sctMJobFeedBackDetail_AttFB a ON ttT.ID_Calendar = a.ID_Calendar
- GROUP BY
- ttt.dRealRptDate,
- ttt.Name_Machine,
- ttT.id,
- AttFB2.班次时长,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ) TBU
- WHERE
- TBU.机台名称 LIKE '%精装联动%'
- GROUP BY
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.考核工时,
- TBU.备注,
- TBU.定额 UNION ALL
- SELECT
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- CASE
- WHEN Sum( TBU.有效工作时间 ) >= TBU.考核工作时间 THEN
- '已完成' ELSE '未完成'
- END AS 生产效率分析,
- TBU.定额,
- TBU.考核工作时间,
- CONVERT ( Sum( TBU.班组产量 ), SIGNED ) 班组产量,
- Sum( TBU.产量折算工时 ) 产量折算工时,
- Sum( TBU.改规次数 ) 改规次数,
- Sum( TBU.改规时间 ) 改规时间,
- Sum( TBU.做零活时间 ) 做零活时间,
- Sum( TBU.周保养时间 ) 周保养时间,
- Sum( TBU.有效工作时间 ) 有效工作时间,
- Cast(
- CASE
- WHEN Sum( TBU.有效工作时间 ) / TBU.考核工作时间 >= 1 THEN
- 100 ELSE ( Sum( TBU.有效工作时间 ) / TBU.考核工作时间 ) * 100
- END AS DECIMAL ( 5, 2 )
- ) 完成百分比
- FROM(SELECT
- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时 考核工作时间,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- FROM(SELECT
- TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- IFNULL( AttFB2.班次时长, 10 ) 考核工时,
- Sum( TBU.班组产量 ) 班组产量,
- Sum( TBU.产量折算工时 ) 产量折算工时,
- IFNULL( ATTFB1.改规次数, 0 ) AS 改规次数,
- IFNULL( AttFB1.改规时间, 0 ) AS 改规时间,
- IFNULL( AttFB1.做零活时间, 0 ) 做零活时间,
- IFNULL( AttFB1.周保养时间, 0 ) 周保养时间,
- (Sum( TBU.产量折算工时 ) + IFNULL( AttFB1.改规时间, 0 ) + IFNULL( AttFB1.做零活时间, 0 ) + IFNULL( AttFB1.周保养时间, 0 ) ) 有效工作时间
- FROM(SELECT
- JobTB.ID ID_Calendar,
- JobTB.机台名称,
- JobTB.班组名称,
- JobTB.机长,
- JobTB.生产日期,
- DATE_FORMAT( JobTB.生产日期, '%W' ) 备注,-- Datename(WEEKDAY, JobTB.生产日期) 备注,
- JobTB.定额 定额,
- Sum( JobTB.班组产量 ) 班组产量,
- Cast( Sum( 产量折算工时 ) AS DECIMAL ( 5, 2 ) ) 产量折算工时,
- 12 AS 考核工时
- FROM(SELECT
- ttFC.ID,
- CONVERT ( dRealRptDate, CHAR ) 生产日期,
- TB2.ID_Teams,
- TB2.cJtmc 机台名称,
- '7500/7000/4500' 定额,
- TB2.cName_Team 班组名称,
- TB2.机长,
- ttFc.ID_TeamManRecord,
- ttTJ.cCode_ProductOrder AS cCode_ProductOrder,
- ttTJ.cCode_JobM AS cCode_JobM,
- ttTJ.cName_JobM AS cName_JobM,
- ttTj.cType_AProduct,
- a.NZWYZ,
- ttTJ.nOutput_R AS 班组产量,
- CASE WHEN a.CZWKB LIKE '大16%' THEN( CASE WHEN a.NZWYZ >= 9.75 THEN Cast( Round( ttTJ.nOutput_R / 4500, 3 ) AS DECIMAL ( 6, 3 ) ) ELSE Cast( Round( ttTJ.nOutput_R / 7000, 3 ) AS DECIMAL ( 6, 3 ) ) END) ELSE (CASE WHEN a.NZWYZ >= 9.75 THEN Cast( Round( ttTJ.nOutput_R / 4500, 3 ) AS DECIMAL ( 6, 3 ) ) ELSE Cast( Round( ttTJ.nOutput_R / 7500, 3 ) AS DECIMAL ( 6, 3 ) ) END ) END AS 产量折算工时
- FROM scDayRpt_Teams_JobContent ttTJ
- INNER JOIN scmachinejob b ON b.ID = ttTJ.ID_JobM
- LEFT JOIN scFactoryCalendar ttFC ON ttTJ.id_scFactoryCalendar = ttFC.id
- LEFT JOIN (
- SELECT CONVERT
- ( CONVERT ( ttDRpt_T.dRealRptDate, CHAR ), DATETIME ) dRealRptDate,
- ttT.cJtmc AS cJtmc,
- ttT.cBanzuMc AS cName_Team,
- ttT.cBmbh AS cBmbh,
- ttT.cBmmc AS cbmmc,
- ttDRpt_T.ID_WorkCenter,
- ttT.cGzzxmc AS cgzzxmc,
- tvD.cName AS cname,
- ttS.cName AS cName_S,
- ttDRpt_T.dOnDuty AS dStart,
- ttDRpt_T.dOffDuty AS dEnd,
- ttDRpt_T.nOutput_RZ AS nAmount_R,
- IFNULL( ttDRpt_T.iDayRptStatus, - 1 ) AS iDayRptStatus,
- ttFC.ID AS ID_TC,
- IFNULL( ttDRpt_T.ID, - 1 ) AS ID_TDRpt,
- ttDRpt_T.dstamp,
- ttDRpt_T.id AS ID_Teams,
- ( SELECT GROUP_CONCAT( b.cName ) FROM scDayRpt_Teams_People b WHERE b.ID_Teams = ttDRpt_T.id AND b.cStation = '机长' ) 机长
- FROM
- scFactoryCalendar ttFC
- LEFT JOIN scShift ttS ON ttS.ID = ttFC.id_scShift
- LEFT JOIN (
- SELECT
- *,
- CASE
- WHEN CONVERT ( dOnDuty, CHAR ) < ( SELECT IFNULL( csetvalue, '00:00' ) + ':00' FROM sysetup WHERE csetname = 'frmFSetupAtt.dxtdBegin' ) THEN
- DATE_ADD( dOnDuty, INTERVAL - 1 DAY ) ELSE dOnDuty
- END dRealRptDate
- FROM
- scDayRpt_Teams
- ) ttDRpt_T ON ttDRpt_T.ID_Calendar = ttFC.ID
- AND ttDRpt_T.iDayRptStatus >= 0
- LEFT JOIN banzu ttT ON ttT.banzuId = ttFC.id_Machine
- LEFT JOIN (
- SELECT
- scvDeviceAll.iType,
- scvDeviceAll.ID,
- scvDeviceAll.cCode,
- scvDeviceAll.cName,
- scvDeviceAll.iGzzxId,
- scvDeviceAll.ID_BM,
- scvDeviceAll.cbmbh,
- scvDeviceAll.cbmmc,
- scvDeviceAll.cType_Sys,
- scvDeviceAll.iStop,
- scvDeviceAll.cType_Dev,
- scvDeviceAll.cShortName,
- scvDeviceAll.iTypeWage,
- iOverProductType
- FROM
- (
- SELECT
- 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM
- MKernel
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cBmbh UNION
- SELECT
- 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM
- dzyssb
- INNER JOIN MKernel ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM ON dzBM.cbmbh = MKernel.cBmbh UNION
- SELECT
- 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM
- MKerJzmb
- INNER JOIN MKernel ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb ON dzyssb.id = MKerJzmb.ijzlxid UNION
- SELECT
- 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE
-
- WHEN DZYWDW.nstate < 0 THEN
- 1 ELSE 0
- END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM
- dzywdw
- WHERE
- bwjg = 1 UNION
- SELECT
- 3 AS iType,
- - 1,
- '',
- '外厂资源',
- - 1,
- - 1 AS ID_BM,
- '' AS cbmbh,
- '' AS cbmmc,
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- ) scvDeviceAll
- WHERE
- ( iStop = 0 )
- ) tvD ON tvD.ID = ttFC.ID_Parent
- AND tvD.iType IN ( 0, 1, 2 )
- ) TB2 ON TB2.ID_Teams = ttTJ.ID_Teams
- LEFT JOIN MCYD a ON a.CCYDH = ttTJ.cCode_AProduct
- ) JobTB
- GROUP BY
- 生产日期,
- JobTB.ID,
- 定额,
- 机台名称,
- 班组名称,
- 机长
- ) tbu
- LEFT JOIN (
- SELECT
- a.ID_Calendar,
- Sum( CASE WHEN a.cCode_Item = 'U0073' THEN a.iState ELSE 0 END ) AS 改规次数,
- Sum( CASE WHEN a.cCode_Item = 'U0073' THEN a.iState ELSE 0 END ) * 1 AS 改规时间,
- Sum( CASE WHEN a.cCode_Item = 'U0040' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 2 ) ) ELSE 0 END ) AS 周保养时间,
- Sum( CASE WHEN a.cCode_Item = 'U0070' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 做零活时间
- FROM
- sctMJobFeedBackDetail_AttFB a
- LEFT JOIN MCYD b ON a.cProductBillCode = b.CCYDH
- GROUP BY
- ID_Calendar
- ) AttFB1 ON TBU.ID_Calendar = AttFB1.ID_Calendar
- LEFT JOIN (
- SELECT
- ID_Calendar,
- 班次时长,
- 最晚时间
- FROM
- (
- SELECT
- a.ID_Calendar,
- CASE
-
- WHEN a.cCode_Item = 'U0077' THEN
- Cast( a.nAmount_Item AS DECIMAL ( 4, 2 ) ) ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number ( ) OVER ( PARTITION BY a.ID_Calendar ORDER BY a.dTime DESC ) AS RowNumber
- FROM
- sctMJobFeedBackDetail_AttFB a
- WHERE
- a.cCode_Item = 'U0077'
- ) AS subquery
- WHERE
- RowNumber = 1
- ) AttFB2 ON TBU.ID_Calendar = AttFB2.ID_Calendar
- GROUP BY
- TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- AttFB2.班次时长,
- AttFB1.做零活时间,
- AttFB1.周保养时间,
- ATTFB1.改规次数,
- AttFB1.改规时间
- ) TBU2
- WHERE
- 1 = 1
- AND TBU2.机台名称 LIKE '%胶订精密达%'
- GROUP BY
- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间 UNION ALL
- SELECT
- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时 考核工作时间,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- FROM
- (
- SELECT
- TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- IFNULL( AttFB2.班次时长, 10 ) 考核工时,
- Sum( TBU.班组产量 ) 班组产量,
- Sum( TBU.产量折算工时 ) 产量折算工时,
- IFNULL( ATTFB1.改规次数, 0 ) AS 改规次数,
- IFNULL( AttFB1.改规时间, 0 ) AS 改规时间,
- IFNULL( AttFB1.做零活时间, 0 ) 做零活时间,
- IFNULL( AttFB1.周保养时间, 0 ) 周保养时间,
- (
- Sum( TBU.产量折算工时 ) + IFNULL( AttFB1.改规时间, 0 ) + IFNULL( AttFB1.做零活时间, 0 ) + IFNULL( AttFB1.周保养时间, 0 )
- ) 有效工作时间
- FROM
- (
- SELECT
- JobTB.ID ID_Calendar,
- JobTB.机台名称,
- JobTB.班组名称,
- JobTB.机长,
- JobTB.生产日期,
- DATE_FORMAT( JobTB.生产日期, '%W' ) 备注,-- Datename(WEEKDAY, JobTB.生产日期) 备注,
- JobTB.定额 定额,
- Sum( 班组产量 ) 班组产量,
- Cast( Sum( 产量折算工时 ) AS DECIMAL ( 5, 2 ) ) 产量折算工时
- FROM
- (
- SELECT
- ttFC.ID,
- CONVERT ( dRealRptDate, CHAR ) 生产日期,
- TB2.ID_Teams,
- TB2.cJtmc 机台名称,
- '3000/4500' 定额,
- TB2.cName_Team 班组名称,
- TB2.机长 机长,
- ttFc.ID_TeamManRecord,
- ttTJ.cCode_ProductOrder AS cCode_ProductOrder,
- ttTJ.cCode_JobM AS cCode_JobM,
- ttTJ.cName_JobM AS cName_JobM,
- ttTj.cType_AProduct,
- a.CYJLX,
- ttTJ.nOutput_R AS 班组产量,
- CASE
-
- WHEN a.CYJLX LIKE '%课本%'
- OR a.CYJLX LIKE '%教辅%' THEN
- Cast( Round( ttTJ.nOutput_R / 4500, 3 ) AS DECIMAL ( 6, 3 ) ) ELSE Cast( Round( ttTJ.nOutput_R / 3000, 3 ) AS DECIMAL ( 6, 3 ) )
- END AS 产量折算工时
- FROM
- scDayRpt_Teams_JobContent ttTJ
- INNER JOIN scmachinejob b ON b.ID = ttTJ.ID_JobM
- LEFT JOIN scFactoryCalendar ttFC ON ttTJ.id_scFactoryCalendar = ttFC.id
- LEFT JOIN (
- SELECT CONVERT
- ( CONVERT ( ttDRpt_T.dRealRptDate, CHAR ), DATETIME ) dRealRptDate,
- ttT.cJtmc AS cJtmc,
- ttT.cBanzuMc AS cName_Team,
- ttT.cBmbh AS cBmbh,
- ttT.cBmmc AS cbmmc,
- ttDRpt_T.ID_WorkCenter,
- ttT.cGzzxmc AS cgzzxmc,
- tvD.cName AS cname,
- ttS.cName AS cName_S,
- ttDRpt_T.dOnDuty AS dStart,
- ttDRpt_T.dOffDuty AS dEnd,
- ttDRpt_T.nOutput_RZ AS nAmount_R,
- IFNULL( ttDRpt_T.iDayRptStatus, - 1 ) AS iDayRptStatus,
- ttFC.ID AS ID_TC,
- IFNULL( ttDRpt_T.ID, - 1 ) AS ID_TDRpt,
- ttDRpt_T.dstamp,
- ttDRpt_T.id AS ID_Teams,
- ( SELECT GROUP_CONCAT( b.cName ) FROM scDayRpt_Teams_People b WHERE b.ID_Teams = ttDRpt_T.id AND b.cStation = '机长' ) 机长
- FROM
- scFactoryCalendar ttFC
- LEFT JOIN scShift ttS ON ttS.ID = ttFC.id_scShift
- LEFT JOIN (
- SELECT
- *,
- CASE
-
- WHEN CONVERT ( dOnDuty, CHAR ) < ( SELECT IFNULL( csetvalue, '00:00' ) + ':00' FROM sysetup WHERE csetname = 'frmFSetupAtt.dxtdBegin' ) THEN
- DATE_ADD( dOnDuty, INTERVAL - 1 DAY ) ELSE dOnDuty
- END dRealRptDate
- FROM
- scDayRpt_Teams
- ) ttDRpt_T ON ttDRpt_T.ID_Calendar = ttFC.ID
- AND ttDRpt_T.iDayRptStatus >= 0
- LEFT JOIN banzu ttT ON ttT.banzuId = ttFC.id_Machine
- LEFT JOIN (
- SELECT
- scvDeviceAll.iType,
- scvDeviceAll.ID,
- scvDeviceAll.cCode,
- scvDeviceAll.cName,
- scvDeviceAll.iGzzxId,
- scvDeviceAll.ID_BM,
- scvDeviceAll.cbmbh,
- scvDeviceAll.cbmmc,
- scvDeviceAll.cType_Sys,
- scvDeviceAll.iStop,
- scvDeviceAll.cType_Dev,
- scvDeviceAll.cShortName,
- scvDeviceAll.iTypeWage,
- iOverProductType
- FROM
- (
- SELECT
- 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM
- MKernel
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cBmbh UNION
- SELECT
- 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM
- dzyssb
- INNER JOIN MKernel ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM ON dzBM.cbmbh = MKernel.cBmbh UNION
- SELECT
- 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM
- MKerJzmb
- INNER JOIN MKernel ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb ON dzyssb.id = MKerJzmb.ijzlxid UNION
- SELECT
- 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE
-
- WHEN DZYWDW.nstate < 0 THEN
- 1 ELSE 0
- END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM
- dzywdw
- WHERE
- bwjg = 1 UNION
- SELECT
- 3 AS iType,
- - 1,
- '',
- '外厂资源',
- - 1,
- - 1 AS ID_BM,
- '' AS cbmbh,
- '' AS cbmmc,
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- ) scvDeviceAll
- WHERE
- ( iStop = 0 )
- ) tvD ON tvD.ID = ttFC.ID_Parent
- AND tvD.iType IN ( 0, 1, 2 )
- ) TB2 ON TB2.ID_Teams = ttTJ.ID_Teams
- LEFT JOIN MCYD a ON a.CCYDH = ttTJ.cCode_AProduct
- ) JobTB
- GROUP BY
- 生产日期,
- JobTB.ID,
- 定额,
- 机台名称,
- 班组名称,
- 机长
- ) tbu
- LEFT JOIN (
- SELECT
- a.ID_Calendar,
- Sum( CASE WHEN a.cCode_Item = 'U0073' THEN a.iState ELSE 0 END ) AS 改规次数,
- Sum( CASE WHEN a.cCode_Item = 'U0073' THEN a.iState ELSE 0 END ) * 0.75 AS 改规时间,
- Sum( CASE WHEN a.cCode_Item = 'U0040' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 2 ) ) ELSE 0 END ) AS 周保养时间,
- Sum( CASE WHEN a.cCode_Item = 'U0070' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 做零活时间
- FROM
- sctMJobFeedBackDetail_AttFB a
- LEFT JOIN MCYD b ON a.cProductBillCode = b.CCYDH
- GROUP BY
- ID_Calendar
- ) AttFB1 ON TBU.ID_Calendar = AttFB1.ID_Calendar
- LEFT JOIN (
- SELECT
- ID_Calendar,
- 班次时长,
- 最晚时间
- FROM
- (
- SELECT
- a.ID_Calendar,
- CASE
-
- WHEN a.cCode_Item = 'U0077' THEN
- Cast( a.nAmount_Item AS DECIMAL ( 4, 2 ) ) ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number ( ) OVER ( PARTITION BY a.ID_Calendar ORDER BY a.dTime DESC ) AS RowNumber
- FROM
- sctMJobFeedBackDetail_AttFB a
- WHERE
- a.cCode_Item = 'U0077'
- ) AS subquery
- WHERE
- RowNumber = 1
- ) AttFB2 ON TBU.ID_Calendar = AttFB2.ID_Calendar
- GROUP BY
- TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- AttFB2.班次时长,
- AttFB1.做零活时间,
- AttFB1.周保养时间,
- ATTFB1.改规次数,
- AttFB1.改规时间
- ) TBU2
- WHERE
- 1 = 1
- AND TBU2.机台名称 LIKE '%胶订精工%'
- GROUP BY
- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间 UNION ALL
- SELECT
- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时 考核工作时间,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- FROM
- (
- SELECT
- TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- IFNULL( AttFB2.班次时长, 10 ) 考核工时,
- Sum( TBU.班组产量 ) 班组产量,
- Sum( TBU.产量折算工时 ) 产量折算工时,
- IFNULL( ATTFB1.改规次数, 0 ) AS 改规次数,
- IFNULL( AttFB1.改规时间, 0 ) AS 改规时间,
- IFNULL( AttFB1.做零活时间, 0 ) 做零活时间,
- IFNULL( AttFB1.周保养时间, 0 ) 周保养时间,
- (
- Sum( TBU.产量折算工时 ) + IFNULL( AttFB1.改规时间, 0 ) + IFNULL( AttFB1.做零活时间, 0 ) + IFNULL( AttFB1.周保养时间, 0 )
- ) 有效工作时间
- FROM
- (
- SELECT
- JobTB.ID ID_Calendar,
- JobTB.机台名称,
- JobTB.班组名称,
- JobTB.机长,
- JobTB.生产日期,
- DATE_FORMAT( JobTB.生产日期, '%W' ) 备注,-- Datename(WEEKDAY, JobTB.生产日期) 备注,
- JobTB.定额 定额,
- Sum( 班组产量 ) 班组产量,
- Cast( Sum( 产量折算工时 ) AS DECIMAL ( 5, 2 ) ) 产量折算工时
- FROM
- (
- SELECT
- ttFC.ID,
- CONVERT ( dRealRptDate, CHAR ) 生产日期,
- TB2.ID_Teams,
- TB2.cJtmc 机台名称,
- '3000/4500' 定额,
- TB2.cName_Team 班组名称,
- TB2.机长 机长,
- ttFc.ID_TeamManRecord,
- ttTJ.cCode_ProductOrder AS cCode_ProductOrder,
- ttTJ.cCode_JobM AS cCode_JobM,
- ttTJ.cName_JobM AS cName_JobM,
- ttTj.cType_AProduct,
- a.CYJLX,
- ttTJ.nOutput_R AS 班组产量,
- CASE WHEN a.CYJLX LIKE '%课本%'
- OR a.CYJLX LIKE '%教辅%' THEN
- Cast( Round( ttTJ.nOutput_R / 4500, 3 ) AS DECIMAL ( 6, 3 ) ) ELSE Cast( Round( ttTJ.nOutput_R / 3000, 3 ) AS DECIMAL ( 6, 3 ) )
- END AS 产量折算工时
- FROM
- scDayRpt_Teams_JobContent ttTJ
- INNER JOIN scmachinejob b ON b.ID = ttTJ.ID_JobM
- LEFT JOIN scFactoryCalendar ttFC ON ttTJ.id_scFactoryCalendar = ttFC.id
- LEFT JOIN (
- SELECT CONVERT
- ( CONVERT ( ttDRpt_T.dRealRptDate, CHAR ), DATETIME ) dRealRptDate,
- ttT.cJtmc AS cJtmc,
- ttT.cBanzuMc AS cName_Team,
- ttT.cBmbh AS cBmbh,
- ttT.cBmmc AS cbmmc,
- ttDRpt_T.ID_WorkCenter,
- ttT.cGzzxmc AS cgzzxmc,
- tvD.cName AS cname,
- ttS.cName AS cName_S,
- ttDRpt_T.dOnDuty AS dStart,
- ttDRpt_T.dOffDuty AS dEnd,
- ttDRpt_T.nOutput_RZ AS nAmount_R,
- IFNULL( ttDRpt_T.iDayRptStatus, - 1 ) AS iDayRptStatus,
- ttFC.ID AS ID_TC,
- IFNULL( ttDRpt_T.ID, - 1 ) AS ID_TDRpt,
- ttDRpt_T.dstamp,
- ttDRpt_T.id AS ID_Teams,
- ( SELECT GROUP_CONCAT( b.cName ) FROM scDayRpt_Teams_People b WHERE b.ID_Teams = ttDRpt_T.id AND b.cStation = '机长' ) 机长
- FROM scFactoryCalendar ttFC
- LEFT JOIN scShift ttS ON ttS.ID = ttFC.id_scShift
- LEFT JOIN (
- SELECT *,
- CASE WHEN CONVERT ( dOnDuty, CHAR ) < ( SELECT IFNULL( csetvalue, '00:00' ) + ':00' FROM sysetup WHERE csetname = 'frmFSetupAtt.dxtdBegin' ) THEN DATE_ADD( dOnDuty, INTERVAL - 1 DAY ) ELSE dOnDuty END dRealRptDate
- FROM scDayRpt_Teams ) ttDRpt_T ON ttDRpt_T.ID_Calendar = ttFC.ID
- AND ttDRpt_T.iDayRptStatus >= 0
- LEFT JOIN banzu ttT ON ttT.banzuId = ttFC.id_Machine
- LEFT JOIN ( SELECT
- scvDeviceAll.iType,
- scvDeviceAll.ID,
- scvDeviceAll.cCode,
- scvDeviceAll.cName,
- scvDeviceAll.iGzzxId,
- scvDeviceAll.ID_BM,
- scvDeviceAll.cbmbh,
- scvDeviceAll.cbmmc,
- scvDeviceAll.cType_Sys,
- scvDeviceAll.iStop,
- scvDeviceAll.cType_Dev,
- scvDeviceAll.cShortName,
- scvDeviceAll.iTypeWage,
- iOverProductType
- FROM ( SELECT
- 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM MKernel
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cBmbh UNION
- SELECT 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM dzyssb
- INNER JOIN MKernel ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM ON dzBM.cbmbh = MKernel.cBmbh UNION
- SELECT
- 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM MKerJzmb
- INNER JOIN MKernel ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb ON dzyssb.id = MKerJzmb.ijzlxid UNION
- SELECT
- 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN
- 1 ELSE 0
- END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 iTypeWage,
- 0 iOverProductType
- FROM dzywdw
- WHERE bwjg = 1 UNION
- SELECT
- 3 AS iType,
- - 1,
- '',
- '外厂资源',
- - 1,
- - 1 AS ID_BM,
- '' AS cbmbh,
- '' AS cbmmc,
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- ) scvDeviceAll
- WHERE
- ( iStop = 0 )
- ) tvD ON tvD.ID = ttFC.ID_Parent
- AND tvD.iType IN ( 0, 1, 2 )
- LEFT JOIN scDayRpt_Teams_People DTP ON ttDRpt_T.ID = DTP.ID_Teams
- AND dtp.cStation = '机长'
- ) TB2 ON TB2.ID_Teams = ttTJ.ID_Teams
- LEFT JOIN MCYD a ON a.CCYDH = ttTJ.cCode_AProduct
- ) JobTB
- GROUP BY
- 生产日期,
- JobTB.ID,
- 定额,
- 机台名称,
- 班组名称,
- 机长 ) tbu
- LEFT JOIN (
- SELECT
- a.ID_Calendar,
- Sum( CASE WHEN a.cCode_Item = 'U0073' THEN a.iState ELSE 0 END ) AS 改规次数,
- Sum( CASE WHEN a.cCode_Item = 'U0073' THEN a.iState ELSE 0 END ) * 0.67 AS 改规时间,
- Sum( CASE WHEN a.cCode_Item = 'U0040' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 2 ) ) ELSE 0 END ) AS 周保养时间,
- Sum( CASE WHEN a.cCode_Item = 'U0070' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 做零活时间
- FROM sctMJobFeedBackDetail_AttFB a
- LEFT JOIN MCYD b ON a.cProductBillCode = b.CCYDH
- GROUP BY ID_Calendar ) AttFB1 ON TBU.ID_Calendar = AttFB1.ID_Calendar
- LEFT JOIN (
- SELECT
- a.ID_Calendar,
- CASE
- WHEN a.cCode_Item = 'U0077' THEN
- Cast( a.nAmount_Item AS DECIMAL ( 4, 2 ) ) ELSE 0
- END AS 班次时长,
- Max( a.dTime ) AS 最晚时间
- FROM sctMJobFeedBackDetail_AttFB a
- WHERE a.cCode_Item = 'U0077'
- GROUP BY
- a.ID_Calendar,
- a.nAmount_Item,
- a.cCode_Item
- ) AttFB2 ON TBU.ID_Calendar = AttFB2.ID_Calendar
- GROUP BY
- TBU.ID_Calendar,
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- AttFB2.班次时长,
- AttFB1.做零活时间,
- AttFB1.周保养时间,
- ATTFB1.改规次数,
- AttFB1.改规时间
- ) TBU2
- WHERE 1 = 1 AND TBU2.机台名称 LIKE '%胶订潮流%'
- GROUP BY
- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.备注,
- TBU2.定额,
- TBU2.考核工时,
- TBU2.班组产量,
- TBU2.产量折算工时,
- TBU2.改规次数,
- TBU2.改规时间,
- TBU2.做零活时间,
- TBU2.周保养时间,
- TBU2.有效工作时间
- ) TBU
- GROUP BY
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- TBU.考核工作时间 UNION ALL
- SELECT
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- CASE
- WHEN Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) >= TBU.考核工时 THEN
- '已完成' ELSE '未完成'
- END 效率分析,
- TBU.定额,
- TBU.考核工时 考核工作时间,
- Sum( TBU.班组产量 ) 班组产量,
- Sum( TBU.产量折算工时 ) 产量折算工时,
- Sum( TBU.改规次数 ) 改规次数,
- Sum( TBU.改规时间 ) 改规时间,
- Sum( TBU.做零活时间 ) 做零活时间,
- Sum( TBU.周保养时间 ) 周保养时间,
- Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) 有效工作时间,
- CASE
- WHEN Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) >= TBU.考核工时 THEN
- 100 ELSE Cast(
- ( Sum( TBU.产量折算工时 ) + Sum( TBU.改规时间 ) + Sum( TBU.周保养时间 ) + Sum( TBU.做零活时间 ) ) / TBU.考核工时 * 100 AS DECIMAL ( 4, 2 )
- )
- END 完成百分比
- FROM
- (SELECT
- ttt.Name_Machine 机台名称,
- CONVERT ( ttt.dRealRptDate, CHAR ) 生产日期,
- DATE_FORMAT( ttt.dRealRptDate, '%W' ) 备注,
- ttt.Name_WorkGroup 班组名称,
- ( SELECT GROUP_CONCAT( b.cName ) FROM scDayRpt_Teams_People b WHERE b.ID_Teams = ttT.ID AND b.cStation = '机长' ) 机长,
- CASE
- WHEN ttt.Name_Machine = '骑马联动01号' THEN
- '4000'
- WHEN ttt.Name_Machine = '骑马联动02号' THEN
- '4500'
- WHEN ttt.Name_Machine = '骑马联动03号' THEN
- '5000' ELSE '5000'
- END 定额,
- ttt.nOutput_RZ 班组产量,
- CASE
- WHEN ttt.Name_Machine = '骑马联动01号' THEN
- Cast( ttt.nOutput_RZ / 4000 AS DECIMAL ( 5, 1 ) )
- WHEN ttt.Name_Machine = '骑马联动02号' THEN
- Cast( ttt.nOutput_RZ / 4500 AS DECIMAL ( 5, 1 ) )
- WHEN ttt.Name_Machine = '骑马联动03号' THEN
- Cast( ttt.nOutput_RZ / 5000 AS DECIMAL ( 5, 1 ) ) ELSE Cast( ttt.nOutput_RZ / 5000 AS DECIMAL ( 5, 1 ) )
- END 产量折算工时,
- IFNULL( AttFB2.班次时长, 10 ) 考核工时,
- Sum( CASE WHEN a.cCode_Item = 'U0075' THEN a.iReported ELSE 0 END ) AS 改规次数,
- Sum( CASE WHEN a.cCode_Item = 'U0075' THEN a.iReported ELSE 0 END ) * 0.5 AS 改规时间,
- Sum( CASE WHEN a.cCode_Item = 'U0040' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 周保养时间,
- Sum( CASE WHEN a.cCode_Item = 'U0070' THEN Cast( a.nAmount_Item AS DECIMAL ( 8, 3 ) ) ELSE 0 END ) AS 做零活时间
- FROM
- (
- SELECT
- *,
- CASE
-
- WHEN CONVERT ( dOnDuty, CHAR ) < ( SELECT IFNULL( csetvalue, '00:00' ) + ':00' FROM sysetup WHERE csetname = 'frmFSetupAtt.dxtdBegin' ) THEN
- DATE_ADD( dOnDuty, INTERVAL - 1 DAY ) ELSE dOnDuty
- END dRealRptDate
- FROM
- scDayRpt_Teams
- WHERE
- iDayRptStatus >= 0
- ) ttT
- LEFT JOIN (
- SELECT
- ID_Calendar,
- 班次时长,
- 最晚时间
- FROM
- (
- SELECT
- a.ID_Calendar,
- CASE
-
- WHEN a.cCode_Item = 'U0077' THEN
- Cast( a.nAmount_Item AS DECIMAL ( 4, 2 ) ) ELSE 0
- END AS 班次时长,
- a.dTime AS 最晚时间,
- Row_number ( ) OVER ( PARTITION BY a.ID_Calendar ORDER BY a.dTime DESC ) AS RowNumber
- FROM
- sctMJobFeedBackDetail_AttFB a
- WHERE
- a.cCode_Item = 'U0077'
- ) AS subquery
- WHERE
- RowNumber = 1
- ) AttFB2 ON ttT.ID_Calendar = AttFB2.ID_Calendar
- LEFT JOIN sctMJobFeedBackDetail_AttFB a ON ttT.ID_Calendar = a.ID_Calendar
- GROUP BY
- ttt.dRealRptDate,
- ttt.Name_Machine,
- ttT.id,
- AttFB2.班次时长,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ
- ) TBU
- WHERE
- TBU.机台名称 IN ( '骑马联动01号', '骑马联动02号', '骑马联动03号' )
- GROUP BY
- TBU.机台名称,
- TBU.班组名称,
- TBU.机长,
- TBU.生产日期,
- TBU.备注,
- TBU.定额,
- TBU.考核工时 ) tt
- WHERE tt.生产日期 >= '{$ztday}'
- ORDER BY 完成百分比 DESC";
- $res = Db::query($sql);
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").' 存进去了';
- return $res;
- }
- //2.2装订印刷机昨日生产料率分析
- public function yester_zd(){
- $redis=redis();
- $list = json_decode($redis->get(md5('yester_zd_redis')),true);
- // 定义班组名称的排序规则
- $order = ['胶订精工', '胶订潮流', '胶订精密达', '骑马联动', '精装'];
- //按照班组名称排序
- usort($list, function ($a, $b) use ($order) {
- // 获取班组名称中的关键词
- preg_match('/('.implode('|', $order).')/', $a['班组名称'], $matchesA);
- preg_match('/('.implode('|', $order).')/', $b['班组名称'], $matchesB);
- // 获取关键词在排序数组中的索引
- $indexA = array_search($matchesA[1], $order);
- $indexB = array_search($matchesB[1], $order);
- // 比较索引,返回比较结果
- return $indexA - $indexB;
- });
- $result['columns']=[
- ['name'=>'日期','id'=>'rq','width'=>'11','color'=>'red','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'班组名称','id'=>'bzmc','width'=>'24','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'机长','id'=>'jz','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'定额','id'=>'dl','width'=>'16','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'班组产量','id'=>'bzcl','width'=>'11','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'生产效率分析','id'=>'scxlfx','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'完成百分比','id'=>'wcbfb','width'=>'12','autoWrap'=>"true",'textAlign'=>'left']
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['rq']=$v['生产日期'];
- $result['rows'][$k]['bzmc']=$v['班组名称'];
- $result['rows'][$k]['jz']=$v['机长'];
- $result['rows'][$k]['dl']=$v['定额'];
- $result['rows'][$k]['bzcl']=round($v['班组产量']);
- $result['rows'][$k]['scxlfx']=$v['生产效率分析'];
- $result['rows'][$k]['wcbfb']=round($v['完成百分比']);
- }
- if($list==[]){
- $result['rows'][0]['rq']='';
- $result['rows'][0]['bzmc']='';
- $result['rows'][0]['jz']='';
- $result['rows'][0]['dl']='';
- $result['rows'][0]['bzcl']='';
- $result['rows'][0]['scxlfx']='';
- $result['rows'][0]['wcbfb']='';
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- return json($res);
- }
- //2.3轮转印刷机昨日生产料率分析(查询前一天数据)缓存
- public function yester_lz_redis(){
- $redis=redis();
- $redis_key = md5('yester_lz_redis');
- $ztday = date("Y-m-d",strtotime("-1 day"));
- $sql = "SELECT DATE_FORMAT(TBU2.生产日期,'%Y-%m-%d') 生产日期,
- -- TBU2.生产日期,
- -- TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- -- DATE_FORMAT(TBU2.生产日期,'%W') 备注,
- -- Datename(WEEKDAY, TBU2.生产日期) 备注,
- CASE
- WHEN ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) >= TBU2.考核工作时间 THEN '已完成'
- ELSE '未完成'
- END AS 效率分析,
- TBU2.定额,
- -- TBU2.考核工作时间,
- Sum(TBU2.班组产量) 班组产量,
- -- Sum(TBU2.产量折算时间) 产量折算时间,
- -- Sum(TBU2.改墨次数) 改墨次数,
- -- Sum(TBU2.改墨时间) 改墨时间,
- -- Sum(TBU2.改纸路次数) 改纸路次数,
- -- Sum(TBU2.改纸路时间) 改纸路时间,
- -- Sum(TBU2.上版块数) 上版块数,
- -- Sum(TBU2.上版时间) 上版时间,
- -- Sum(TBU2.周保养时间) 周保养时间,
- -- ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- -- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- -- + Sum(TBU2.周保养时间) ) AS 有效工作时间,
- CASE
- WHEN ( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) >= TBU2.考核工作时间 THEN 100
- ELSE Cast(( Sum(TBU2.产量折算时间) + Sum(TBU2.改墨时间)
- + Sum(TBU2.改纸路时间) + Sum(TBU2.上版时间)
- + Sum(TBU2.周保养时间) ) / TBU2.考核工作时间 * 100 AS DECIMAL(5, 2))
- END 完成百分比
- FROM (SELECT CONVERT(TB1.生产日期,CHAR) 生产日期,
- TB1.机台名称,
- 14000 定额,
- TB1.班组名称,
- TB1.机长 AS 机长,
- TB1.班组产量,
- Cast(TB1.班组产量 / 14000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 14000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttT.id,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '标规小森商轮1号'
- UNION ALL
- SELECT CONVERT(TB1.生产日期, CHAR) 生产日期,
- TB1.机台名称,
- 18000 定额,
- TB1.班组名称,
- tb1.机长 AS 机长,
- TB1.班组产量,
- Cast(TB1.班组产量 / 18000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 18000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 = '大规三菱商轮1号'
- UNION ALL
- SELECT CONVERT(TB1.生产日期, CHAR) 生产日期,
- TB1.机台名称,
- 20000 定额,
- TB1.班组名称,
- TB1.机长 AS 机长,
- TB1.班组产量,
- Cast(TB1.班组产量 / 20000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 20000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty, CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- /*上版次数 U0033,改墨U0037,交接班改墨U0041,轮转改墨色U0047,改规U0036,无生活U0039,改纸路U0042,周保养U0040*/
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0 /*iDayRptStatus=0未审核,iDayRptStatus=10为已审核,iDayRptStatus=-10为作废单*/
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 IN( '标规小森商轮2号', '标规三菱商轮1号', '标规三菱商轮2号', '大规小森商轮1号', '标规高斯轮转1号' )
- UNION ALL
- SELECT CONVERT(TB1.生产日期, CHAR) 生产日期,
- TB1.机台名称,
- 12000 定额,
- TB1.班组名称,
- TB1.机长 机长,
- TB1.班组产量,
- Cast(TB1.班组产量 / 12000 AS DECIMAL(5, 2)) 产量折算时间,
- TB1.改墨次数,
- Cast(TB1.改墨次数 * 0.5 AS DECIMAL(5, 2)) AS 改墨时间,
- TB1.上版块数,
- Cast(TB1.上版块数 * 7.5 / 60.00 AS DECIMAL(5, 2)) AS 上版时间,
- TB1.改纸路次数 AS 改纸路次数,
- Cast(TB1.改纸路次数 * 0.5 AS DECIMAL(5, 2)) AS 改纸路时间,
- TB1.周保养时间,
- Cast(TB1.班组产量 / 12000 AS DECIMAL(5, 2)) + TB1.改墨次数 * 0.5 + TB1.上版块数 * 7.5 / 60.00 + TB1.周保养时间 AS 有效工作时间,
- 12 AS 考核工作时间
- FROM (SELECT CASE
- WHEN CONVERT(ttt.dOnDuty,CHAR) < (SELECT IFNULL(csetvalue, '00:00') + ':00'
- FROM sysetup
- WHERE csetname = 'frmFSetupAtt.dxtdBegin') THEN DATE_ADD(ttt.dOnDuty,INTERVAL -1 day)
- ELSE ttt.dOnDuty
- END 生产日期,
- ttt.Name_Machine 机台名称,
- ttt.Name_WorkGroup 班组名称,
- (SELECT GROUP_CONCAT(b.cName) FROM scDayRpt_Teams_People b
- WHERE b.ID_Teams = ttT.ID
- AND b.cStation = '机长') 机长,
- ttt.nOutput_RZ 班组产量,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN b.iAttFB_Type
- ELSE 0
- END) AS 上版次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0033' THEN CONVERT(RIGHT(a.cText_Item, 1),SIGNED)
- ELSE 0
- END) AS 上版块数,
- Sum(CASE
- WHEN a.cCode_Item IN( 'U0047', 'U0041' ) THEN b.iAttFB_Type
- ELSE 0
- END) AS 改墨次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0036' THEN a.nAmount_Item
- ELSE 0
- END) AS 改规次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0042' THEN b.iAttFB_Type
- ELSE 0
- END) AS 改纸路次数,
- Sum(CASE
- WHEN a.cCode_Item = 'U0040' THEN Cast(a.nAmount_Item AS DECIMAL(8, 2))
- ELSE 0
- END) AS 周保养时间
- FROM scDayRpt_Teams ttT
- LEFT JOIN sctMJobFeedBackDetail_AttFB a
- ON ttT.ID_Calendar = a.ID_Calendar
- LEFT JOIN sctJFBActive b
- ON b.ID = a.ID_Act
- WHERE ttT.iDayRptStatus >= 0
- GROUP BY ttt.dOnDuty,
- ttt.Name_Machine,
- ttt.ID,
- ttt.Name_WorkGroup,
- ttt.nOutput_RZ)TB1
- WHERE TB1.机台名称 IN( '标规报轮1号', '标规204胶轮1号' ))TBU2
-
- WHERE TBU2.生产日期 >= '{$ztday}'
- AND TBU2.班组产量 > 0
- GROUP BY TBU2.机台名称,
- TBU2.班组名称,
- TBU2.机长,
- TBU2.生产日期,
- TBU2.定额,
- TBU2.考核工作时间
- ORDER BY 完成百分比 DESC";
- $res = Db::query($sql);
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").' 存进去了';
- return $res;
- }
- //2.3轮转印刷机昨日生产料率分析
- public function yester_lz(){
- $redis=redis();
- $list = json_decode($redis->get(md5('yester_lz_redis')), true);
- // 定义班组名称的排序规则
- $order = ['标规', '大规'];
- //按照班组名称排序
- usort($list, function ($a, $b) use ($order) {
- // 获取班组名称中的关键词
- preg_match('/('.implode('|', $order).')/', $a['班组名称'], $matchesA);
- preg_match('/('.implode('|', $order).')/', $b['班组名称'], $matchesB);
- // 获取关键词在排序数组中的索引
- $indexA = array_search($matchesA[1], $order);
- $indexB = array_search($matchesB[1], $order);
- // 比较索引,返回比较结果
- return $indexA - $indexB;
- });
- $result['columns']=[
- ['name'=>'日期','id'=>'rq','width'=>'11','color'=>'red','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'班组名称','id'=>'bzmc','width'=>'24','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'机长','id'=>'jz','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'定额','id'=>'dl','width'=>'16','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'班组产量','id'=>'bzcl','width'=>'11','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'生产效率分析','id'=>'scxlfx','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'完成百分比','id'=>'wcbfb','width'=>'12','autoWrap'=>"true",'textAlign'=>'left']
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['rq']=$v['生产日期'];
- $result['rows'][$k]['bzmc']=$v['班组名称'];
- $result['rows'][$k]['jz']=$v['机长'];
- $result['rows'][$k]['dl']=$v['定额'];
- $result['rows'][$k]['bzcl']=round($v['班组产量']);
- $result['rows'][$k]['scxlfx']=$v['效率分析'];
- $result['rows'][$k]['wcbfb']=round($v['完成百分比']);
- }
- if($list==[]){
- $result['rows'][0]['rq']='';
- $result['rows'][0]['bzmc']='';
- $result['rows'][0]['jz']='';
- $result['rows'][0]['dl']='';
- $result['rows'][0]['bzcl']='';
- $result['rows'][0]['scxlfx']='';
- $result['rows'][0]['wcbfb']='';
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- return json($res);
- }
- /**
- * 第三屏第三页 质量管控看板
- */
- //按客户 按质量问题 按责任部门-->分组【Bi根据饼状图分组轮播变化】【暂时未用到 可以删除】
- public function zlgk_grouping() {
- $result = ['按部门', '按质量问题', '按责任部门'];
- $data = [
- "columns" => [
- ["name" => "分组", "id" => "subsys"]
- ],
- "rows" => []
- ];
- foreach ($result as $value) {
- $data["rows"][] = ["subsys" => $value];
- }
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $data
- ];
- return json_encode($res, JSON_UNESCAPED_UNICODE);
- }
- //同期投诉增减比 按客户->今年缓存
- public function qkhzl_redis(){
- $redis=redis();
- $redis_key = md5('qkhzl_redis');
- // $startDate = date("Y-04-22");
- $startDate = date("Y-m-d", strtotime("-1 year"));
- $endDate = date("Y-m-d");
- $res= Db::query("SELECT resp.cReasonCName,D.cdwmc FROM ecComplainFeedback B LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN MCYD M ON M.CCYDH = B.cOrderBillCode INNER JOIN qlOrderProduct p ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,Sum(a.iAmountOut) iAmount_Out FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c ON c.ID_qlOrderProduct = p.ID LEFT JOIN ecComplainContent DD
- ON DD.iComplainFBID = B.iID LEFT JOIN tbConfig E ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,
- PP.strSubName AS cReasonPName,
- CC2.strSubName AS cReasonCName,
- CR.cRespPerson,
- CR.cRespDept,
- CR.cRespTech,
- CR.cRespCorp,
- CR.nMoney
- FROM ecComplainReasonAnalysis R
- LEFT JOIN tbConfig CC2
- ON CC2.iNoConfig = R.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R.iReasonID_P
- LEFT JOIN ecComplainResponsibility CR
- ON CR.iComplainRAID = R.iID) resp
- ON resp.iComplainFBID = B.iID
- WHERE 1 = 1
- AND b.dFeedbackDate >= '{$startDate}'
- AND b.dFeedbackDate <= '{$endDate}'");
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //同期投诉增减比 按客户->去年缓存
- public function qiankhzl_redis(){
- $redis=redis();
- $redis_key = md5('qiankhzl_redis');
- // 获取当前的年、月、日
- $currentYear = date("Y");
- $currentMonth = date("m");
- $currentDay = date("d");
- // 计算前一年和前两年的年份
- $lastYear = $currentYear - 1;
- $twoYearsAgo = $currentYear - 2;
- // 构造日期字符串
- $startDate = date("Y-m-d", strtotime("$twoYearsAgo-$currentMonth-$currentDay"));
- $endDate = date("Y-m-d", strtotime("$lastYear-$currentMonth-$currentDay"));
- $res= Db::query("SELECT resp.cReasonCName,D.cdwmc FROM ecComplainFeedback B LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN MCYD M ON M.CCYDH = B.cOrderBillCode INNER JOIN qlOrderProduct p ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,Sum(a.iAmountOut) iAmount_Out FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c ON c.ID_qlOrderProduct = p.ID LEFT JOIN ecComplainContent DD
- ON DD.iComplainFBID = B.iID LEFT JOIN tbConfig E ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,
- PP.strSubName AS cReasonPName,
- CC2.strSubName AS cReasonCName,
- CR.cRespPerson,
- CR.cRespDept,
- CR.cRespTech,
- CR.cRespCorp,
- CR.nMoney
- FROM ecComplainReasonAnalysis R
- LEFT JOIN tbConfig CC2
- ON CC2.iNoConfig = R.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R.iReasonID_P
- LEFT JOIN ecComplainResponsibility CR
- ON CR.iComplainRAID = R.iID) resp
- ON resp.iComplainFBID = B.iID
- WHERE 1 = 1
- AND b.dFeedbackDate >= '{$startDate}'
- AND b.dFeedbackDate <= '{$endDate}'");
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //同期投诉增减比 按责任部门->今年缓存
- public function qbmzl_redis(){
- $redis=redis();
- $redis_key = md5('qbmzl_redis');
- $startDate = date("Y-m-d", strtotime("-1 year"));
- $endDate = date("Y-m-d");
- $res1=Db::query("SELECT
- IFNULL(责任部门, '其他') AS 部门, COUNT(*) AS 投诉次数
- FROM (
- SELECT
- e.cDept AS 责任部门,
- F.MergedStrSubName AS 小类
- FROM
- ecComplainFeedback B
- LEFT JOIN ecComplainContent C ON B.iID = C.iComplainFBID
- LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN ecComplainDeptOpinion e ON B.iID = e.iComplainFBID
- LEFT JOIN (
- SELECT
- R.iComplainFBID,
- (
- SELECT
- GROUP_CONCAT(cc.strSubName ORDER BY cc.strSubName SEPARATOR ',')
- FROM
- ecComplainReasonAnalysis AS R2
- LEFT JOIN
- tbConfig AS cc ON cc.iNoConfig = R2.iReasonID_C
- WHERE
- R2.iComplainFBID = R.iComplainFBID
- ) AS MergedStrSubName
- FROM
- ecComplainReasonAnalysis AS R
- LEFT JOIN
- tbConfig AS cc ON cc.iNoConfig = R.iReasonID_C
- WHERE
- 1 = 1
- GROUP BY
- R.iComplainFBID
- ) F ON B.iID = F.iComplainFBID
- WHERE
- DATE_FORMAT(B.dComplainDate, '%Y-%m-%d') BETWEEN '{$startDate}' AND '{$endDate}'
- AND B.iState = 30
- ) AS MainQuery
- GROUP BY
- MainQuery.责任部门
- ORDER BY COUNT(*) DESC");
- if($res1){
- $redis->set($redis_key, json_encode($res1));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res1;
- }
- }
- //同期投诉增减比 按责任部门->去年缓存
- public function qianbmzl_redis(){
- $redis=redis();
- $redis_key = md5('qianbmzl_redis');
- // 获取当前的年、月、日
- $currentYear = date("Y");
- $currentMonth = date("m");
- $currentDay = date("d");
- // 计算前一年和前两年的年份
- $lastYear = $currentYear - 1;
- $twoYearsAgo = $currentYear - 2;
- // 构造日期字符串
- $startDate = date("Y-m-d", strtotime("$twoYearsAgo-$currentMonth-$currentDay"));
- $endDate = date("Y-m-d", strtotime("$lastYear-$currentMonth-$currentDay"));
- $res1=Db::query("SELECT
- IFNULL(责任部门, '其他') AS 部门, COUNT(*) AS 投诉次数
- FROM (
- SELECT
- e.cDept AS 责任部门,
- F.MergedStrSubName AS 小类
- FROM
- ecComplainFeedback B
- LEFT JOIN ecComplainContent C ON B.iID = C.iComplainFBID
- LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN ecComplainDeptOpinion e ON B.iID = e.iComplainFBID
- LEFT JOIN (
- SELECT
- R.iComplainFBID,
- (
- SELECT
- GROUP_CONCAT(cc.strSubName ORDER BY cc.strSubName SEPARATOR ',')
- FROM
- ecComplainReasonAnalysis AS R2
- LEFT JOIN
- tbConfig AS cc ON cc.iNoConfig = R2.iReasonID_C
- WHERE
- R2.iComplainFBID = R.iComplainFBID
- ) AS MergedStrSubName
- FROM
- ecComplainReasonAnalysis AS R
- LEFT JOIN
- tbConfig AS cc ON cc.iNoConfig = R.iReasonID_C
- WHERE
- 1 = 1
- GROUP BY
- R.iComplainFBID
- ) F ON B.iID = F.iComplainFBID
- WHERE
- DATE_FORMAT(B.dComplainDate, '%Y-%m-%d') BETWEEN '{$startDate}' AND '{$endDate}'
- AND B.iState = 30
- ) AS MainQuery
- GROUP BY
- MainQuery.责任部门
- ORDER BY COUNT(*) DESC");
- if($res1){
- $redis->set($redis_key, json_encode($res1));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res1;
- }
- }
- //同期投诉增减比 按责任部门->今年缓存【可以删】
- public function qbmzl_rediss(){
- $redis=redis();
- $redis_key = md5('qbmzl_redis');
- $startDate = date("Y-m-d", strtotime("-1 year"));
- $endDate = date("Y-m-d");
- $res1=Db::query("SELECT CASE
- WHEN CR.cRespDept = '' THEN '外协单位'
- ELSE CR.cRespDept
- END AS 部门,
- Count(*) AS 投诉次数
- FROM ecComplainFeedback B
- LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN MCYD M ON M.CCYDH = B.cOrderBillCode
- INNER JOIN qlOrderProduct p ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,
- Sum(a.iAmountOut) iAmount_Out
- FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c
- ON c.ID_qlOrderProduct = p.ID
- LEFT JOIN ecComplainContent DD ON DD.iComplainFBID = B.iID
- LEFT JOIN tbConfig E ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,CR1.cRespDept
- FROM ecComplainReasonAnalysis R
- LEFT JOIN ecComplainResponsibility CR1 ON CR1.iComplainRAID = R.iID) CR
- ON B.iID = CR.iComplainFBID
- WHERE 1 = 1 AND b.dFeedbackDate >= '{$startDate}' AND b.dFeedbackDate <= '{$endDate}'
- GROUP BY CR.cRespDept ORDER BY 投诉次数 DESC,
- CR.cRespDept; ");
- foreach($res1 as $k=>$v){
- if($v['部门']=='全部'){
- unset($res1[$k]);
- }
- }
- foreach($res1 as $k=>$v){
- if($v['部门']===null){
- $res1[$k]['部门']='全部';
- }
- }
- $res = Db::query("SELECT CR2.cReasonPName,CR2.cRespDept
- FROM ecComplainFeedback B2
- LEFT JOIN (SELECT R2.iComplainFBID,
- CR1.cRespDept,
- CC.strSubName AS cReasonPName
- FROM ecComplainReasonAnalysis R2
- LEFT JOIN ecComplainResponsibility CR1
- ON CR1.iComplainRAID = R2.iID
- LEFT JOIN tbConfig CC
- ON CC.iNoConfig = R2.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R2.iReasonID_P) CR2
- ON B2.iID = CR2.iComplainFBID
- WHERE b2.dFeedbackDate >= '{$startDate}'
- AND b2.dFeedbackDate <= '{$endDate}'");
- $list = [];
- for ($i = 0; $i < count($res); $i++) {
- if($res[$i]['cRespDept']===''){
- $res[$i]['cRespDept']='外协单位';
- }
- if($res[$i]['cRespDept']===null){
- $res[$i]['cRespDept']='全部';
- }
- $list[$res[$i]['cRespDept']][] = $res[$i]['cReasonPName'];
- }
- array_multisort($list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($list as $k => $v) {
- // $result[$i]['部门'] = $k;
- // $result[$i]['投诉次数'] = count($v);
- // $result[$i]['合并原因'] = '';
- $result[$k]='';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- // $result[$i]['合并原因'] .= $a . $b . '/';
- $result[$k] .= $a . $b . '/';
- }
- // $result[$i]['合并原因'] = substr($result[$i]['合并原因'], 0, -1);
- $result[$k] = substr($result[$k], 0, -1);
- $i++;
- }
- foreach($res1 as $k=>$v){
- if($v['部门']!==null)$res1[$k]['合并原因']=$result[$v['部门']];
- if($v['部门']=='全部'){
- $res1[$k]['投诉次数']=count($list['全部']);
- }
- }
- if($res1){
- $redis->set($redis_key, json_encode($res1));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res1;
- }
- }
- //同期投诉增减比 按责任部门->去年缓存【可以删】
- public function qianbmzl_rediss(){
- $redis=redis();
- $redis_key = md5('qianbmzl_redis');
- // 获取当前的年、月、日
- $currentYear = date("Y");
- $currentMonth = date("m");
- $currentDay = date("d");
- // 计算前一年和前两年的年份
- $lastYear = $currentYear - 1;
- $twoYearsAgo = $currentYear - 2;
- // 构造日期字符串
- $startDate = date("Y-m-d", strtotime("$twoYearsAgo-$currentMonth-$currentDay"));
- $endDate = date("Y-m-d", strtotime("$lastYear-$currentMonth-$currentDay"));
- $res1=Db::query("SELECT CASE
- WHEN CR.cRespDept = '' THEN '外协单位'
- ELSE CR.cRespDept
- END AS 部门,
- Count(*) AS 投诉次数
- FROM ecComplainFeedback B
- LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN MCYD M ON M.CCYDH = B.cOrderBillCode
- INNER JOIN qlOrderProduct p ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,
- Sum(a.iAmountOut) iAmount_Out
- FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c
- ON c.ID_qlOrderProduct = p.ID
- LEFT JOIN ecComplainContent DD ON DD.iComplainFBID = B.iID
- LEFT JOIN tbConfig E ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,CR1.cRespDept
- FROM ecComplainReasonAnalysis R
- LEFT JOIN ecComplainResponsibility CR1 ON CR1.iComplainRAID = R.iID) CR
- ON B.iID = CR.iComplainFBID
- WHERE 1 = 1 AND b.dFeedbackDate >= '{$startDate}' AND b.dFeedbackDate <= '{$endDate}'
- GROUP BY CR.cRespDept ORDER BY 投诉次数 DESC,
- CR.cRespDept; ");
- foreach($res1 as $k=>$v){
- if($v['部门']=='全部'){
- unset($res1[$k]);
- }
- }
- foreach($res1 as $k=>$v){
- if($v['部门']===null){
- $res1[$k]['部门']='全部';
- }
- }
- $res = Db::query("SELECT CR2.cReasonPName,CR2.cRespDept
- FROM ecComplainFeedback B2
- LEFT JOIN (SELECT R2.iComplainFBID,
- CR1.cRespDept,
- CC.strSubName AS cReasonPName
- FROM ecComplainReasonAnalysis R2
- LEFT JOIN ecComplainResponsibility CR1
- ON CR1.iComplainRAID = R2.iID
- LEFT JOIN tbConfig CC
- ON CC.iNoConfig = R2.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R2.iReasonID_P) CR2
- ON B2.iID = CR2.iComplainFBID
- WHERE b2.dFeedbackDate >= '{$startDate}'
- AND b2.dFeedbackDate <= '{$endDate}'");
- $list = [];
- for ($i = 0; $i < count($res); $i++) {
- if($res[$i]['cRespDept']===''){
- $res[$i]['cRespDept']='外协单位';
- }
- if($res[$i]['cRespDept']===null){
- $res[$i]['cRespDept']='全部';
- }
- $list[$res[$i]['cRespDept']][] = $res[$i]['cReasonPName'];
- }
- array_multisort($list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($list as $k => $v) {
- // $result[$i]['部门'] = $k;
- // $result[$i]['投诉次数'] = count($v);
- // $result[$i]['合并原因'] = '';
- $result[$k]='';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- // $result[$i]['合并原因'] .= $a . $b . '/';
- $result[$k] .= $a . $b . '/';
- }
- // $result[$i]['合并原因'] = substr($result[$i]['合并原因'], 0, -1);
- $result[$k] = substr($result[$k], 0, -1);
- $i++;
- }
- foreach($res1 as $k=>$v){
- if($v['部门']!==null)$res1[$k]['合并原因']=$result[$v['部门']];
- if($v['部门']=='全部'){
- $res1[$k]['投诉次数']=count($list['全部']);
- }
- }
- if($res1){
- $redis->set($redis_key, json_encode($res1));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res1;
- }
- }
- //同期投诉增减比 按质量问题->今年缓存
- public function qzlwt_redis(){
- $redis=redis();
- $redis_key = md5('qzlwt_redis');
- $startDate = date("Y-m-d", strtotime("-1 year"));
- $endDate = date("Y-m-d");
- $res = Db::query("SELECT D1.cdwmc,resp1.cReasonCName
- FROM ecComplainFeedback B
- LEFT JOIN DZYWDW D1
- ON D1.iywdwid = B.iClientID
- LEFT JOIN MCYD M
- ON M.CCYDH = B.cOrderBillCode
- INNER JOIN qlOrderProduct p
- ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,
- Sum(a.iAmountOut) iAmount_Out
- FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c
- ON c.ID_qlOrderProduct = p.ID
- LEFT JOIN ecComplainContent DD
- ON DD.iComplainFBID = B.iID
- LEFT JOIN tbConfig E
- ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T
- ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,
- PP.strSubName AS cReasonPName,
- CC2.strSubName AS cReasonCName,
- CR.cRespPerson,
- CR.cRespDept,
- CR.cRespTech,
- CR.cRespCorp,
- CR.nMoney
- FROM ecComplainReasonAnalysis R
- LEFT JOIN tbConfig CC2
- ON CC2.iNoConfig = R.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R.iReasonID_P
- LEFT JOIN ecComplainResponsibility CR
- ON CR.iComplainRAID = R.iID) resp1
- ON resp1.iComplainFBID = B.iID
- WHERE b.dFeedbackDate >= '{$startDate}'
- AND b.dFeedbackDate <= '{$endDate}'");
- if($res){
- $list = [];
- for ($i = 0; $i < count($res); $i++) {
- $list[$res[$i]['cReasonCName']][] = $res[$i]['cdwmc'];
- }
- array_multisort($list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($list as $k => $v) {
- $result[$i]['质量问题'] = $k;
- $result[$i]['投诉次数'] = count($v);
- $result[$i]['合并原因'] = '';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- $result[$i]['合并原因'] .= $a . $b . '/';
- }
- $result[$i]['合并原因'] = substr($result[$i]['合并原因'], 0, -1);
- $i++;
- }
- $result=array_splice($result,0,6);
- $list=[];
- foreach($result as $k=>$v){
- $list[$k]['name']=$v['质量问题'];
- $list[$k]['value']=$v['投诉次数'];
- }
- $redis->set($redis_key, json_encode($list));
- echo date("Y-m-d H:i:s").'存进去了';
- return $list;
- }
- }
- //同期投诉增减比 按质量问题->去年缓存
- public function qianzlwt_redis(){
- $redis=redis();
- $redis_key = md5('qianzlwt_redis');
- // 获取当前的年、月、日
- $currentYear = date("Y");
- $currentMonth = date("m");
- $currentDay = date("d");
- // 计算前一年和前两年的年份
- $lastYear = $currentYear - 1;
- $twoYearsAgo = $currentYear - 2;
- // 构造日期字符串
- $startDate = date("Y-m-d", strtotime("$twoYearsAgo-$currentMonth-$currentDay"));
- $endDate = date("Y-m-d", strtotime("$lastYear-$currentMonth-$currentDay"));
- $res = Db::query("SELECT D1.cdwmc,resp1.cReasonCName
- FROM ecComplainFeedback B
- LEFT JOIN DZYWDW D1
- ON D1.iywdwid = B.iClientID
- LEFT JOIN MCYD M
- ON M.CCYDH = B.cOrderBillCode
- INNER JOIN qlOrderProduct p
- ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,
- Sum(a.iAmountOut) iAmount_Out
- FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c
- ON c.ID_qlOrderProduct = p.ID
- LEFT JOIN ecComplainContent DD
- ON DD.iComplainFBID = B.iID
- LEFT JOIN tbConfig E
- ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T
- ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,
- PP.strSubName AS cReasonPName,
- CC2.strSubName AS cReasonCName,
- CR.cRespPerson,
- CR.cRespDept,
- CR.cRespTech,
- CR.cRespCorp,
- CR.nMoney
- FROM ecComplainReasonAnalysis R
- LEFT JOIN tbConfig CC2
- ON CC2.iNoConfig = R.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R.iReasonID_P
- LEFT JOIN ecComplainResponsibility CR
- ON CR.iComplainRAID = R.iID) resp1
- ON resp1.iComplainFBID = B.iID
- WHERE b.dFeedbackDate >= '{$startDate}'
- AND b.dFeedbackDate <= '{$endDate}'");
- if($res){
- $list = [];
- for ($i = 0; $i < count($res); $i++) {
- $list[$res[$i]['cReasonCName']][] = $res[$i]['cdwmc'];
- }
- array_multisort($list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($list as $k => $v) {
- $result[$i]['质量问题'] = $k;
- $result[$i]['投诉次数'] = count($v);
- $result[$i]['合并原因'] = '';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- $result[$i]['合并原因'] .= $a . $b . '/';
- }
- $result[$i]['合并原因'] = substr($result[$i]['合并原因'], 0, -1);
- $i++;
- }
- $result=array_splice($result,0,6);
- $list=[];
- foreach($result as $k=>$v){
- $list[$k]['name']=$v['质量问题'];
- $list[$k]['value']=$v['投诉次数'];
- }
- $redis->set($redis_key, json_encode($list));
- echo date("Y-m-d H:i:s").'存进去了';
- return $list;
- }
- }
- //同期投诉增减比->接口
- public function tqts_list(){
- $postData = input('post.dependence.item.name');
- $redisKeys = [
- "按客户" => 'qkhzl_redis',
- "按质量问题" => 'qzlwt_redis',
- "按责任部门" => 'qbmzl_redis'
- ];
- $redis_key = isset($redisKeys[$postData]) ? md5($redisKeys[$postData]) : md5('qkhzl_redis');
- $redis = redis();
- $r_list = json_decode($redis->get($redis_key), true);
- if (!$r_list) {
- // 处理没有数据的情况
- $response_data = [
- 'status' => 1,
- 'msg' => '没有找到相关数据',
- 'data' => []
- ];
- return json_encode($response_data, JSON_UNESCAPED_UNICODE);
- }
- if($postData == '按客户') {
- $qr_list = json_decode($redis->get(md5('qiankhzl_redis')),true);
- $c_list = [];
- foreach ($r_list as $item) {
- $c_list[$item['cdwmc']][] = $item['cReasonCName'];
- }
- array_multisort($c_list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($c_list as $cdwmc => $reasons) {
- $complaint_count = count($reasons);
- $unique_reasons = array_count_values(array_filter($reasons)); // 去除空值并计算出现次数
- // 构建质量问题的描述
- $quality_issues = '';
- foreach ($unique_reasons as $reason => $count) {
- $quality_issues .= "{$reason}{$count}/";
- }
- // 去掉最后一个斜杠
- $quality_issues = rtrim($quality_issues, '/');
- // 添加到结果数组
- $result[] = [
- '客户单位' => $cdwmc,
- '投诉次数' => $complaint_count
- ];
- }
- $qc_list = [];
- foreach ($qr_list as $qitem) {
- $qc_list[$qitem['cdwmc']][] = $qitem['cReasonCName'];
- }
- array_multisort($qc_list, SORT_DESC);
- $qresult = [];
- $qi = 0;
- foreach ($qc_list as $qcdwmc => $qreasons) {
- $qcomplaint_count = count($qreasons);
- $qunique_reasons = array_count_values(array_filter($qreasons)); // 去除空值并计算出现次数
- // 构建质量问题的描述
- $qquality_issues = '';
- foreach ($qunique_reasons as $qreason => $qcount) {
- $qquality_issues .= "{$qreason}{$qcount}/";
- }
- // 去掉最后一个斜杠
- $qquality_issues = rtrim($qquality_issues, '/');
- // 添加到结果数组
- $qresult[] = [
- '客户单位' => $qcdwmc,
- '投诉次数' => $qcomplaint_count
- ];
- }
- $result = array_slice($result, 0, 10);
- $qresult = array_slice($qresult, 0, 10);
- foreach ($result as $index => $rv) {
- $list['categories'][] = $rv['客户单位'];
- }
- // 初始数据结构
- $data = [
- "categories" => [], // 客户单位
- "series" => [
- [
- "name" => "同比增减百分比",
- "type" => "line",
- "yAxisIndex" => 1,
- "data" => []
- ],
- [
- "name" => date('Y').'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => []
- ],
- [
- "name" => (date('Y')-1).'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => [],
- ]
- ]
- ];
- // 确保 $result 和 $qresult 索引的一致性
- foreach ($result as $index => $rv) {
- // 添加客户单位
- $data['categories'][] = $rv['客户单位'];
- // 计算同比增减百分比,并添加到相应的数据数组
- if (isset($rv['投诉次数']) && isset($qresult[$index]['投诉次数']) && $qresult[$index]['投诉次数'] != 0) {
- $percentage_change = round(($rv['投诉次数'] - $qresult[$index]['投诉次数']) / $qresult[$index]['投诉次数'] ,2);
- $data['series'][0]['data'][] = $percentage_change; // 同比增减百分比
- } else {
- $data['series'][0]['data'][] = 0; // 防止错误计算
- }
- // 添加今年的数据
- if (isset($rv['投诉次数'])) {
- $data['series'][1]['data'][] = $rv['投诉次数'];
- } else {
- $data['series'][1]['data'][] = 0; // 防止空值
- }
- // 添加去年的数据
- if (isset($qresult[$index]['投诉次数'])) {
- $data['series'][2]['data'][] = $qresult[$index]['投诉次数'];
- } else {
- $data['series'][2]['data'][] = 0; // 防止空值
- }
- }
- // 组织JSON返回结构
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $data
- ];
- // 返回JSON响应
- return json($res);
- } else if($postData == '按质量问题') {
- $qr_list = json_decode($redis->get(md5('qiankhzl_redis')),true);
- $qresult = json_decode($redis->get(md5('qianzlwt_redis')),true);
- // 初始数据结构
- $data = [
- "categories" => [], // 客户单位
- "series" => [
- [
- "name" => "同比增减百分比",
- "type" => "line",
- "yAxisIndex" => 1,
- "data" => []
- ],
- [
- "name" => date('Y').'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => []
- ],
- [
- "name" => (date('Y')-1).'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => [],
- ]
- ]
- ];
- foreach ($r_list as $index => $rv) {
- // 添加客户单位
- $data['categories'][] = $rv['name'];
- // 计算同比增减百分比,并添加到相应的数据数组
- if (isset($rv['value']) && isset($qresult[$index]['value']) && $qresult[$index]['value'] != 0) {
- $percentage_change = round(($rv['value'] - $qresult[$index]['value']) / $qresult[$index]['value'] ,2);
- $data['series'][0]['data'][] = $percentage_change; // 同比增减百分比
- } else {
- $data['series'][0]['data'][] = 0; // 防止错误计算
- }
- // 添加今年的数据
- if (isset($rv['value'])) {
- $data['series'][1]['data'][] = $rv['value'];
- } else {
- $data['series'][1]['data'][] = 0; // 防止空值
- }
- // 添加去年的数据
- if (isset($qresult[$index]['value'])) {
- $data['series'][2]['data'][] = $qresult[$index]['value'];
- } else {
- $data['series'][2]['data'][] = 0; // 防止空值
- }
- }
- // 组织JSON返回结构
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $data
- ];
- // 返回JSON响应
- return json($res);
- } else if($postData == '按责任部门') {
- $qresult = json_decode($redis->get(md5('qianbmzl_redis')),true);
- // 初始数据结构
- $data = [
- "categories" => [], // 客户单位
- "series" => [
- [
- "name" => "同比增减百分比",
- "type" => "line",
- "yAxisIndex" => 1,
- "data" => []
- ],
- [
- "name" => date('Y').'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => []
- ],
- [
- "name" => (date('Y')-1).'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => [],
- ]
- ]
- ];
- foreach ($r_list as $index => $rv) {
- // 添加客户单位
- $data['categories'][] = $rv['部门'];
- // 计算同比增减百分比,并添加到相应的数据数组
- if (isset($rv['投诉次数']) && isset($qresult[$index]['投诉次数']) && $qresult[$index]['投诉次数'] != 0) {
- $percentage_change = round(($rv['投诉次数'] - $qresult[$index]['投诉次数']) / $qresult[$index]['投诉次数'] ,2);
- $data['series'][0]['data'][] = $percentage_change; // 同比增减百分比
- } else {
- $data['series'][0]['data'][] = 0; // 防止错误计算
- }
- // 添加今年的数据
- if (isset($rv['投诉次数'])) {
- $data['series'][1]['data'][] = $rv['投诉次数'];
- } else {
- $data['series'][1]['data'][] = 0; // 防止空值
- }
- // 添加去年的数据
- if (isset($qresult[$index]['投诉次数'])) {
- $data['series'][2]['data'][] = $qresult[$index]['投诉次数'];
- } else {
- $data['series'][2]['data'][] = 0; // 防止空值
- }
- }
- // 组织JSON返回结构
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $data
- ];
- // 返回JSON响应
- return json($res);
- }else{
- $qr_list = json_decode($redis->get(md5('qiankhzl_redis')),true);
- $c_list = [];
- foreach ($r_list as $item) {
- $c_list[$item['cdwmc']][] = $item['cReasonCName'];
- }
- array_multisort($c_list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($c_list as $cdwmc => $reasons) {
- $complaint_count = count($reasons);
- $unique_reasons = array_count_values(array_filter($reasons)); // 去除空值并计算出现次数
- // 构建质量问题的描述
- $quality_issues = '';
- foreach ($unique_reasons as $reason => $count) {
- $quality_issues .= "{$reason}{$count}/";
- }
- // 去掉最后一个斜杠
- $quality_issues = rtrim($quality_issues, '/');
- // 添加到结果数组
- $result[] = [
- '客户单位' => $cdwmc,
- '投诉次数' => $complaint_count
- ];
- }
- $qc_list = [];
- foreach ($qr_list as $qitem) {
- $qc_list[$qitem['cdwmc']][] = $qitem['cReasonCName'];
- }
- array_multisort($qc_list, SORT_DESC);
- $qresult = [];
- $qi = 0;
- foreach ($qc_list as $qcdwmc => $qreasons) {
- $qcomplaint_count = count($qreasons);
- $qunique_reasons = array_count_values(array_filter($qreasons)); // 去除空值并计算出现次数
- // 构建质量问题的描述
- $qquality_issues = '';
- foreach ($qunique_reasons as $qreason => $qcount) {
- $qquality_issues .= "{$qreason}{$qcount}/";
- }
- // 去掉最后一个斜杠
- $qquality_issues = rtrim($qquality_issues, '/');
- // 添加到结果数组
- $qresult[] = [
- '客户单位' => $qcdwmc,
- '投诉次数' => $qcomplaint_count
- ];
- }
- $result = array_slice($result, 0, 10);
- $qresult = array_slice($qresult, 0, 10);
- foreach ($result as $index => $rv) {
- $list['categories'][] = $rv['客户单位'];
- }
- // 初始数据结构
- $data = [
- "categories" => [], // 客户单位
- "series" => [
- [
- "name" => "同比增减百分比",
- "type" => "line",
- "yAxisIndex" => 1,
- "data" => []
- ],
- [
- "name" => date('Y').'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => []
- ],
- [
- "name" => (date('Y')-1).'年',
- "type" => "bar",
- "yAxisIndex" => 0,
- "data" => [],
- ]
- ]
- ];
- // 确保 $result 和 $qresult 索引的一致性
- foreach ($result as $index => $rv) {
- // 添加客户单位
- $data['categories'][] = $rv['客户单位'];
- // 计算同比增减百分比,并添加到相应的数据数组
- if (isset($rv['投诉次数']) && isset($qresult[$index]['投诉次数']) && $qresult[$index]['投诉次数'] != 0) {
- $percentage_change = round(($rv['投诉次数'] - $qresult[$index]['投诉次数']) / $qresult[$index]['投诉次数'] ,2);
- $data['series'][0]['data'][] = $percentage_change; // 同比增减百分比
- } else {
- $data['series'][0]['data'][] = 0; // 防止错误计算
- }
- // 添加今年的数据
- if (isset($rv['投诉次数'])) {
- $data['series'][1]['data'][] = $rv['投诉次数'];
- } else {
- $data['series'][1]['data'][] = 0; // 防止空值
- }
- // 添加去年的数据
- if (isset($qresult[$index]['投诉次数'])) {
- $data['series'][2]['data'][] = $qresult[$index]['投诉次数'];
- } else {
- $data['series'][2]['data'][] = 0; // 防止空值
- }
- }
- // 组织JSON返回结构
- $res = [
- 'status' => 0,
- 'msg' => '',
- 'data' => $data
- ];
- // 返回JSON响应
- return json($res);
- }
- }
- //当日重点产品机台检验情况->缓存
- public function drzdcpjtjyqk_redis(){
- $redis=redis();
- $redis_key = md5('drzdcpjtjyqk_redis');
- $sql = "SELECT zd.订单号,
- zd.印件名称,
- zd.生产机台,
- jy.检验工序,
- jy.检验类型,
- jy.检验结果,
- DATE_FORMAT(jy.检验时间, '%Y-%m-%d %H:%i') AS 检验时间,
- jy.检验人
- FROM (SELECT DISTINCT Dev.cName 生产机台,
- job.cProductCode 订单号,
- job.cProductName 印件名称,
- dd.czlyq 质量等级,
- dd.CZWKB 开本,
- dd.ncs 印数,
- dd.CYWDWMC 业务单位,
- DATE_FORMAT(NOW(), '%Y-%m-%d') AS 生产日期
- FROM scMachineJob Job
- LEFT JOIN mcyd dd
- ON dd.ccydh = job.cProductCode
- LEFT JOIN (SELECT
- t.iType,
- t.ID,
- t.cCode,
- t.cName,
- t.iGzzxId,
- t.ID_BM,
- t.cbmbh,
- t.cbmmc,
- t.cType_Sys,
- t.iStop,
- t.cType_Dev,
- t.cShortName,
- t.iTypeWage,
- t.iOverProductType
- FROM (
- SELECT
- 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- MKernel
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT
- 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- dzyssb
- INNER JOIN MKernel ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT
- 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM
- MKerJzmb
- INNER JOIN MKernel ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT
- 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- dzywdw
- WHERE
- bwjg = 1
- UNION
- SELECT
- 3 AS iType,
- -1,
- '',
- '外厂资源',
- -1,
- -1 AS ID_BM,
- '',
- '',
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- ) AS t
- WHERE
- (t.iStop = 0)) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- WHERE Job.iStatus IN ( 0, 1, 2, 10, 20 )
- AND Job.iJobType IN ( 0, 4 )
- AND Job.iType_Res = 0
- AND dd.cyjmc LIKE '%求是%'
- OR ( Job.iStatus IN ( 0, 1, 2, 10, 20 )
- AND Job.iJobType IN ( 0, 4 )
- AND Job.iType_Res = 0
- AND ( dd.Czlyq = '重点产品'
- AND dd.cyjlx <> '杂志' ) )
- AND ( Dev.cName <> '塑封机01号'
- AND Dev.cName <> '塑封机02号' )
- AND job.dPlanStart > DATE_FORMAT(NOW(), '%Y-%m-%d')
- AND job.dPlanStart < DATE_FORMAT(NOW() + INTERVAL 2 DAY, '%Y-%m-%d'))zd
- LEFT JOIN (SELECT t.productcode 订单号,
- t.cName 印件名称,
- t.iDetectionType 检验类型,
- t.dFirstTime 检验时间,
- t.cProcess 检验工序,
- t.status 检验结果,
- t.czgxm 检验人,
- t.cJzmc
- FROM (SELECT b.ID,
- c.ID AS mainid,
- 'XJBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- c.iDetectionNum,
- CASE c.iDetectionType
- WHEN 0 THEN '首检单'
- WHEN 1 THEN '巡检单'
- WHEN 2 THEN '自检单'
- END AS iDetectionType,
- c.dFirstTime,
- c.cTeams,
- c.cProcess,
- e.cJzmc,
- CASE c.iJobStatus
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- d.czgxm,
- '' AS cResultNote
- FROM (SELECT
- a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CONCAT(
- IF(c.CBCYEAR <> '', CONCAT(c.CBCYEAR, '年'), ''),
- IF(c.CBCmonth <> '', CONCAT(c.CBCmonth, '月'), ''),
- IF(c.CBC <> '', CONCAT(c.CBC, '版'), ''),
- IF(c.cYCyear <> '', CONCAT(c.cYCyear, '年'), ''),
- IF(c.cYCmonth <> '', CONCAT(c.cYCmonth, '月'), ''),
- IF(c.CYC <> '', CONCAT(c.CYC, '版'), '')
- ) AS cBanCi
- FROM
- qlOrderProduct AS a
- INNER JOIN qlAProduct AS b ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c ON c.ICYDID = a.ID_Mcyd AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d ON d.iywdwid = c.IYWDWID
- WHERE
- (c.iCommited = 1) AND (c.ICYDSTATE <> -1)) b
- INNER JOIN qcDetectionMain c
- ON c.iOrder_Num = b.Code_ProductOrder
- INNER JOIN dzZG d
- ON c.iID_Roals = d.id
- INNER JOIN MKerJzmb e
- ON e.ID = c.cBoard
- UNION ALL
- SELECT b.ID,
- g.ID AS mainid,
- 'RQBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- h.cBillCode AS iDetectionNum,
- '入库检验' AS iDetectionType,
- h.dCheckDate AS dFirstTime,
- '' AS cTeams,
- '' AS cProcess,
- '' AS cJzmc,
- CASE g.iCheckResult
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- h.cCheckMan,
- g.cResultNote
- FROM (SELECT
- a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CONCAT(
- IF(c.CBCYEAR <> '', CONCAT(c.CBCYEAR, '年'), ''),
- IF(c.CBCmonth <> '', CONCAT(c.CBCmonth, '月'), ''),
- IF(c.CBC <> '', CONCAT(c.CBC, '版'), ''),
- IF(c.cYCyear <> '', CONCAT(c.cYCyear, '年'), ''),
- IF(c.cYCmonth <> '', CONCAT(c.cYCmonth, '月'), ''),
- IF(c.CYC <> '', CONCAT(c.CYC, '版'), '')
- ) AS cBanCi
- FROM
- qlOrderProduct AS a
- INNER JOIN qlAProduct AS b ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c ON c.ICYDID = a.ID_Mcyd AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d ON d.iywdwid = c.IYWDWID
- WHERE
- (c.iCommited = 1) AND (c.ICYDSTATE <> -1)) b
- INNER JOIN mtMaterialQualityCheckDetail g
- ON g.ID_scProduct = b.ID
- INNER JOIN mtMaterialQualityCheck h
- ON h.ID = g.ID_Main
- WHERE h.iStatus > 0
- ) AS t
- WHERE 1 = 1
- AND t.iDetectionType ='巡检单'
- )JY
- ON zd.订单号 = JY.订单号 and
- zd.生产机台 =JY.cJzmc
- WHERE
- jy.检验时间 is not null
-
- ORDER BY zd.订单号 ,jy.检验时间 desc";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- // 当日重点产品机台检验情况->接口
- public function drzdcpjtjyqk() {
- $redis = redis();
- $drzdcpjtjyqk_data = json_decode($redis->get(md5('drzdcpjtjyqk_redis')), true);
- // $drzdcpjtjyqk_data = array_filter($drzdcpjtjyqk_datas, function($item) {
- // // 获取当前日期
- // $current_date = date('Y-m-d');
- // // 从检验时间中提取日期部分
- // $inspection_date = substr($item['检验时间'], 0, 10);
- // // 比较日期是否相等
- // return $inspection_date === $current_date;
- // });
- $data = ['status' => 0, 'msg' => '', 'data' => ['columns' => [
- ['name' => '订单号', 'id' => 'ddh', 'width' => '12', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '印件名称', 'id' => 'yjmc', 'width' => '34', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '生产机台', 'id' => 'scjt', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验工序', 'id' => 'yjgx', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验类型', 'id' => 'jylx', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验结果', 'id' => 'jyjg', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验时间', 'id' => 'jysj', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验人', 'id' => 'jyr', 'width' => '9', 'autoWrap' => "true", 'textAlign' => 'left']
- ], 'rows' => []]];
- if (is_array($drzdcpjtjyqk_data) && !empty($drzdcpjtjyqk_data)) {
- foreach ($drzdcpjtjyqk_data as $v) {
- $data['data']['rows'][] = [
- 'ddh' => $v['订单号'],
- 'yjmc' => $v['印件名称'],
- 'scjt' => $v['生产机台'],
- 'yjgx' => $v['检验工序'],
- 'jylx' => $v['检验类型'],
- 'jyjg' => $v['检验结果'],
- 'jysj' => $v['检验时间'],
- 'jyr' => $v['检验人']
- ];
- }
- } else {
- $data['data']['rows'][] = ['ddh' => '', 'yjmc' => '', 'scjt' => '', 'yjgx' => '', 'jylx' => '', 'jyjg' => '', 'jysj' => '', 'jyr' => ''];
- }
- return json($data);
- }
- //无线胶订线近日重点产品检验情况->缓存
- public function jd_zdcpjy_redis(){
- $redis=redis();
- $redis_key = md5('jd_zdcpjy_redis');
- $sql = "SELECT zd.订单号,
- zd.印件名称,
- zd.生产机台,
- jy.检验工序,
- jy.检验类型,
- jy.检验结果,
- DATE_FORMAT(jy.检验时间, '%Y-%m-%d %H:%i') AS 检验时间,
- jy.检验人
- FROM (SELECT DISTINCT Dev.cName 生产机台,
- job.cProductCode 订单号,
- job.cProductName 印件名称,
- dd.czlyq 质量等级,
- dd.CZWKB 开本,
- dd.ncs 印数,
- dd.CYWDWMC 业务单位,
- DATE_FORMAT(NOW(), '%Y-%m-%d') AS 生产日期
- FROM scMachineJob Job
- LEFT JOIN mcyd dd
- ON dd.ccydh = job.cProductCode
- LEFT JOIN (SELECT
- t.iType,
- t.ID,
- t.cCode,
- t.cName,
- t.iGzzxId,
- t.ID_BM,
- t.cbmbh,
- t.cbmmc,
- t.cType_Sys,
- t.iStop,
- t.cType_Dev,
- t.cShortName,
- t.iTypeWage,
- t.iOverProductType
- FROM (
- SELECT
- 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- MKernel
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT
- 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- dzyssb
- INNER JOIN MKernel ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT
- 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM
- MKerJzmb
- INNER JOIN MKernel ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT
- 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- dzywdw
- WHERE
- bwjg = 1
- UNION
- SELECT
- 3 AS iType,
- -1,
- '',
- '外厂资源',
- -1,
- -1 AS ID_BM,
- '',
- '',
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- ) AS t
- WHERE
- (t.iStop = 0)) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- WHERE Job.iStatus IN ( 0, 1, 2, 10, 20 )
- AND Job.iJobType IN ( 0, 4 )
- AND Job.iType_Res = 0
- AND dd.cyjmc LIKE '%求是%'
- OR ( Job.iStatus IN ( 0, 1, 2, 10, 20 )
- AND Job.iJobType IN ( 0, 4 )
- AND Job.iType_Res = 0
- AND ( dd.cyjlx <> '杂志' ) )
- AND ( Dev.cName <> '塑封机01号'
- AND Dev.cName <> '塑封机02号' )
- AND job.dPlanStart > DATE_FORMAT(NOW(), '%Y-%m-%d')
- AND job.dPlanStart < DATE_FORMAT(NOW() + INTERVAL 2 DAY, '%Y-%m-%d'))zd
- LEFT JOIN (SELECT t.productcode 订单号,
- t.cName 印件名称,
- t.iDetectionType 检验类型,
- t.dFirstTime 检验时间,
- t.cProcess 检验工序,
- t.status 检验结果,
- t.czgxm 检验人,
- t.cJzmc
- FROM (SELECT b.ID,
- c.ID AS mainid,
- 'XJBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- c.iDetectionNum,
- CASE c.iDetectionType
- WHEN 0 THEN '首检单'
- WHEN 1 THEN '巡检单'
- WHEN 2 THEN '自检单'
- END AS iDetectionType,
- c.dFirstTime,
- c.cTeams,
- c.cProcess,
- e.cJzmc,
- CASE c.iJobStatus
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- d.czgxm,
- '' AS cResultNote
- FROM (SELECT
- a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CONCAT(
- IF(c.CBCYEAR <> '', CONCAT(c.CBCYEAR, '年'), ''),
- IF(c.CBCmonth <> '', CONCAT(c.CBCmonth, '月'), ''),
- IF(c.CBC <> '', CONCAT(c.CBC, '版'), ''),
- IF(c.cYCyear <> '', CONCAT(c.cYCyear, '年'), ''),
- IF(c.cYCmonth <> '', CONCAT(c.cYCmonth, '月'), ''),
- IF(c.CYC <> '', CONCAT(c.CYC, '版'), '')
- ) AS cBanCi
- FROM
- qlOrderProduct AS a
- INNER JOIN qlAProduct AS b ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c ON c.ICYDID = a.ID_Mcyd AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d ON d.iywdwid = c.IYWDWID
- WHERE
- (c.iCommited = 1) AND (c.ICYDSTATE <> -1)) b
- INNER JOIN qcDetectionMain c
- ON c.iOrder_Num = b.Code_ProductOrder
- INNER JOIN dzZG d
- ON c.iID_Roals = d.id
- INNER JOIN MKerJzmb e
- ON e.ID = c.cBoard
- UNION ALL
- SELECT b.ID,
- g.ID AS mainid,
- 'RQBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- h.cBillCode AS iDetectionNum,
- '入库检验' AS iDetectionType,
- h.dCheckDate AS dFirstTime,
- '' AS cTeams,
- '' AS cProcess,
- '' AS cJzmc,
- CASE g.iCheckResult
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- h.cCheckMan,
- g.cResultNote
- FROM (SELECT
- a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CONCAT(
- IF(c.CBCYEAR <> '', CONCAT(c.CBCYEAR, '年'), ''),
- IF(c.CBCmonth <> '', CONCAT(c.CBCmonth, '月'), ''),
- IF(c.CBC <> '', CONCAT(c.CBC, '版'), ''),
- IF(c.cYCyear <> '', CONCAT(c.cYCyear, '年'), ''),
- IF(c.cYCmonth <> '', CONCAT(c.cYCmonth, '月'), ''),
- IF(c.CYC <> '', CONCAT(c.CYC, '版'), '')
- ) AS cBanCi
- FROM
- qlOrderProduct AS a
- INNER JOIN qlAProduct AS b ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c ON c.ICYDID = a.ID_Mcyd AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d ON d.iywdwid = c.IYWDWID
- WHERE
- (c.iCommited = 1) AND (c.ICYDSTATE <> -1)) b
- INNER JOIN mtMaterialQualityCheckDetail g
- ON g.ID_scProduct = b.ID
- INNER JOIN mtMaterialQualityCheck h
- ON h.ID = g.ID_Main
- WHERE h.iStatus > 0
- ) AS t
- WHERE 1 = 1
- -- AND t.iDetectionType ='巡检单'
- )JY
- ON zd.订单号 = JY.订单号 and
- zd.生产机台 =JY.cJzmc
- WHERE
- jy.检验时间 is not null
- and zd.生产机台 IN('胶订潮流1号', '胶订潮流2号', '胶订精密达1号', '胶订精密达2号', '胶订精密达3号')
- ORDER BY zd.订单号 ,jy.检验时间 desc ";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //无线胶订线近日重点产品检验情况->接口
- public function jd_zdcpjy(){
- $redis = redis();
- $drzdcpjtjyqk_datas = json_decode($redis->get(md5('jd_zdcpjy_redis')), true);
- // $drzdcpjtjyqk_data = array_filter($drzdcpjtjyqk_datas, function($item) {
- // // 获取当前日期
- // $current_date = date('Y-m-d');
- // // 获取三天前的日期
- // $three_days_ago = date('Y-m-d');
- // //$three_days_ago = date('Y-m-d', strtotime('-1 days'));
- // // 从检验时间中提取日期部分
- // $inspection_date = substr($item['检验时间'], 0, 10);
- // // 比较日期是否在近三天内
- // return $inspection_date >= $three_days_ago && $inspection_date <= $current_date;
- // });
- //时间排序【倒序排序】
- // usort($drzdcpjtjyqk_data, function($a, $b) {
- // return strcmp($b['检验时间'], $a['检验时间']);
- // });
- //接口显示字段
- $data = ['status' => 0, 'msg' => '', 'data' => ['columns' => [
- ['name' => '订单号', 'id' => 'ddh', 'width' => '12', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '印件名称', 'id' => 'yjmc', 'width' => '34', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '生产机台', 'id' => 'scjt', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验工序', 'id' => 'yjgx', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验类型', 'id' => 'jylx', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验结果', 'id' => 'jyjg', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验时间', 'id' => 'jysj', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验人', 'id' => 'jyr', 'width' => '9', 'autoWrap' => "true", 'textAlign' => 'left']
- ], 'rows' => []]];
- //取数据
- if (is_array($drzdcpjtjyqk_datas) && !empty($drzdcpjtjyqk_datas)) {
- foreach ($drzdcpjtjyqk_datas as $v) {
- $data['data']['rows'][] = [
- 'ddh' => $v['订单号'],
- 'yjmc' => $v['印件名称'],
- 'scjt' => $v['生产机台'],
- 'yjgx' => $v['检验工序'],
- 'jylx' => $v['检验类型'],
- 'jyjg' => $v['检验结果'],
- 'jysj' => $v['检验时间'],
- 'jyr' => $v['检验人']
- ];
- }
- } else {
- //数据为空赋值为空
- $data['data']['rows'][] = ['ddh' => '', 'yjmc' => '', 'scjt' => '', 'yjgx' => '', 'jylx' => '', 'jyjg' => '', 'jysj' => '', 'jyr' => ''];
- }
- return json($data);
- }
- //本周常情况反馈->缓存
- public function ycfk_redis(){
- $redis=redis();
- $redis_key = md5('ycfk_redis');
- $sql = "SELECT CASE iState
- WHEN 0 THEN '未提交'
- WHEN 10 THEN '未确认'
- WHEN 20 THEN '未结案'
- WHEN 30 THEN '已结案'
- END AS 状态,
- EFB.cProduceOrder AS 订单号,
- EFB.cProductName AS 印件名称,
- EFB.cFBPerson AS 反馈人,
- DATE_FORMAT(EFB.dFBDate, '%Y-%m-%d %H:%i') AS 反馈时间,
- EFB.cWorkStation AS 工作机台,
- IFNULL(D.cExceptionItem, '') AS 异常项目,
- COALESCE(D.cDescription, D.cExceptionItem, '') AS 异常描述
- FROM ecExceptionFeedBack EFB
- LEFT JOIN ecExceptionDetail D
- ON EFB.iID = D.iMainID
- LEFT JOIN ecExceptionResponsibility R
- ON D.iID = R.iExDetailID
- WHERE DATE_FORMAT(EFB.dFBDate, '%Y-%m-%d') BETWEEN DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY), '%Y-%m-%d') AND DATE_FORMAT(CURRENT_DATE, '%Y-%m-%d')
- ORDER BY EFB.dFBDate DESC;";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- //本周常情况反馈->接口
- public function ycfk() {
- $redis = redis();
- $list = json_decode($redis->get(md5('ycfk_redis')), true);
- $result['columns']=[
- ['name'=>'状态','id'=>'zt','width'=>'8','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'订单号','id'=>'ddh','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'印件名称','id'=>'yjmc','width'=>'26','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'反馈人','id'=>'fkr','width'=>'10','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'反馈时间','id'=>'fksj','width'=>'13','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'工作机台','id'=>'hzjt','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'异常项目','id'=>'fkxm','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'异常描述','id'=>'ycms','width'=>'14','autoWrap'=>"true",'textAlign'=>'left']
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['zt'] = $v['状态'];
- $result['rows'][$k]['ddh'] = $v['订单号'];
- $result['rows'][$k]['yjmc'] = $v['印件名称'];
- $result['rows'][$k]['fkr'] = $v['反馈人'];
- $result['rows'][$k]['fksj'] = $v['反馈时间'];
- $result['rows'][$k]['hzjt'] = $v['工作机台'];
- $result['rows'][$k]['fkxm'] = $v['异常项目'];
- $result['rows'][$k]['ycms'] = $v['异常描述'];
- }
- // 如果过滤后的列表为空,则添加空数据行
- // 注意:这里似乎有一个未定义的变量$filtered_list,你可能需要确保它在使用前已被正确定义和过滤
- if(empty($filtered_list)){
- $result['rows'][] = ['zt'=>'', 'ddh'=>'', 'yjmc'=>'','fkr'=>'', 'fksj'=>'', 'hzjt'=>'', 'fkxm'=>'', 'ycms'=>''];
- }
- $res['status'] = 0;
- $res['msg'] = '';
- $res['data'] = $result;
- return json($res);
- }
- //当日生产的印件巡检情况->缓存
- public function scyjxjqk_redis(){
- $redis=redis();
- $redis_key = md5('scyjxjqk_redis');
- $sql = "SELECT zd.订单号,
- zd.印件名称,
- zd.生产机台,
- jy.检验工序,
- jy.检验类型,
- jy.检验结果,
- DATE_FORMAT(jy.检验时间, '%Y-%m-%d %H:%i') AS 检验时间,
- jy.检验人
- FROM (SELECT DISTINCT Dev.cName 生产机台,
- job.cProductCode 订单号,
- job.cProductName 印件名称,
- dd.czlyq 质量等级,
- dd.CZWKB 开本,
- dd.ncs 印数,
- dd.CYWDWMC 业务单位,
- DATE_FORMAT(NOW(), '%Y-%m-%d') AS 生产日期
- FROM scMachineJob Job
- LEFT JOIN mcyd dd
- ON dd.ccydh = job.cProductCode
- LEFT JOIN (SELECT
- t.iType,
- t.ID,
- t.cCode,
- t.cName,
- t.iGzzxId,
- t.ID_BM,
- t.cbmbh,
- t.cbmmc,
- t.cType_Sys,
- t.iStop,
- t.cType_Dev,
- t.cShortName,
- t.iTypeWage,
- t.iOverProductType
- FROM (
- SELECT
- 0 AS iType,
- MKernel.ID,
- MKernel.cBh AS cCode,
- MKernel.cGzzxmc AS cName,
- MKernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- Mkernel.cGzzxlx AS cType_Sys,
- MKernel.iStopUse AS iStop,
- MKernel.cGzzxlx AS cType_Dev,
- MKernel.cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- MKernel
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT
- 1 AS iType,
- dzyssb.ID,
- dzyssb.csbbh AS cCode,
- dzyssb.csbmc AS cName,
- Mkernel.ID AS iGzzxId,
- dzBM.id AS ID_BM,
- dzBM.cbmbh,
- dzBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- dzyssb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- dzyssb.cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- dzyssb
- INNER JOIN MKernel ON MKernel.ID = dzyssb.ID_Center
- INNER JOIN dzBM ON dzBM.cbmbh = MKernel.cBmbh
- UNION
- SELECT
- 2 AS iType,
- MKerJzmb.ID,
- MKerJzmb.cJzbh AS cCode,
- MKerJzmb.cJzmc AS cName,
- MKerJzmb.iGzzxId,
- dzBM.id AS ID_BM,
- DZBM.cbmbh,
- DZBM.cbmmc,
- MKernel.cGzzxlx AS cType_Sys,
- MKerJzmb.iStopUse AS iStop,
- dzyssb.csblb AS cType_Dev,
- MKerJzmb.cShortName,
- MKerJzmb.iType AS iTypeWage,
- MKerJzmb.iOverProductType
- FROM
- MKerJzmb
- INNER JOIN MKernel ON MKernel.ID = MKerJzmb.iGzzxId
- INNER JOIN DZBM ON DZBM.cbmbh = MKernel.cbmbh
- INNER JOIN dzyssb ON dzyssb.id = MKerJzmb.ijzlxid
- UNION
- SELECT
- 3 AS iType,
- iywdwid AS ID,
- cywdwbh AS cCode,
- cdwmc AS cName,
- iywdwid AS iGzzxId,
- iywdwid AS ID_BM,
- cywdwbh AS cbmbh,
- cdwmc AS cbmmc,
- '' AS cType_Sys,
- CASE WHEN DZYWDW.nstate < 0 THEN 1 ELSE 0 END AS iStop,
- '' AS cType_Dev,
- DZYWDW.cjc AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- FROM
- dzywdw
- WHERE
- bwjg = 1
- UNION
- SELECT
- 3 AS iType,
- -1,
- '',
- '外厂资源',
- -1,
- -1 AS ID_BM,
- '',
- '',
- '' AS cType_Sys,
- 0 AS iStop,
- '' AS cType_Dev,
- '外厂' AS cShortName,
- 0 AS iTypeWage,
- 0 AS iOverProductType
- ) AS t
- WHERE
- (t.iStop = 0)) Dev
- ON Dev.iType <> 3
- AND Job.id_Machine = Dev.Id
- AND Job.iType_Res = 0
- WHERE Job.iStatus IN ( 0, 1, 2, 10, 20 )
- AND Job.iJobType IN ( 0, 4 )
- AND Job.iType_Res = 0
- AND dd.cyjmc LIKE '%求是%'
- OR ( Job.iStatus IN ( 0, 1, 2, 10, 20 )
- AND Job.iJobType IN ( 0, 4 )
- AND Job.iType_Res = 0
- AND ( dd.Czlyq <> '重点产品'
- AND dd.cyjlx <> '杂志' ) )
- AND ( Dev.cName <> '塑封机01号'
- AND Dev.cName <> '塑封机02号' )
- AND job.dPlanStart > DATE_FORMAT(NOW(), '%Y-%m-%d')
- AND job.dPlanStart < DATE_FORMAT(NOW() + INTERVAL 2 DAY, '%Y-%m-%d'))zd
- LEFT JOIN (SELECT t.productcode 订单号,
- t.cName 印件名称,
- t.iDetectionType 检验类型,
- t.dFirstTime 检验时间,
- t.cProcess 检验工序,
- t.status 检验结果,
- t.czgxm 检验人,
- t.cJzmc
- FROM (SELECT b.ID,
- c.ID AS mainid,
- 'XJBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- c.iDetectionNum,
- CASE c.iDetectionType
- WHEN 0 THEN '首检单'
- WHEN 1 THEN '巡检单'
- WHEN 2 THEN '自检单'
- END AS iDetectionType,
- c.dFirstTime,
- c.cTeams,
- c.cProcess,
- e.cJzmc,
- CASE c.iJobStatus
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- d.czgxm,
- '' AS cResultNote
- FROM (SELECT
- a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CONCAT(
- IF(c.CBCYEAR <> '', CONCAT(c.CBCYEAR, '年'), ''),
- IF(c.CBCmonth <> '', CONCAT(c.CBCmonth, '月'), ''),
- IF(c.CBC <> '', CONCAT(c.CBC, '版'), ''),
- IF(c.cYCyear <> '', CONCAT(c.cYCyear, '年'), ''),
- IF(c.cYCmonth <> '', CONCAT(c.cYCmonth, '月'), ''),
- IF(c.CYC <> '', CONCAT(c.CYC, '版'), '')
- ) AS cBanCi
- FROM
- qlOrderProduct AS a
- INNER JOIN qlAProduct AS b ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c ON c.ICYDID = a.ID_Mcyd AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d ON d.iywdwid = c.IYWDWID
- WHERE
- (c.iCommited = 1) AND (c.ICYDSTATE <> -1)) b
- INNER JOIN qcDetectionMain c
- ON c.iOrder_Num = b.Code_ProductOrder
- INNER JOIN dzZG d
- ON c.iID_Roals = d.id
- INNER JOIN MKerJzmb e
- ON e.ID = c.cBoard
- UNION ALL
- SELECT b.ID,
- g.ID AS mainid,
- 'RQBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- h.cBillCode AS iDetectionNum,
- '入库检验' AS iDetectionType,
- h.dCheckDate AS dFirstTime,
- '' AS cTeams,
- '' AS cProcess,
- '' AS cJzmc,
- CASE g.iCheckResult
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- h.cCheckMan,
- g.cResultNote
- FROM (SELECT
- a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CONCAT(
- IF(c.CBCYEAR <> '', CONCAT(c.CBCYEAR, '年'), ''),
- IF(c.CBCmonth <> '', CONCAT(c.CBCmonth, '月'), ''),
- IF(c.CBC <> '', CONCAT(c.CBC, '版'), ''),
- IF(c.cYCyear <> '', CONCAT(c.cYCyear, '年'), ''),
- IF(c.cYCmonth <> '', CONCAT(c.cYCmonth, '月'), ''),
- IF(c.CYC <> '', CONCAT(c.CYC, '版'), '')
- ) AS cBanCi
- FROM
- qlOrderProduct AS a
- INNER JOIN qlAProduct AS b ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c ON c.ICYDID = a.ID_Mcyd AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d ON d.iywdwid = c.IYWDWID
- WHERE
- (c.iCommited = 1) AND (c.ICYDSTATE <> -1)) b
- INNER JOIN mtMaterialQualityCheckDetail g
- ON g.ID_scProduct = b.ID
- INNER JOIN mtMaterialQualityCheck h
- ON h.ID = g.ID_Main
- WHERE h.iStatus > 0
- ) AS t
- WHERE 1 = 1
- AND t.iDetectionType ='巡检单'
- )JY
- ON zd.订单号 = JY.订单号 and
- zd.生产机台 =JY.cJzmc
- WHERE
- jy.检验时间 is not null
-
- ORDER BY zd.订单号,jy.检验时间 desc";
- $res = Db::query($sql);
- if($res){
- $redis->set($redis_key, json_encode($res));
- echo date("Y-m-d H:i:s").'存进去了';
- return $res;
- }
- }
- // 当日生产的印件巡检情况->接口
- public function scyjxjqk() {
- $redis = redis();
- $list = json_decode($redis->get(md5('scyjxjqk_redis')), true);
- // $list = array_filter($lists, function($item) {
- // // 获取当前日期
- // $current_date = date('Y-m-d');
- // // 从检验时间中提取日期部分
- // $inspection_date = substr($item['检验时间'], 0, 10);
- // // 比较日期是否相等
- // return $inspection_date === $current_date;
- // });
- $data = ['status' => 0, 'msg' => '', 'data' => ['columns' => [
- ['name' => '订单号', 'id' => 'ddh', 'width' => '12', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '印件名称', 'id' => 'yjmc', 'width' => '34', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '生产机台', 'id' => 'scjt', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验工序', 'id' => 'yjgx', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验类型', 'id' => 'jylx', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验结果', 'id' => 'jyjg', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验时间', 'id' => 'jysj', 'width' => '11', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '检验人', 'id' => 'jyr', 'width' => '9', 'autoWrap' => "true", 'textAlign' => 'left']
- ], 'rows' => []]];
- if (is_array($list) && !empty($list)) {
- foreach ($list as $v) {
- $data['data']['rows'][] = [
- 'ddh' => $v['订单号'],
- 'yjmc'=> $v['印件名称'],
- 'scjt' => $v['生产机台'],
- 'jygx' => $v['检验工序'],
- 'jylx' => $v['检验类型'],
- 'jyjg' => $v['检验结果'],
- 'jysj' => $v['检验时间'],
- 'jyr'=> $v['检验人']
- ];
- }
- } else {
- $data['data']['rows'][] = ['ddh'=>'', 'yjmc'=>'', 'scjt'=>'','jygx'=>'', 'jylx'=>'', 'jyjg'=>'', 'jysj'=>'', 'jyr'=>''];
- }
- return json($data);
- }
- //客户投诉 (质量问题(按客户))---》暂时用不到
- public function khts(){
- $redis=redis();
- $redis_key = md5('khzl_redis');
- $redis_data = $redis->get($redis_key);
- $result=json_decode($redis_data,true);
- $result=$result['data']['rows'];
- $result=array_splice($result,0,6);
- // halt($result);
- foreach($result as $k=>$v){
- // $list[$k]['name']=$v['khdw'];
- // 截取前十一个字符
- $list[$k]['name'] = mb_substr(str_replace('有限公司', '', $v['khdw']), 0, 9).'...';
- $list[$k]['value']=$v['tscs'];
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$list;
- // halt($res);
- return json($res);
- }
- //责任部门 (质量问题(按部门))---》暂时用不到
- public function zrbm(){
- $redis=redis();
- $redis_key = md5('bmzl_redis');
- $redis_data = $redis->get($redis_key);
- $result=json_decode($redis_data,true);
- $result=$result['data']['rows'];
- $result = array_splice($result, 0, 6);
- foreach($result as $k => $v){
- $list[$k]['name'] = $v['bm'];
- $list[$k]['value'] = $v['tscs'];
- }
- $res['status'] = 0;
- $res['msg'] = '';
- $res['data'] = $list;
- return json($res);
- }
- //质量问题->缓存---》暂时用不到
- public function zlwt_redis(){
- $redis=redis();
- $redis_key = md5('zlwt_redis');
- // 获取当前日期时间
- $endDate = date("Y-m-d H:i:s");
- // 获取一年前的日期时间
- $startDate = date("Y-m-d H:i:s", strtotime("-1 year"));
- $res = Db::query("SELECT D1.cdwmc,resp1.cReasonCName
- FROM ecComplainFeedback B
- LEFT JOIN DZYWDW D1
- ON D1.iywdwid = B.iClientID
- LEFT JOIN MCYD M
- ON M.CCYDH = B.cOrderBillCode
- INNER JOIN qlOrderProduct p
- ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,
- Sum(a.iAmountOut) iAmount_Out
- FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c
- ON c.ID_qlOrderProduct = p.ID
- LEFT JOIN ecComplainContent DD
- ON DD.iComplainFBID = B.iID
- LEFT JOIN tbConfig E
- ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T
- ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,
- PP.strSubName AS cReasonPName,
- CC2.strSubName AS cReasonCName,
- CR.cRespPerson,
- CR.cRespDept,
- CR.cRespTech,
- CR.cRespCorp,
- CR.nMoney
- FROM ecComplainReasonAnalysis R
- LEFT JOIN tbConfig CC2
- ON CC2.iNoConfig = R.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R.iReasonID_P
- LEFT JOIN ecComplainResponsibility CR
- ON CR.iComplainRAID = R.iID) resp1
- ON resp1.iComplainFBID = B.iID
- WHERE b.dFeedbackDate >= '{$startDate}'
- AND b.dFeedbackDate <= '{$endDate}'");
- if(empty($res)) {
- $res = [];
- $res['status'] = 0;
- $res['msg'] = '';
- $res['data'] = [
- ['name' => '色差(与原稿偏差)', 'value' => 0],
- ['name' => '精装质量问题', 'value' => 0],
- ['name' => '工艺缺项', 'value' => 0],
- ['name' => '双影', 'value' => 0],
- ['name' => '烫金不实', 'value' => 0],
- ['name' => '色差(批量不统一)', 'value' => 0],
- ];
- $redis->set($redis_key, json_encode($res));
- return json($res);
- }else{
- $list = [];
- for ($i = 0; $i < count($res); $i++) {
- $list[$res[$i]['cReasonCName']][] = $res[$i]['cdwmc'];
- }
- array_multisort($list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($list as $k => $v) {
- $result[$i]['质量问题'] = $k;
- $result[$i]['投诉次数'] = count($v);
- $result[$i]['合并原因'] = '';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- $result[$i]['合并原因'] .= $a . $b . '/';
- }
- $result[$i]['合并原因'] = substr($result[$i]['合并原因'], 0, -1);
- $i++;
- }
- $result=array_splice($result,0,6);
- $list=[];
- foreach($result as $k=>$v){
- $list[$k]['name']=$v['质量问题'];
- $list[$k]['value']=$v['投诉次数'];
- }
- $res=[];
- $res['status']=0;
- $res['msg']='';
- $res['data']=$list;
- $redis->set($redis_key, json_encode($res));
- return json($res);
- }
- }
- //质量问题->接口---》暂时用不到
- public function zlwt(){
- $redis=redis();
- $redis_key = md5('zlwt_redis');
- $redis_data = $redis->get($redis_key);
- return $redis_data;
- }
- //质检记录一览表->缓存---》暂时用不到
- public function zjjl_redis(){
- $redis=redis();
- $redis_key = md5('zjjl_redis');
- $list=Db::query("SELECT t.productcode 订单号,
- t.cName 印件名称,
- t.iDetectionType 检验类型,
- t.dFirstTime 检验时间,
- t.cProcess 检验工序,
- t.status 检验结果,
- t.czgxm 检验人
- FROM (SELECT b.ID,
- c.ID AS mainid,
- 'XJBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- c.iDetectionNum,
- CASE c.iDetectionType
- WHEN 0 THEN '首检单'
- WHEN 1 THEN '巡检单'
- WHEN 2 THEN '自检单'
- END AS iDetectionType,
- c.dFirstTime,
- c.cTeams,
- c.cProcess,
- e.cJzmc,
- CASE c.iJobStatus
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- d.czgxm,
- '' AS cResultNote
- FROM (SELECT a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CASE
- WHEN c.CBCYEAR <> '' THEN c.CBCYEAR + '年'
- ELSE ''
- END
- + CASE
- WHEN c.CBCmonth <> '' THEN c.CBCmonth + '月'
- ELSE ''
- END
- + CASE
- WHEN c.CBC <> '' THEN c.CBC + '版'
- ELSE ''
- END
- + CASE
- WHEN c.cYCyear <> '' THEN c.cYCyear + '年'
- ELSE ''
- END
- + CASE
- WHEN c.cYCmonth <> '' THEN c.cYCmonth + '月'
- ELSE ''
- END
- + CASE
- WHEN c.CYC <> '' THEN c.CYC + '版'
- ELSE ''
- END AS cBanCi
- FROM qlOrderProduct AS a
- INNER JOIN qlAProduct AS b
- ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c
- ON c.ICYDID = a.ID_Mcyd
- AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d
- ON d.iywdwid = c.IYWDWID
- WHERE ( c.iCommited = 1 )
- AND ( c.ICYDSTATE <> -1 )
- ) as b
- INNER JOIN qcDetectionMain c
- ON c.iOrder_Num = b.Code_ProductOrder
- INNER JOIN dzZG d
- ON c.iID_Roals = d.id
- INNER JOIN MKerJzmb e
- ON e.ID = c.cBoard
- UNION ALL
- SELECT b.ID,
- g.ID AS mainid,
- 'RQBB' AS keyword,
- b.Code_ProductOrder AS productcode,
- b.Code_AProduct AS aproductcode,
- b.Name_AProduct AS cName,
- b.iVers,
- '' AS salacode,
- h.cBillCode AS iDetectionNum,
- '入库检验' AS iDetectionType,
- h.dCheckDate AS dFirstTime,
- '' AS cTeams,
- '' AS cProcess,
- '' AS cJzmc,
- CASE g.iCheckResult
- WHEN 0 THEN '合格'
- WHEN 1 THEN '不合格'
- WHEN 2 THEN '让步接收'
- END AS status,
- h.cCheckMan,
- g.cResultNote
- FROM (SELECT a.ID,
- a.cCode AS Code_ProductOrder,
- b.cCode AS Code_AProduct,
- b.cName AS Name_AProduct,
- b.ID AS ID_Request,
- a.ID_Mcyd,
- 1 AS iVers,
- b.cSize,
- b.cUnit,
- a.iAmount,
- a.iAmount_In,
- 0 AS nAmount_OB,
- a.iAmount AS nAmount_W,
- a.iState,
- a.nUnitPlanWeight,
- a.nActualWeight,
- '' AS cCustomerCode,
- '' AS cCustomerName,
- d.cywdwbh,
- d.cdwmc,
- b.iTag_Group,
- 0 AS iType,
- 1 AS iNodePage,
- 0 AS iType_P,
- 1 AS iType_Origin,
- a.ID AS id_origin,
- c.DZDRQ AS dDate,
- c.Dwcrq AS dInFinishDate,
- c.CYWYXM,
- c.DJFRQ,
- c.CDF,
- CASE
- WHEN c.CBCYEAR <> '' THEN c.CBCYEAR + '年'
- ELSE ''
- END
- + CASE
- WHEN c.CBCmonth <> '' THEN c.CBCmonth + '月'
- ELSE ''
- END
- + CASE
- WHEN c.CBC <> '' THEN c.CBC + '版'
- ELSE ''
- END
- + CASE
- WHEN c.cYCyear <> '' THEN c.cYCyear + '年'
- ELSE ''
- END
- + CASE
- WHEN c.cYCmonth <> '' THEN c.cYCmonth + '月'
- ELSE ''
- END
- + CASE
- WHEN c.CYC <> '' THEN c.CYC + '版'
- ELSE ''
- END AS cBanCi
- FROM qlOrderProduct AS a
- INNER JOIN qlAProduct AS b
- ON b.ID = a.ID_qlAProduct
- INNER JOIN MCYD AS c
- ON c.ICYDID = a.ID_Mcyd
- AND c.CCYDH = a.cCode
- LEFT OUTER JOIN DZYWDW AS d
- ON d.iywdwid = c.IYWDWID
- WHERE ( c.iCommited = 1 )
- AND ( c.ICYDSTATE <> -1 )
- ) as b
- INNER JOIN mtMaterialQualityCheckDetail g
- ON g.ID_scProduct = b.ID
- INNER JOIN mtMaterialQualityCheck h
- ON h.ID = g.ID_Main
- WHERE h.iStatus > 0) AS t
- WHERE 1 = 1
- -- AND DATE_FORMAT(t.dFirstTime, '%Y-%m-%d')= '2023-11-12'
- ORDER BY t.dFirstTime DESC
- limit 8
- ");
- $redis->set($redis_key, json_encode($list));
- return $list;
- }
- //质检记录一览表->接口---》暂时用不到
- public function zjjl(){
- $redis=redis();
- // $redis_key = md5('zjjl_redis');
- // $redis_data = $redis->get($redis_key);
- $list = json_decode($redis->get(md5('zjjl_redis')), true);
- $result['columns']=[
- ['name'=>'订单号','id'=>'ddh','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'印件名称','id'=>'yjmc','width'=>'22','textAlign'=>'left'],
- ['name'=>'检验类型','id'=>'jylx','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'检验时间','id'=>'jysj','width'=>'20','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'检验工序','id'=>'jygx','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'检验结果','id'=>'jyjg','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'检验人','id'=>'jyr','width'=>'10','autoWrap'=>"true",'textAlign'=>'left']
- ];
- foreach($list as $k=>$v){
- $result['rows'][$k]['ddh']=$v['订单号'];
- $result['rows'][$k]['yjmc']=$v['印件名称'];
- $result['rows'][$k]['jylx']=$v['检验类型'];
- $result['rows'][$k]['jysj']=$v['检验时间'];
- $result['rows'][$k]['jygx']=$v['检验工序'];
- $result['rows'][$k]['jyjg']=$v['检验结果'];
- $result['rows'][$k]['jyr']=$v['检验人'];
- }
- if($list==[]){
- $result['rows'][0]['ddh']='';
- $result['rows'][0]['yjmc']='';
- $result['rows'][0]['jylx']='';
- $result['rows'][0]['jysj']='';
- $result['rows'][0]['jygx']='';
- $result['rows'][0]['jyjg']='';
- $result['rows'][0]['jyr']='';
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- return json($res);
- }
- //客户质量投诉一览表->缓存---》暂时用不到
- public function khzl_redis(){
- $redis=redis();
- $redis_key = md5('khzl_redis');
- // 获取当前日期时间
- $endDate = date("Y-m-d H:i:s");
- // 获取一年前的日期时间
- $startDate = date("Y-m-d H:i:s", strtotime("-1 year"));
- $r_list= Db::query("SELECT resp.cReasonCName,D.cdwmc FROM ecComplainFeedback B LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN MCYD M ON M.CCYDH = B.cOrderBillCode INNER JOIN qlOrderProduct p ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,Sum(a.iAmountOut) iAmount_Out FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c ON c.ID_qlOrderProduct = p.ID LEFT JOIN ecComplainContent DD
- ON DD.iComplainFBID = B.iID LEFT JOIN tbConfig E ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,
- PP.strSubName AS cReasonPName,
- CC2.strSubName AS cReasonCName,
- CR.cRespPerson,
- CR.cRespDept,
- CR.cRespTech,
- CR.cRespCorp,
- CR.nMoney
- FROM ecComplainReasonAnalysis R
- LEFT JOIN tbConfig CC2
- ON CC2.iNoConfig = R.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R.iReasonID_P
- LEFT JOIN ecComplainResponsibility CR
- ON CR.iComplainRAID = R.iID) resp
- ON resp.iComplainFBID = B.iID
- WHERE 1 = 1
- AND b.dFeedbackDate >= '{$startDate}'
- AND b.dFeedbackDate <= '{$endDate}'");
- if(empty($r_list)) {
- $res['status'] = 0;
- $res['msg'] = '没有找到数据';
- $res['data'] = [
- 'columns' => [
- ['name' => '客户单位', 'id' => 'khdw', 'width' => '36', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '投诉次数', 'id' => 'tscs', 'width' => '12', 'autoWrap' => "true", 'textAlign' => 'left'],
- ['name' => '质量问题', 'id' => 'zlwt', 'width' => '52', 'textAlign' => 'left']
- ],
- 'rows' => [
- ['khdw' => '中信出版集团股份有限公司', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '大星(上海)文化传媒有限公司(浙江文艺)', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '上海译文出版社有限公司', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '浙江人民美术出版社有限公司', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '浙江文艺出版社有限公司', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '浙江华硕国际贸易有限责任公司', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '浙江人民出版社有限公司', 'tscs' => '0', 'zlwt' => ''],
- ['khdw' => '上海古籍出版社有限公司', 'tscs' => '0', 'zlwt' => ''],
- ]
- ];
- $redis->set($redis_key, json_encode($res));
- return json($res);
- }else{
- $c_list = [];
- for ($i = 0; $i < count($r_list); $i++) {
- $c_list[$r_list[$i]['cdwmc']][] = $r_list[$i]['cReasonCName'];
- }
- array_multisort($c_list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($c_list as $k => $v) {
- $result[$i]['客户单位'] = $k;
- $result[$i]['投诉次数'] = count($v);
- $result[$i]['质量问题'] = '';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- $result[$i]['质量问题'] .= $a . $b . '/';
- }
- $result[$i]['质量问题'] = substr($result[$i]['质量问题'], 0, -1);
- $i++;
- }
- $result=array_splice($result,0,8);
- $list['columns']=[
- ['name'=>'客户单位','id'=>'khdw','width'=>'36','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'投诉次数','id'=>'tscs','width'=>'12','autoWrap'=>"true",'textAlign'=>'left'],
- ['name'=>'质量问题','id'=>'zlwt','width'=>'52','autoWrap'=>"true",'textAlign'=>'left']
- ];
- foreach($result as $k=>$v){
- $list['rows'][$k]['khdw']=$v['客户单位'];
- $list['rows'][$k]['tscs']=$v['投诉次数'];
- $list['rows'][$k]['zlwt']=$v['质量问题'];
- }
- $res['status']=0;
- $res['msg']='';
- $res['data']=$list;
- $redis->set($redis_key, json_encode($res));
- return json($res);
- }
- }
- //客户质量投诉一览表->接口---》暂时用不到
- public function khzl(){
- $redis=redis();
- $redis_key = md5('khzl_redis');
- $redis_data = $redis->get($redis_key);
- return $redis_data;
- }
- //质量问题一览表(按部门->缓存---》暂时用不到
- public function bmzl_redis(){
- $redis=redis();
- $redis_key = md5('bmzl_redis');
- // 获取当前日期时间
- $endDate = date("Y-m-d H:i:s");
- // 获取一年前的日期时间
- $startDate = date("Y-m-d H:i:s", strtotime("-1 year"));
- $res1=Db::query("SELECT CASE
- WHEN CR.cRespDept = '' THEN '外协单位'
- ELSE CR.cRespDept
- END AS 部门,
- Count(*) AS 投诉次数
- FROM ecComplainFeedback B
- LEFT JOIN DZYWDW D ON D.iywdwid = B.iClientID
- LEFT JOIN MCYD M ON M.CCYDH = B.cOrderBillCode
- INNER JOIN qlOrderProduct p ON M.ICYDID = p.ID_Mcyd
- LEFT JOIN (SELECT a.ID_qlOrderProduct,
- Sum(a.iAmountOut) iAmount_Out
- FROM SCYDYSQX a
- GROUP BY a.ID_qlOrderProduct) c
- ON c.ID_qlOrderProduct = p.ID
- LEFT JOIN ecComplainContent DD ON DD.iComplainFBID = B.iID
- LEFT JOIN tbConfig E ON E.iNoConfig = DD.iClassID_C
- LEFT JOIN tbConfig T ON T.iNoConfig = DD.iClassID_P
- LEFT JOIN (SELECT R.iComplainFBID,CR1.cRespDept
- FROM ecComplainReasonAnalysis R
- LEFT JOIN ecComplainResponsibility CR1 ON CR1.iComplainRAID = R.iID) CR
- ON B.iID = CR.iComplainFBID
- WHERE 1 = 1 AND b.dFeedbackDate >= '{$startDate}' AND b.dFeedbackDate <= '{$endDate}'
- GROUP BY CR.cRespDept ORDER BY 投诉次数 DESC,
- CR.cRespDept; ");
- foreach($res1 as $k=>$v){
- if($v['部门']=='全部'){
- unset($res1[$k]);
- }
- }
- foreach($res1 as $k=>$v){
- if($v['部门']===null){
- $res1[$k]['部门']='全部';
- }
- }
- $res = Db::query("SELECT CR2.cReasonPName,CR2.cRespDept
- FROM ecComplainFeedback B2
- LEFT JOIN (SELECT R2.iComplainFBID,
- CR1.cRespDept,
- CC.strSubName AS cReasonPName
- FROM ecComplainReasonAnalysis R2
- LEFT JOIN ecComplainResponsibility CR1
- ON CR1.iComplainRAID = R2.iID
- LEFT JOIN tbConfig CC
- ON CC.iNoConfig = R2.iReasonID_C
- LEFT JOIN tbConfig PP
- ON PP.iNoConfig = R2.iReasonID_P) CR2
- ON B2.iID = CR2.iComplainFBID
- WHERE b2.dFeedbackDate >= '{$startDate}'
- AND b2.dFeedbackDate <= '{$endDate}'");
- if(empty($res1) || empty($res)) {
- $res['status'] = 0;
- $res['msg'] = '没有找到数据';
- $res['data'] = [
- 'columns' => [
- ['name' => '部门', 'id' => 'bm', 'width' => '18', 'textAlign' => 'left'],
- ['name' => '投诉次数', 'id' => 'tscs', 'width' => '12', 'textAlign' => 'left'],
- ['name' => '合并原因', 'id' => 'hbyy', 'width' => '58', 'textAlign' => 'left']
- ],
- 'rows' => [
- ['bm' => '全部', 'tscs' => '0', 'hbyy' => ''],
- ['bm' => '平版印刷中心', 'tscs' => '0', 'hbyy' => ''],
- ['bm' => '精平装中心', 'tscs' => '0', 'hbyy' => ''],
- ['bm' => '轮转联动中心', 'tscs' => '0', 'hbyy' => ''],
- ['bm' => '外协单位', 'tscs' => '0', 'hbyy' => ''],
- ['bm' => '生产部', 'tscs' => '0', 'hbyy' => '']
- ]
- ];
- $redis->set($redis_key, json_encode($res));
- return json($res);
- }else{
- $list = [];
- for ($i = 0; $i < count($res); $i++) {
- if($res[$i]['cRespDept']===''){
- $res[$i]['cRespDept']='外协单位';
- }
- if($res[$i]['cRespDept']===null){
- $res[$i]['cRespDept']='全部';
- }
- $list[$res[$i]['cRespDept']][] = $res[$i]['cReasonPName'];
- }
- array_multisort($list, SORT_DESC);
- $result = [];
- $i = 0;
- foreach ($list as $k => $v) {
- // $result[$i]['部门'] = $k;
- // $result[$i]['投诉次数'] = count($v);
- // $result[$i]['合并原因'] = '';
- $result[$k]='';
- foreach ($v as $key => $value) {
- if ($value == null) {
- unset($v[$key]);
- }
- }
- foreach (array_count_values($v) as $a => $b) {
- // $result[$i]['合并原因'] .= $a . $b . '/';
- $result[$k] .= $a . $b . '/';
- }
- // $result[$i]['合并原因'] = substr($result[$i]['合并原因'], 0, -1);
- $result[$k] = substr($result[$k], 0, -1);
- $i++;
- }
- foreach($res1 as $k=>$v){
- if($v['部门']!==null)$res1[$k]['合并原因']=$result[$v['部门']];
- if($v['部门']=='全部'){
- $res1[$k]['投诉次数']=count($list['全部']);
- }
- }
- // halt($res1);
- $result=[];
- $result['columns']=[
- ['name'=>'部门','id'=>'bm','width'=>'18','textAlign'=>'left'],
- ['name'=>'投诉次数','id'=>'tscs','width'=>'12','textAlign'=>'left'],
- ['name'=>'合并原因','id'=>'hbyy','width'=>'58','textAlign'=>'left']
- ];
- $i=0;
- foreach($res1 as $k=>$v){
- $result['rows'][$i]['bm']=$v['部门'];
- $result['rows'][$i]['tscs']=$v['投诉次数'];
- $result['rows'][$i]['hbyy']=$v['合并原因'];
- $i++;
- }
- $res=[];
- $res['status']=0;
- $res['msg']='';
- $res['data']=$result;
- $redis->set($redis_key, json_encode($res));
- return json($res);
- }
- }
- //质量问题一览表(按部门)->接口---》暂时用不到
- public function bmzl(){
- $redis=redis();
- $redis_key = md5('bmzl_redis');
- $redis_data = $redis->get($redis_key);
- return $redis_data;
- }
- }
|