| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234 |
- <?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');
- $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;
- }
- }
|