Second.php 147 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987
  1. <?php
  2. namespace app\api\controller;
  3. use think\Controller;
  4. use think\Db;
  5. //采购管理 第二屏 数据
  6. class Second extends Controller{
  7. /** 定义的函数方法 $this->方法名调取*/
  8. //开始时间方法--当年01月01日
  9. public function start_time(){
  10. return gettimeinfo();
  11. }
  12. //结束时间方法--当年12月31日
  13. public function end_time(){
  14. return gettimeinfo(1);
  15. }
  16. //开始时间方法--去年01月01日
  17. public function qstart_time(){
  18. return getLastYear();
  19. }
  20. //结束时间方法--去年12月31日
  21. public function qend_time(){
  22. return getLastYear(1);
  23. }
  24. //前年的一月一日
  25. public function qianend_time(){
  26. $currentYear = date("Y");
  27. $previousYear = $currentYear - 2;
  28. $firstDayOfPreviousYear = date("Y-m-d", strtotime("$previousYear-01-01"));
  29. return $firstDayOfPreviousYear;
  30. }
  31. /**
  32. * 一、使用量
  33. * month_zz方法负责存数据 其他方法负责取该方法数据
  34. */
  35. //当年使用量数据->缓存调用
  36. public function month_zz(){
  37. $redis = redis();
  38. $redis_key = md5('month_zz');
  39. //查询语句
  40. $sql = "SELECT
  41. *
  42. FROM
  43. (
  44. SELECT CONVERT
  45. ( pp.dFZRQ, CHAR ) 年份,
  46. aa.cSQ_ZZMC,
  47. aa.czgmc,
  48. aa.nAmount,
  49. pp.cClientName
  50. FROM
  51. (
  52. SELECT
  53. ppOut2.ID,
  54. ppOut2.cBillCode AS cDJBH,
  55. ppOut2.id_Center AS ID_GZZX,
  56. MKernel.cGzzxmc,
  57. ppOut2.id_Machine AS ID_JT,
  58. MKerJzmb.cJzmc AS cJTMC,
  59. ppOut2.id_Shift AS ID_BanZ,
  60. banzu.cBanzuMc AS cBanZMC,
  61. ppOut2.ID_mxcpck AS ID_CPMX,
  62. v_ppOutPlan.cSubpenaName AS cYJMC,
  63. ppOut2.dDate1 AS dSQRQ,
  64. ppOut2.dDate2 AS dTJRQ,
  65. ppOut2.dDate3 AS dFZRQ,
  66. ppOut2.dDate4 AS dSZRQ,
  67. ppOut2.cOperatorCode1 AS cSQRBH,
  68. DZZG.czgxm AS cSQRMC,
  69. ppOut2.cOperatorCode2 AS cTJRBH,
  70. dzzg1.czgxm AS cTJRMC,
  71. ppOut2.cOperatorCode3 AS cFZRBH,
  72. dzzg2.czgxm AS cFZRMC,
  73. ppOut2.cOperatorCode4 AS cSZRBH,
  74. dzzg3.czgxm AS cSZRMC,
  75. ppOut2.iPaperType AS iZZLX,
  76. ppOut2.iUseType AS iCKYT,
  77. ppOut2.iOut AS iSFWJG,
  78. ppOut2.cRemark AS cBZ,
  79. ppOut2.iStatus AS iZT,
  80. ppOut2.id_Role AS ID_KFJS,
  81. ppOut2.iplant,
  82. ppOut2.iSourceType,
  83. ppRole.cRoleName AS cKFJSMC,
  84. ppvBMMC.cBMBH,
  85. ppvBMMC.cBMMC,
  86. v_ppOutPlan.cSubpenaCode AS cCPBH,
  87. v_ppOutPlan.ckhmc,
  88. v_ppOutPlan.cClientName,
  89. v_ppOutPlan.cBillCode_SubClass,
  90. v_ppOutPlan.cOrderBilllOrigin_SubClass,
  91. ppOut2.ID_sysRDSetting,
  92. ppOut2.crdcode,
  93. ppOut2.crdname,
  94. ppOut2.cModifierNumber,
  95. ppOut2.cModifierName,
  96. IFNULL( v_ppOutPlan.cIsSpellPrinting, '否' ) AS cIsSpellPrinting,
  97. v_ppOutPlan.cWJGDWBH,
  98. v_ppOutPlan.cWJGDWMC,
  99. v_ppOutPlan.cCode_JobOrder
  100. FROM
  101. ppOut2
  102. LEFT OUTER JOIN (
  103. SELECT
  104. ppOut2.ID,
  105. ppOut2.cDeptCode AS cBMBH,
  106. DZBM.cbmmc AS cBMMC
  107. FROM
  108. ppOut2
  109. LEFT OUTER JOIN DZBM ON ppOut2.cDeptCode = DZBM.cbmbh
  110. WHERE
  111. ( ppOut2.iOut = 0 ) UNION
  112. SELECT
  113. ppOut2.ID,
  114. ppOut2.cDeptCode AS cBMBH,
  115. DZYWDW.cdwmc AS cBMMC
  116. FROM
  117. ppOut2
  118. LEFT OUTER JOIN DZYWDW ON ppOut2.cDeptCode = DZYWDW.cywdwbh
  119. WHERE
  120. ( ppOut2.iOut = 1 )
  121. ) AS ppvBMMC ON ppOut2.ID = ppvBMMC.ID
  122. LEFT OUTER JOIN ppRole ON ppOut2.id_Role = ppRole.ID
  123. LEFT OUTER JOIN DZZG AS dzzg3 ON ppOut2.cOperatorCode4 = dzzg3.czgbh
  124. LEFT OUTER JOIN DZZG AS dzzg2 ON ppOut2.cOperatorCode3 = dzzg2.czgbh
  125. LEFT OUTER JOIN DZZG AS dzzg1 ON ppOut2.cOperatorCode2 = dzzg1.czgbh
  126. LEFT OUTER JOIN DZZG ON ppOut2.cOperatorCode1 = DZZG.czgbh
  127. LEFT OUTER JOIN (
  128. SELECT
  129. a.imxcpid AS ID,
  130. b.csccpbh AS cSubpenaCode,
  131. b.csccpmc AS cSubpenaName,
  132. a.isign AS iPaperFrom,
  133. a.cbh AS cPaperCode,
  134. a.chj AS cPaperName,
  135. a.cbzdw AS cUnit,
  136. c.clb AS cPaperType,
  137. a.nbzsl AS nPlanAmount,
  138. a.nwfsl AS nNotOutAmount,
  139. a.nAmount_A,
  140. 0 AS nPlanAmount_OP,
  141. b.cywdwmc AS ckhmc,
  142. b.cClientName,
  143. a.cOrderBilllOriginBillCode,
  144. a.cBillCode_SubClass,
  145. a.iStatus,
  146. CASE
  147. a.iOrderBilllOrigin_SubClass
  148. WHEN 0 THEN
  149. '正常'
  150. WHEN 1 THEN
  151. '补料'
  152. WHEN 2 THEN
  153. '部件补印'
  154. WHEN 3 THEN
  155. '成品补印'
  156. WHEN 4 THEN
  157. '补印'
  158. WHEN 5 THEN
  159. '本厂加工'
  160. WHEN 6 THEN
  161. '返工'
  162. END AS cOrderBilllOrigin_SubClass,
  163. '' AS cIsSpellPrinting,
  164. 0 AS ID_WJGDW,
  165. '' AS cWJGDWBH,
  166. '' AS cWJGDWMC,
  167. a.ID_scAComp,
  168. a.cCode_scAComp,
  169. a.cName_scAComp,
  170. 0 AS iType_From,
  171. '产品' AS cTypeForm,
  172. '' AS cCode_JobOrder
  173. FROM
  174. mxcpck AS a
  175. INNER JOIN zbcpck AS b ON a.isccpid = b.isccpid
  176. AND a.izbcpckID = b.ID
  177. INNER JOIN dzzzgg AS c ON a.cbh = c.cbh
  178. ) v_ppOutPlan ON ppOut2.ID_mxcpck = v_ppOutPlan.ID
  179. LEFT OUTER JOIN banzu ON ppOut2.id_Shift = banzu.banzuId
  180. LEFT OUTER JOIN MKerJzmb ON ppOut2.id_Machine = MKerJzmb.ID
  181. LEFT OUTER JOIN MKernel ON ppOut2.id_Center = MKernel.ID
  182. ) pp
  183. LEFT JOIN (
  184. SELECT
  185. ppvOutDetail2.*,
  186. gg.cOldSystemNumber,
  187. gg.nhss,
  188. CASE
  189. WHEN ppvOutDetail2.cSF_DW = '公斤' THEN
  190. ppvOutDetail2.nSF_SL / 1000
  191. WHEN ppvOutDetail2.cSF_DW = '令' THEN
  192. ( CASE WHEN gg.nhss = 0 THEN ppvOutDetail2.nSF_SL / 20 ELSE ppvOutDetail2.nSF_SL / gg.nhss END )
  193. WHEN ppvOutDetail2.cSF_DW = '张' THEN
  194. (
  195. CASE
  196. WHEN gg.nhss = 0 THEN
  197. ppvOutDetail2.nSF_SL / 500 / 1.5 ELSE ppvOutDetail2.nSF_SL / 500 / gg.nhss
  198. END
  199. ) ELSE 0
  200. END AS nAmount
  201. FROM
  202. (
  203. SELECT
  204. ppOutDetail2.id,
  205. ppOutDetail2.ID_ppOut2,
  206. ppOutDetail2.cReqPaperCode AS cSQ_ZZBH,
  207. dzzzgg1.chj AS cSQ_ZZMC,
  208. dzzzgg1.czgmc AS czgmc,
  209. ppOutDetail2.cReqUnit AS cSQ_DW,
  210. IFNULL( ppOutDetail2.nReqAmount, 0 ) AS nSQ_SL,
  211. ppvOutDetailAccount.cPaperCode AS cSF_ZZBH,
  212. dzzzgg_1.chj AS cSF_ZZMC,
  213. ppvOutDetailAccount.cUnit AS cSF_DW,
  214. IFNULL( ppvOutDetailAccount.nAmount, 0 ) AS nSF_SL
  215. FROM
  216. dzzzgg AS dzzzgg1
  217. RIGHT OUTER JOIN dzzzgg AS dzzzgg_1
  218. RIGHT OUTER JOIN (
  219. SELECT
  220. ID_ppOutDetail2,
  221. cPaperCode,
  222. cUnit,
  223. SUM( nAmount ) AS nAmount
  224. FROM
  225. ppOutDetailFlat2
  226. GROUP BY
  227. ID_ppOutDetail2,
  228. cPaperCode,
  229. cUnit UNION
  230. SELECT
  231. ID_ppOutDetail2,
  232. cPaperCode,
  233. cUnit,
  234. SUM( nAmount ) AS nAmount
  235. FROM
  236. ppOutDetailRoll2
  237. GROUP BY
  238. ID_ppOutDetail2,
  239. cPaperCode,
  240. cUnit
  241. ) AS ppvOutDetailAccount
  242. RIGHT OUTER JOIN ppOutDetail2 ON ppvOutDetailAccount.ID_ppOutDetail2 = ppOutDetail2.id ON dzzzgg_1.cbh = ppvOutDetailAccount.cPaperCode ON dzzzgg1.cbh = ppOutDetail2.cReqPaperCode
  243. ) ppvOutDetail2
  244. LEFT JOIN dzzzgg gg ON gg.cbh = ppvOutDetail2.cSQ_ZZBH
  245. ) aa ON pp.id = aa.ID_ppOut2
  246. WHERE
  247. 1 = 1
  248. AND iZT = 3
  249. AND iCKYT = 1
  250. AND dFZRQ BETWEEN '{$this->start_time()}' AND '{$this->end_time()}' ) tt";
  251. //执行语句
  252. $res = Db::query($sql);
  253. //将查询结果存入 Redis 缓存中
  254. $redis->set($redis_key, json_encode($res));
  255. echo date("Y-m-d H:i:s").' 存进去了';
  256. return $res;
  257. }
  258. //去年使用量数据->缓存调用
  259. public function qu_month_zz(){
  260. $redis = redis();
  261. $redis_key = md5('qu_month_zz');
  262. //查询语句
  263. $sql = "SELECT
  264. *
  265. FROM
  266. (
  267. SELECT CONVERT
  268. ( pp.dFZRQ, CHAR ) 年份,
  269. aa.cSQ_ZZMC,
  270. aa.czgmc,
  271. aa.nAmount,
  272. pp.cClientName
  273. FROM
  274. (
  275. SELECT
  276. ppOut2.ID,
  277. ppOut2.cBillCode AS cDJBH,
  278. ppOut2.id_Center AS ID_GZZX,
  279. MKernel.cGzzxmc,
  280. ppOut2.id_Machine AS ID_JT,
  281. MKerJzmb.cJzmc AS cJTMC,
  282. ppOut2.id_Shift AS ID_BanZ,
  283. banzu.cBanzuMc AS cBanZMC,
  284. ppOut2.ID_mxcpck AS ID_CPMX,
  285. v_ppOutPlan.cSubpenaName AS cYJMC,
  286. ppOut2.dDate1 AS dSQRQ,
  287. ppOut2.dDate2 AS dTJRQ,
  288. ppOut2.dDate3 AS dFZRQ,
  289. ppOut2.dDate4 AS dSZRQ,
  290. ppOut2.cOperatorCode1 AS cSQRBH,
  291. DZZG.czgxm AS cSQRMC,
  292. ppOut2.cOperatorCode2 AS cTJRBH,
  293. dzzg1.czgxm AS cTJRMC,
  294. ppOut2.cOperatorCode3 AS cFZRBH,
  295. dzzg2.czgxm AS cFZRMC,
  296. ppOut2.cOperatorCode4 AS cSZRBH,
  297. dzzg3.czgxm AS cSZRMC,
  298. ppOut2.iPaperType AS iZZLX,
  299. ppOut2.iUseType AS iCKYT,
  300. ppOut2.iOut AS iSFWJG,
  301. ppOut2.cRemark AS cBZ,
  302. ppOut2.iStatus AS iZT,
  303. ppOut2.id_Role AS ID_KFJS,
  304. ppOut2.iplant,
  305. ppOut2.iSourceType,
  306. ppRole.cRoleName AS cKFJSMC,
  307. ppvBMMC.cBMBH,
  308. ppvBMMC.cBMMC,
  309. v_ppOutPlan.cSubpenaCode AS cCPBH,
  310. v_ppOutPlan.ckhmc,
  311. v_ppOutPlan.cClientName,
  312. v_ppOutPlan.cBillCode_SubClass,
  313. v_ppOutPlan.cOrderBilllOrigin_SubClass,
  314. ppOut2.ID_sysRDSetting,
  315. ppOut2.crdcode,
  316. ppOut2.crdname,
  317. ppOut2.cModifierNumber,
  318. ppOut2.cModifierName,
  319. IFNULL( v_ppOutPlan.cIsSpellPrinting, '否' ) AS cIsSpellPrinting,
  320. v_ppOutPlan.cWJGDWBH,
  321. v_ppOutPlan.cWJGDWMC,
  322. v_ppOutPlan.cCode_JobOrder
  323. FROM
  324. ppOut2
  325. LEFT OUTER JOIN (
  326. SELECT
  327. ppOut2.ID,
  328. ppOut2.cDeptCode AS cBMBH,
  329. DZBM.cbmmc AS cBMMC
  330. FROM
  331. ppOut2
  332. LEFT OUTER JOIN DZBM ON ppOut2.cDeptCode = DZBM.cbmbh
  333. WHERE
  334. ( ppOut2.iOut = 0 ) UNION
  335. SELECT
  336. ppOut2.ID,
  337. ppOut2.cDeptCode AS cBMBH,
  338. DZYWDW.cdwmc AS cBMMC
  339. FROM
  340. ppOut2
  341. LEFT OUTER JOIN DZYWDW ON ppOut2.cDeptCode = DZYWDW.cywdwbh
  342. WHERE
  343. ( ppOut2.iOut = 1 )
  344. ) AS ppvBMMC ON ppOut2.ID = ppvBMMC.ID
  345. LEFT OUTER JOIN ppRole ON ppOut2.id_Role = ppRole.ID
  346. LEFT OUTER JOIN DZZG AS dzzg3 ON ppOut2.cOperatorCode4 = dzzg3.czgbh
  347. LEFT OUTER JOIN DZZG AS dzzg2 ON ppOut2.cOperatorCode3 = dzzg2.czgbh
  348. LEFT OUTER JOIN DZZG AS dzzg1 ON ppOut2.cOperatorCode2 = dzzg1.czgbh
  349. LEFT OUTER JOIN DZZG ON ppOut2.cOperatorCode1 = DZZG.czgbh
  350. LEFT OUTER JOIN (
  351. SELECT
  352. a.imxcpid AS ID,
  353. b.csccpbh AS cSubpenaCode,
  354. b.csccpmc AS cSubpenaName,
  355. a.isign AS iPaperFrom,
  356. a.cbh AS cPaperCode,
  357. a.chj AS cPaperName,
  358. a.cbzdw AS cUnit,
  359. c.clb AS cPaperType,
  360. a.nbzsl AS nPlanAmount,
  361. a.nwfsl AS nNotOutAmount,
  362. a.nAmount_A,
  363. 0 AS nPlanAmount_OP,
  364. b.cywdwmc AS ckhmc,
  365. b.cClientName,
  366. a.cOrderBilllOriginBillCode,
  367. a.cBillCode_SubClass,
  368. a.iStatus,
  369. CASE
  370. a.iOrderBilllOrigin_SubClass
  371. WHEN 0 THEN
  372. '正常'
  373. WHEN 1 THEN
  374. '补料'
  375. WHEN 2 THEN
  376. '部件补印'
  377. WHEN 3 THEN
  378. '成品补印'
  379. WHEN 4 THEN
  380. '补印'
  381. WHEN 5 THEN
  382. '本厂加工'
  383. WHEN 6 THEN
  384. '返工'
  385. END AS cOrderBilllOrigin_SubClass,
  386. '' AS cIsSpellPrinting,
  387. 0 AS ID_WJGDW,
  388. '' AS cWJGDWBH,
  389. '' AS cWJGDWMC,
  390. a.ID_scAComp,
  391. a.cCode_scAComp,
  392. a.cName_scAComp,
  393. 0 AS iType_From,
  394. '产品' AS cTypeForm,
  395. '' AS cCode_JobOrder
  396. FROM
  397. mxcpck AS a
  398. INNER JOIN zbcpck AS b ON a.isccpid = b.isccpid
  399. AND a.izbcpckID = b.ID
  400. INNER JOIN dzzzgg AS c ON a.cbh = c.cbh
  401. ) v_ppOutPlan ON ppOut2.ID_mxcpck = v_ppOutPlan.ID
  402. LEFT OUTER JOIN banzu ON ppOut2.id_Shift = banzu.banzuId
  403. LEFT OUTER JOIN MKerJzmb ON ppOut2.id_Machine = MKerJzmb.ID
  404. LEFT OUTER JOIN MKernel ON ppOut2.id_Center = MKernel.ID
  405. ) pp
  406. LEFT JOIN (
  407. SELECT
  408. ppvOutDetail2.*,
  409. gg.cOldSystemNumber,
  410. gg.nhss,
  411. CASE
  412. WHEN ppvOutDetail2.cSF_DW = '公斤' THEN
  413. ppvOutDetail2.nSF_SL / 1000
  414. WHEN ppvOutDetail2.cSF_DW = '令' THEN
  415. ( CASE WHEN gg.nhss = 0 THEN ppvOutDetail2.nSF_SL / 20 ELSE ppvOutDetail2.nSF_SL / gg.nhss END )
  416. WHEN ppvOutDetail2.cSF_DW = '张' THEN
  417. (
  418. CASE
  419. WHEN gg.nhss = 0 THEN
  420. ppvOutDetail2.nSF_SL / 500 / 1.5 ELSE ppvOutDetail2.nSF_SL / 500 / gg.nhss
  421. END
  422. ) ELSE 0
  423. END AS nAmount
  424. FROM
  425. (
  426. SELECT
  427. ppOutDetail2.id,
  428. ppOutDetail2.ID_ppOut2,
  429. ppOutDetail2.cReqPaperCode AS cSQ_ZZBH,
  430. dzzzgg1.chj AS cSQ_ZZMC,
  431. dzzzgg1.czgmc AS czgmc,
  432. ppOutDetail2.cReqUnit AS cSQ_DW,
  433. IFNULL( ppOutDetail2.nReqAmount, 0 ) AS nSQ_SL,
  434. ppvOutDetailAccount.cPaperCode AS cSF_ZZBH,
  435. dzzzgg_1.chj AS cSF_ZZMC,
  436. ppvOutDetailAccount.cUnit AS cSF_DW,
  437. IFNULL( ppvOutDetailAccount.nAmount, 0 ) AS nSF_SL
  438. FROM
  439. dzzzgg AS dzzzgg1
  440. RIGHT OUTER JOIN dzzzgg AS dzzzgg_1
  441. RIGHT OUTER JOIN (
  442. SELECT
  443. ID_ppOutDetail2,
  444. cPaperCode,
  445. cUnit,
  446. SUM( nAmount ) AS nAmount
  447. FROM
  448. ppOutDetailFlat2
  449. GROUP BY
  450. ID_ppOutDetail2,
  451. cPaperCode,
  452. cUnit UNION
  453. SELECT
  454. ID_ppOutDetail2,
  455. cPaperCode,
  456. cUnit,
  457. SUM( nAmount ) AS nAmount
  458. FROM
  459. ppOutDetailRoll2
  460. GROUP BY
  461. ID_ppOutDetail2,
  462. cPaperCode,
  463. cUnit
  464. ) AS ppvOutDetailAccount
  465. RIGHT OUTER JOIN ppOutDetail2 ON ppvOutDetailAccount.ID_ppOutDetail2 = ppOutDetail2.id ON dzzzgg_1.cbh = ppvOutDetailAccount.cPaperCode ON dzzzgg1.cbh = ppOutDetail2.cReqPaperCode
  466. ) ppvOutDetail2
  467. LEFT JOIN dzzzgg gg ON gg.cbh = ppvOutDetail2.cSQ_ZZBH
  468. ) aa ON pp.id = aa.ID_ppOut2
  469. WHERE
  470. 1 = 1
  471. AND iZT = 3
  472. AND iCKYT = 1
  473. AND dFZRQ BETWEEN '{$this->qstart_time()}' AND '{$this->qend_time()}' ) tt";
  474. //执行语句
  475. $res = Db::query($sql);
  476. //将查询结果存入 Redis 缓存中
  477. $redis->set($redis_key, json_encode($res));
  478. echo date("Y-m-d H:i:s").' 存进去了';
  479. return $res;
  480. }
  481. //当年纸张使用量(吨)->接口调用
  482. public function yearuse(){
  483. $redis = redis();
  484. $list = json_decode($redis->get(md5('month_zz')),true);
  485. $sum_dun = 0;
  486. foreach ($list as $item) {
  487. $sum_dun += $item['nAmount'];//数量
  488. }
  489. $list=[['name'=>' ','value'=>round($sum_dun)]];
  490. $res['status']= 0;
  491. $res['msg'] = '';
  492. $res['data'] = $list;
  493. return json($res);
  494. }
  495. //上一年度总纸张使用量(吨)->接口调用
  496. public function qu_yearuse(){
  497. $redis = redis();
  498. $list = json_decode($redis->get(md5('qu_month_zz')),true);
  499. $sum_dun = 0;
  500. foreach ($list as $item) {
  501. $sum_dun += $item['nAmount'];//数量
  502. }
  503. $list=[['name'=>' ','value'=>round($sum_dun)]];
  504. $res['status']= 0;
  505. $res['msg'] = '';
  506. $res['data'] = $list;
  507. return json($res);
  508. }
  509. //当年各出版社厂料使用量->接口调用
  510. public function yearpress(){
  511. $redis = redis();
  512. $o_lists = json_decode($redis->get(md5('month_zz')), true);
  513. // 定义要屏蔽的出版社数组
  514. $blockedPublishers = [
  515. '浙江教育出版社集团有限公司',
  516. '浙江摄影出版社有限公司',
  517. '浙江古籍出版社有限公司',
  518. '浙江少年儿童出版社有限公司',
  519. '浙江文艺出版社有限公司',
  520. '浙江科学技术出版社有限公司',
  521. '浙江人民美术出版社有限公司',
  522. '浙江人民出版社有限公司',
  523. '浙江出版传媒股份有限公司',
  524. '浙江出版传媒股份有限公司(含省出版公司)'
  525. ];
  526. // 结果数组,不包含被屏蔽的出版社
  527. $o_list = array_filter($o_lists, function ($item) use ($blockedPublishers) {
  528. return !in_array($item['cClientName'], $blockedPublishers);
  529. });
  530. if(empty($o_list)) {
  531. return json_encode([
  532. 'status' => 0,
  533. 'msg' => '没有找到数据',
  534. 'data' => [
  535. 'categories' => [''],
  536. 'series' => [
  537. ['name' => '使用量', 'data' => [0]]
  538. ]
  539. ]
  540. ]);
  541. }
  542. $list = [];
  543. $sort_arr = [];
  544. foreach($o_list as &$v){
  545. switch ($v['cClientName']) {
  546. case '浙江教育出版社集团有限公司':
  547. $v['cClientName'] = '浙江教育出版社';
  548. break;
  549. case '浙江出版传媒股份有限公司':
  550. $v['cClientName'] = '浙江出版传媒';
  551. break;
  552. case '人民教育出版社有限公司':
  553. $v['cClientName'] = '人民教育出版社';
  554. break;
  555. case '《浙江共产党员》杂志集团有限公司':
  556. $v['cClientName'] = '《浙江共产党员》杂志';
  557. break;
  558. case '教育科学出版社有限公司':
  559. $v['cClientName'] = '教育科学出版社';
  560. break;
  561. case '浙江省新华书店集团有限公司(作业本)':
  562. $v['cClientName'] = '浙江省新华书店(作业本)';
  563. break;
  564. case '中信出版集团股份有限公司':
  565. $v['cClientName'] = '中信出版集团';
  566. break;
  567. case '读者出版传媒股份有限公司':
  568. $v['cClientName'] = '读者出版传媒';
  569. break;
  570. case '大星(上海)文化传媒有限公司(浙江文艺)':
  571. case '大星(上海)文化传媒有限公司(浙江少儿)':
  572. case '大星(上海)文化传媒有限公司(上海书店)':
  573. case '大星(上海)文化传媒有限公司(河南文艺)':
  574. case '大星(上海)文化传媒有限公司':
  575. $v['cClientName'] = '大星(上海)文化传媒';
  576. break;
  577. default:
  578. // 不满足条件的客户名称保持原样
  579. break;
  580. }
  581. }
  582. foreach ($o_list as $value) {
  583. $key = md5($value['cClientName']);
  584. $nAmount = $value['nAmount'];
  585. if (isset($list[$key])) {
  586. $list[$key]['nAmount'] += $nAmount; // 吨
  587. } else {
  588. $list[$key]['nAmount'] = $nAmount; // 吨
  589. $list[$key]['cClientName'] = $value['cClientName'];
  590. $list[$key]['dun'] = '吨';
  591. }
  592. $sort_arr[$key] = $list[$key]['nAmount'];
  593. }
  594. arsort($sort_arr); // 根据 nAmount 降序排序
  595. array_multisort($list,SORT_DESC);
  596. $list=array_splice($list,0,10);
  597. $i=0;
  598. foreach($list as $v){
  599. $result['categories'][$i] = $v['cClientName'];
  600. $result['series'][0]['name'] = '使用量';
  601. $result['series'][0]['data'][$i] = round($v['nAmount']);
  602. $i++;
  603. }
  604. // echo "全年各出版社厂料使用量";echo "<pre>";print_r($result);echo "</pre>"; die;
  605. $res['status'] = 0;
  606. $res['msg'] = '';
  607. $res['data'] = $result;
  608. return json_encode($res);
  609. }
  610. /**
  611. * 二、采购量
  612. * er_lst方法负责存数据 其他方法负责取该方法数据
  613. */
  614. //全年采购量数据->缓存调用
  615. public function er_lst(){
  616. $redis = redis();
  617. $redis_key = md5('er_lst');
  618. //查询语句
  619. $sql = "SELECT ppIn.ID,
  620. CASE
  621. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  622. WHEN ppInDetail.cunit = '令' THEN
  623. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  624. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  625. ELSE 0
  626. END AS '数量(吨)',
  627. dzzzgg.czgmc,
  628. dzzzgg.nhss,
  629. -- ppin.iplant = 0 采购类型 2 书刊类型
  630. ppin.iplant 入库单类型,
  631. ppIn.cbillcode,
  632. CASE
  633. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  634. ELSE ppIn.iSourceType
  635. END iSourceType,
  636. ppInDetail.cpcode,
  637. ppInDetail.cpname,
  638. -- ppInDetail.cbatchcode,
  639. -- ppIn.cowner,
  640. ppIn.csupplier 公司,
  641. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  642. ppInDetail.namount namount,
  643. ppInDetail.mPrice 标准单价,
  644. ppInDetail.cunit 单位,
  645. F.nTaxBuyPrice 含税单价,
  646. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  647. dzzzgg.cgg 规格
  648. FROM ppIn
  649. INNER JOIN ppInDetail
  650. ON ppIn.cbillcode = ppInDetail.cbillcode
  651. AND ppIn.iStatus >= 0
  652. LEFT JOIN (SELECT cBillCode,
  653. cPaperCode,
  654. cBatchCode,
  655. CASE Count(*)
  656. WHEN 1 THEN Min(b.cPlaceShowName)
  657. ELSE ( Min(b.cPlaceShowName) + ',...' )
  658. END AS cKwmc
  659. FROM ppInDetailPlace a
  660. LEFT JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  661. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  662. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  663. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  664. FROM dzkw AS a LEFT OUTER JOIN
  665. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  666. FROM dzStoreRole AS aa INNER JOIN
  667. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  668. FROM ppRole
  669. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  670. a.iForbid = 0 LEFT OUTER JOIN
  671. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  672. ON a.id_Place = b.id
  673. GROUP BY cBillCode,
  674. cPaperCode,
  675. cBatchCode) E
  676. ON ppInDetail.cBillCode = E.cBillCode
  677. AND ppInDetail.cPCode = E.cpapercode
  678. AND ppInDetail.cBatchCode = E.cbatchcode
  679. LEFT JOIN ppInNoticeDetail F
  680. ON PPInDetail.cmessagecode = F.cbillcode
  681. AND PPInDetail.cmessagepaper = F.cpcode
  682. LEFT JOIN ppInNotice
  683. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  684. LEFT JOIN ppInNoticeDetailClient F1
  685. ON PPInDetail.cmessagecode = F1.cbillcode
  686. AND PPInDetail.cmessagepaper = F1.cpcode
  687. LEFT JOIN ppInNoticeClient
  688. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  689. LEFT JOIN skBuy
  690. ON skBuy.id = ppInNotice.id_skBuy
  691. LEFT JOIN skBuyDetail
  692. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  693. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  694. LEFT JOIN (SELECT a.cSccpBh,
  695. b.cPaperCode
  696. FROM sccp a
  697. INNER JOIN ppArtifactDetail b
  698. ON a.sccpid = b.ID_sccp) G
  699. ON PPInDetail.cmessagecode = G.cSccpBh
  700. AND PPInDetail.cmessagepaper = G.cPaperCode
  701. LEFT JOIN dzzzgg
  702. ON dzzzgg.cbh = ppInDetail.cpcode
  703. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  704. AND ( ppInNoticeClient.cbillcode IS NULL )
  705. AND ( ppIn.dArrival >= '{$this->start_time()}' )
  706. AND ( ppIn.dArrival <= '{$this->end_time()}' )
  707. ORDER BY ppIn.cbillcode,
  708. ppInDetail.isn ";
  709. //执行语句
  710. $res=Db::query($sql);
  711. if($res){
  712. //将查询结果存入 Redis 缓存中
  713. $redis->set($redis_key, json_encode($res));
  714. echo date("Y-m-d H:i:s").' 存进去了';
  715. return $res;
  716. }
  717. }
  718. //去年采购量数据->缓存调用
  719. public function qer_lst(){
  720. $redis = redis();
  721. $redis_key = md5('qer_lst');
  722. //查询语句
  723. $sql = "SELECT ppIn.ID,
  724. CASE
  725. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  726. WHEN ppInDetail.cunit = '令' THEN
  727. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  728. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  729. ELSE 0
  730. END AS '数量(吨)',
  731. dzzzgg.czgmc,
  732. dzzzgg.nhss,
  733. -- ppin.iplant = 0 采购类型 2 书刊类型
  734. ppin.iplant 入库单类型,
  735. ppIn.cbillcode,
  736. CASE
  737. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  738. ELSE ppIn.iSourceType
  739. END iSourceType,
  740. ppInDetail.cpcode,
  741. ppInDetail.cpname,
  742. -- ppInDetail.cbatchcode,
  743. -- ppIn.cowner,
  744. ppIn.csupplier 公司,
  745. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  746. ppInDetail.namount namount,
  747. ppInDetail.mPrice 标准单价,
  748. ppInDetail.cunit 单位,
  749. F.nTaxBuyPrice 含税单价,
  750. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  751. dzzzgg.cgg 规格
  752. FROM ppIn
  753. INNER JOIN ppInDetail
  754. ON ppIn.cbillcode = ppInDetail.cbillcode
  755. AND ppIn.iStatus >= 0
  756. LEFT JOIN (SELECT cBillCode,
  757. cPaperCode,
  758. cBatchCode,
  759. CASE Count(*)
  760. WHEN 1 THEN Min(b.cPlaceShowName)
  761. ELSE ( Min(b.cPlaceShowName) + ',...' )
  762. END AS cKwmc
  763. FROM ppInDetailPlace a
  764. LEFT JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  765. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  766. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  767. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  768. FROM dzkw AS a LEFT OUTER JOIN
  769. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  770. FROM dzStoreRole AS aa INNER JOIN
  771. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  772. FROM ppRole
  773. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  774. a.iForbid = 0 LEFT OUTER JOIN
  775. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  776. ON a.id_Place = b.id
  777. GROUP BY cBillCode,
  778. cPaperCode,
  779. cBatchCode) E
  780. ON ppInDetail.cBillCode = E.cBillCode
  781. AND ppInDetail.cPCode = E.cpapercode
  782. AND ppInDetail.cBatchCode = E.cbatchcode
  783. LEFT JOIN ppInNoticeDetail F
  784. ON PPInDetail.cmessagecode = F.cbillcode
  785. AND PPInDetail.cmessagepaper = F.cpcode
  786. LEFT JOIN ppInNotice
  787. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  788. LEFT JOIN ppInNoticeDetailClient F1
  789. ON PPInDetail.cmessagecode = F1.cbillcode
  790. AND PPInDetail.cmessagepaper = F1.cpcode
  791. LEFT JOIN ppInNoticeClient
  792. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  793. LEFT JOIN skBuy
  794. ON skBuy.id = ppInNotice.id_skBuy
  795. LEFT JOIN skBuyDetail
  796. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  797. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  798. LEFT JOIN (SELECT a.cSccpBh,
  799. b.cPaperCode
  800. FROM sccp a
  801. INNER JOIN ppArtifactDetail b
  802. ON a.sccpid = b.ID_sccp) G
  803. ON PPInDetail.cmessagecode = G.cSccpBh
  804. AND PPInDetail.cmessagepaper = G.cPaperCode
  805. LEFT JOIN dzzzgg
  806. ON dzzzgg.cbh = ppInDetail.cpcode
  807. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  808. AND ( ppInNoticeClient.cbillcode IS NULL )
  809. AND ( ppIn.dArrival >= '{$this->qstart_time()}' )
  810. AND ( ppIn.dArrival <= '{$this->qend_time()}' )
  811. ORDER BY ppIn.cbillcode,
  812. ppInDetail.isn ";
  813. //执行语句
  814. $res=Db::query($sql);
  815. //将查询结果存入 Redis 缓存中
  816. $redis->set($redis_key, json_encode($res));
  817. echo date("Y-m-d H:i:s").' 存进去了';
  818. return $res;
  819. }
  820. //前年--今年采购量数据->缓存调用
  821. public function q_er_lst(){
  822. $redis = redis();
  823. $redis_key = md5('q_er_lst');
  824. //查询语句
  825. $sql = "SELECT ppIn.ID,
  826. CASE
  827. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  828. WHEN ppInDetail.cunit = '令' THEN
  829. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  830. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  831. ELSE 0
  832. END AS '数量(吨)',
  833. dzzzgg.czgmc,
  834. dzzzgg.nhss,
  835. -- ppin.iplant = 0 采购类型 2 书刊类型
  836. ppin.iplant 入库单类型,
  837. ppIn.cbillcode,
  838. CASE
  839. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  840. ELSE ppIn.iSourceType
  841. END iSourceType,
  842. ppInDetail.cpcode,
  843. ppInDetail.cpname,
  844. -- ppInDetail.cbatchcode,
  845. -- ppIn.cowner,
  846. ppIn.csupplier 公司,
  847. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  848. ppInDetail.namount namount,
  849. ppInDetail.mPrice 标准单价,
  850. ppInDetail.cunit 单位,
  851. F.nTaxBuyPrice 含税单价,
  852. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  853. dzzzgg.cgg 规格
  854. FROM ppIn
  855. INNER JOIN ppInDetail
  856. ON ppIn.cbillcode = ppInDetail.cbillcode
  857. AND ppIn.iStatus >= 0
  858. LEFT JOIN (SELECT cBillCode,
  859. cPaperCode,
  860. cBatchCode,
  861. CASE Count(*)
  862. WHEN 1 THEN Min(b.cPlaceShowName)
  863. ELSE ( Min(b.cPlaceShowName) + ',...' )
  864. END AS cKwmc
  865. FROM ppInDetailPlace a
  866. LEFT JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  867. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  868. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  869. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  870. FROM dzkw AS a LEFT OUTER JOIN
  871. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  872. FROM dzStoreRole AS aa INNER JOIN
  873. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  874. FROM ppRole
  875. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  876. a.iForbid = 0 LEFT OUTER JOIN
  877. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  878. ON a.id_Place = b.id
  879. GROUP BY cBillCode,
  880. cPaperCode,
  881. cBatchCode) E
  882. ON ppInDetail.cBillCode = E.cBillCode
  883. AND ppInDetail.cPCode = E.cpapercode
  884. AND ppInDetail.cBatchCode = E.cbatchcode
  885. LEFT JOIN ppInNoticeDetail F
  886. ON PPInDetail.cmessagecode = F.cbillcode
  887. AND PPInDetail.cmessagepaper = F.cpcode
  888. LEFT JOIN ppInNotice
  889. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  890. LEFT JOIN ppInNoticeDetailClient F1
  891. ON PPInDetail.cmessagecode = F1.cbillcode
  892. AND PPInDetail.cmessagepaper = F1.cpcode
  893. LEFT JOIN ppInNoticeClient
  894. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  895. LEFT JOIN skBuy
  896. ON skBuy.id = ppInNotice.id_skBuy
  897. LEFT JOIN skBuyDetail
  898. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  899. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  900. LEFT JOIN (SELECT a.cSccpBh,
  901. b.cPaperCode
  902. FROM sccp a
  903. INNER JOIN ppArtifactDetail b
  904. ON a.sccpid = b.ID_sccp) G
  905. ON PPInDetail.cmessagecode = G.cSccpBh
  906. AND PPInDetail.cmessagepaper = G.cPaperCode
  907. LEFT JOIN dzzzgg
  908. ON dzzzgg.cbh = ppInDetail.cpcode
  909. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  910. AND ( ppInNoticeClient.cbillcode IS NULL )
  911. AND ( ppIn.dArrival >= '{$this->qianend_time()}' )
  912. AND ( ppIn.dArrival <= '{$this->end_time()}' )
  913. ORDER BY ppIn.cbillcode,
  914. ppInDetail.isn ";
  915. //执行语句
  916. $res=Db::query($sql);
  917. //将查询结果存入 Redis 缓存中
  918. $redis->set($redis_key, json_encode($res));
  919. echo date("Y-m-d H:i:s").' 存进去了';
  920. return $res;
  921. }
  922. //进行处理每月各类纸张使用量
  923. public function tt12new(){
  924. $redis = redis();
  925. $list = json_decode($redis->get(md5('month_zz')),true);
  926. if(empty($list)) {
  927. return '';
  928. }else{
  929. $o_list = [];
  930. foreach ($list as $k => $item) {
  931. $tmp = [];
  932. $tmp['dCreate'] = date('Ym', strtotime($item['年份']));
  933. $tmp['czgmc'] = pdcateinfobyczgmc($item['czgmc']);
  934. $tmp['nAmount'] = $item['nAmount'];
  935. $o_list[] = $tmp;
  936. }
  937. $r_list = [];
  938. //按照日期分类分组求和
  939. foreach ($o_list as $item) {
  940. $key = md5($item['czgmc'] . $item['dCreate']);
  941. if (isset($r_list[$key])) {
  942. $r_list[$key]['czgmc'] = $item['czgmc'];
  943. $r_list[$key]['nsl'] += $item['nAmount'];
  944. $r_list[$key]['dCreate'] = $item['dCreate'];
  945. } else {
  946. $r_list[$key]['czgmc'] = $item['czgmc'];
  947. $r_list[$key]['nsl'] = $item['nAmount'];
  948. $r_list[$key]['dCreate'] = $item['dCreate'];
  949. }
  950. }
  951. //按照日期重组数据
  952. $out_list = [];
  953. foreach ($r_list as $key => $item) {
  954. $catename = $item['czgmc'];
  955. //归类
  956. if (isset($out_list[$item['dCreate']])) {
  957. if (isset($out_list[$item['dCreate']][$catename])) {
  958. $out_list[$item['dCreate']][$catename] += round($item['nsl'],2);
  959. } else {
  960. $out_list[$item['dCreate']][$catename] = round($item['nsl'],2);
  961. }
  962. } else {
  963. $out_list[$item['dCreate']][$catename] = round($item['nsl'],2);
  964. }
  965. }
  966. //补全分类
  967. foreach ($out_list as $key=>&$val) {
  968. //bucateinfo 显示主要纸张分类
  969. $val = bucateinfo($val);
  970. arsort($val);
  971. }
  972. //补全月份
  973. $month_arr = getYearInfo();
  974. //循环将月份分开查询
  975. foreach($month_arr as $m){
  976. if(!isset($out_list[$m])){
  977. $out_list[$m] = bucateinfo();
  978. }
  979. }
  980. //月份正序进行排序
  981. ksort($out_list);
  982. return $out_list;
  983. }
  984. }
  985. //当年纸张采购量->接口调用
  986. public function year_procurement(){
  987. $redis = redis();
  988. $list = json_decode($redis->get(md5('er_lst')),true);
  989. $sum_dun = 0;//吨
  990. foreach ($list as $item) {
  991. $t = [];
  992. $t['number'] = floatval($item['namount']);//数量
  993. $t['nhss'] = floatval($item['nhss']);//吨折令
  994. $t['sumprice'] = toround($item['含税金额']);//含税金额
  995. $t['unit'] = trim($item['单位']);//单位
  996. $sum_dun += erp_price($t);
  997. }
  998. $list=[['name'=>' ','value'=>round($sum_dun)]];
  999. $res['status']=0;
  1000. $res['msg']='';
  1001. $res['data']=$list;
  1002. return json($res);
  1003. }
  1004. //上一年度纸张采购量->接口调用
  1005. public function qu_year_procurement(){
  1006. $redis = redis();
  1007. $list = json_decode($redis->get(md5('qer_lst')),true);
  1008. $sum_dun = 0;//吨
  1009. foreach ($list as $item) {
  1010. $t = [];
  1011. $t['number'] = floatval($item['namount']);//数量
  1012. $t['nhss'] = floatval($item['nhss']);//吨折令
  1013. $t['sumprice'] = toround($item['含税金额']);//含税金额
  1014. $t['unit'] = trim($item['单位']);//单位
  1015. $sum_dun += erp_price($t);
  1016. }
  1017. $list=[['name'=>' ','value'=>round($sum_dun)]];
  1018. $res['status']=0;
  1019. $res['msg']='';
  1020. $res['data']=$list;
  1021. return json($res);
  1022. }
  1023. //当年采购金额->接口调用
  1024. public function year_money(){
  1025. $redis = redis();
  1026. $list = json_decode($redis->get(md5('er_lst')),true);
  1027. $sum_jine = 0;//金额
  1028. foreach ($list as $item) {
  1029. $t = [];
  1030. $t['number'] = floatval($item['namount']);//数量
  1031. $t['nhss'] = floatval($item['nhss']);//吨折令
  1032. $t['sumprice'] = toround($item['含税金额']);//含税金额
  1033. $t['unit'] = trim($item['单位']);//单位
  1034. $sum_jine += $t['sumprice'];
  1035. }
  1036. $list=[['name'=>' ','value'=>round($sum_jine/10000)]];
  1037. $res['status']=0;
  1038. $res['msg']='';
  1039. $res['data']=$list;
  1040. return json($res);
  1041. }
  1042. //上一年第采购金额->接口调用
  1043. public function qu_year_money(){
  1044. $redis = redis();
  1045. $list = json_decode($redis->get(md5('qer_lst')),true);
  1046. $sum_jine = 0;//金额
  1047. foreach ($list as $item) {
  1048. $t = [];
  1049. $t['number'] = floatval($item['namount']);//数量
  1050. $t['nhss'] = floatval($item['nhss']);//吨折令
  1051. $t['sumprice'] = toround($item['含税金额']);//含税金额
  1052. $t['unit'] = trim($item['单位']);//单位
  1053. $sum_jine += $t['sumprice'];
  1054. }
  1055. $list=[['name'=>' ','value'=>round($sum_jine/10000)]];
  1056. $res['status']=0;
  1057. $res['msg']='';
  1058. $res['data']=$list;
  1059. return json($res);
  1060. }
  1061. //2.2每月采购量、金额->接口调用
  1062. public function month_procurement(){
  1063. $redis = redis();
  1064. $list = json_decode($redis->get(md5('er_lst')),true);
  1065. // $list = json_decode($redis->get(md5('qer_lst')),true);
  1066. $r_list = [];
  1067. foreach ($list as $item) {
  1068. $month = date('Ym',strtotime($item['darrival']));
  1069. $t = [];
  1070. $t['dArrival'] = $month;//月份
  1071. $t = [];
  1072. $t['number'] = floatval($item['namount']);//数量
  1073. $t['nhss'] = floatval($item['nhss']);//吨折令
  1074. $t['sumprice'] = toround($item['含税金额']);//含税金额
  1075. $t['unit'] = trim($item['单位']);//单位
  1076. $sum_dun = erp_price($t);//吨
  1077. $t['dweight'] = $sum_dun;
  1078. $sum_jine = $t['sumprice'];//金额
  1079. if (isset($r_list[$month])) {
  1080. $r_list[$month]['dArrival'] = $month;//月份
  1081. $r_list[$month]['dun'] += $sum_dun;//吨
  1082. $r_list[$month]['jine'] += $sum_jine;//金额
  1083. } else {
  1084. $r_list[$month]['dArrival'] = $month;//月份
  1085. $r_list[$month]['dun'] = $sum_dun;//吨
  1086. $r_list[$month]['jine'] = $sum_jine;//金额
  1087. }
  1088. }
  1089. $c_list = [];
  1090. //补全月份
  1091. $yearInfo = getYearInfo();
  1092. foreach ($yearInfo as $item){
  1093. $item = intval($item);
  1094. if(!isset($r_list[$item])){
  1095. $c_list[] = [
  1096. 'dtime' => $item,//月份
  1097. 'dun' =>0,//吨
  1098. 'jine' =>0,//金额
  1099. ];
  1100. }else{
  1101. $c_list[] = $r_list[$item];
  1102. }
  1103. }
  1104. $list=[];
  1105. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1106. foreach($c_list as $k=>$v){
  1107. $list['series'][0]['name']='采购量(吨)';
  1108. $list['series'][1]['name']='采购金额(万元)';
  1109. $list['series'][0]['data'][]=(int)round($v['dun']);
  1110. $list['series'][1]['data'][]=(int)round($v['jine']/10000);
  1111. }
  1112. $res['status']=0;
  1113. $res['msg']='';
  1114. $res['data']=$list;
  1115. return json($res);
  1116. }
  1117. //2.3-1每月各类纸张采购量(第一页)->接口调用
  1118. public function month_paperdun(){
  1119. $redis = redis();
  1120. $list = json_decode($redis->get(md5('er_lst')),true);
  1121. if(empty($list)) {
  1122. return '';
  1123. }else{
  1124. $mainCate = getcateinfo();
  1125. foreach ($list as $item){
  1126. $catename = getCateName($item['czgmc']);
  1127. //是否属于主要纸张
  1128. if(!in_array($catename,$mainCate)){
  1129. continue;
  1130. }
  1131. $month = date('Ym',strtotime($item['darrival'] ));
  1132. $key = md5($catename.$month);
  1133. $t = [];
  1134. $t['dtime'] = $month;//月份
  1135. $t['catename'] = $catename;//纸张名称
  1136. $t['dweight'] = floatval($item['数量(吨)']);//
  1137. $t['sumprice'] = floatval($item['含税金额']);//金额
  1138. $dweight = $t['dweight'];
  1139. $dprice = $t['sumprice'] ;
  1140. if (isset($r_list[$key])) {
  1141. $r_list[$key]['catename'] = $catename;//
  1142. $r_list[$key]['month'] = $month;//
  1143. $r_list[$key]['dun'] += $dweight;//吨
  1144. $r_list[$key]['jine'] += $dprice;//金额
  1145. } else {
  1146. $r_list[$key]['catename'] = $catename;//
  1147. $r_list[$key]['month'] = $month;//
  1148. $r_list[$key]['dun'] = $dweight;//吨
  1149. $r_list[$key]['jine'] = $dprice;//金额
  1150. }
  1151. }
  1152. $c_list = [];
  1153. foreach($r_list as $item){
  1154. $c_list[$item['month']][$item['catename']] = toround($item['dun']);//
  1155. }
  1156. //补全分类
  1157. foreach ($c_list as &$val) {
  1158. $val = bucateinfo($val);
  1159. arsort($val);
  1160. }
  1161. //补全月份
  1162. $month_arr = getYearInfo();
  1163. foreach($month_arr as $m){
  1164. if(!isset($c_list[$m])){
  1165. $c_list[$m] = bucateinfo();
  1166. }
  1167. }
  1168. // echo "每月各类纸张采购量(第一页)";echo "<pre>";print_r($c_list);echo "</pre>";die;
  1169. return $c_list;
  1170. }
  1171. }
  1172. //每月各类纸张采购量、使用量-高白双胶纸采购量
  1173. public function gbsj(){
  1174. $result = $this->month_paperdun();
  1175. $result1= $this->tt12new();
  1176. if(empty($result) || empty($result1)) {
  1177. return json([
  1178. 'status' => 0,
  1179. 'msg' => '没有找到数据',
  1180. 'data' => [
  1181. 'categories' => [''],
  1182. 'series' => [
  1183. ['name' => '采购量', 'data' => [0]],
  1184. ['name' => '使用量', 'data' => [0]]
  1185. ]
  1186. ]
  1187. ]);
  1188. }else{
  1189. foreach($result as $k=>$v){
  1190. $list['categories'][]=$k;
  1191. $list['series'][0]['name']='高白双胶纸';
  1192. $list['series'][0]['data'][]=round($v['高白双胶纸']);
  1193. }
  1194. foreach($result1 as $k=>$v){
  1195. $list1['categories'][]=$k;
  1196. $list1['series'][0]['name']='高白双胶纸';
  1197. $list1['series'][0]['data'][]=round($v['高白双胶纸']);
  1198. }
  1199. $data=input('post.');
  1200. if(isset($data['dependence'])){
  1201. $dependence=$data['dependence'];
  1202. }else{
  1203. $dependence['item']['value']= date('Y',time());
  1204. }
  1205. $sy_yeardata = 0;
  1206. $cg_yeardata = 0;
  1207. if($dependence['item']['value'] == date('Y',time())){
  1208. $i=(int)$dependence['item']['value'];
  1209. $res1['categories'][]=$dependence['item']['value'];
  1210. for($i=0;$i<=11;$i++){
  1211. $cg_yeardata += $list['series'][0]['data'][$i];
  1212. $sy_yeardata += $list1['series'][0]['data'][$i];
  1213. }
  1214. $res1['series'][0]['name']='采购量';
  1215. $res1['series'][0]['data'][]=$cg_yeardata;
  1216. $res1['series'][1]['name']='使用量';
  1217. $res1['series'][1]['data'][]=$sy_yeardata;
  1218. }else{
  1219. $i=(int)$dependence['item']['value'];
  1220. $res1['categories'][]=$dependence['item']['value'];
  1221. $res1['series'][0]['name']='采购量';
  1222. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1223. $res1['series'][1]['name']='使用量';
  1224. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1225. }
  1226. $res['status']=0;
  1227. $res['msg']='';
  1228. $res['data']=$res1;
  1229. return json($res);
  1230. }
  1231. }
  1232. //每月各类纸张采购量、使用量-纯质纸采购量
  1233. public function czz(){
  1234. $result=$this->month_paperdun();
  1235. $result1= $this->tt12new();
  1236. if(empty($result) || empty($result1)) {
  1237. return json([
  1238. 'status' => 0,
  1239. 'msg' => '没有找到数据',
  1240. 'data' => [
  1241. 'categories' => [''],
  1242. 'series' => [
  1243. ['name' => '采购量', 'data' => [0]],
  1244. ['name' => '使用量', 'data' => [0]]
  1245. ]
  1246. ]
  1247. ]);
  1248. }else{
  1249. foreach($result as $k=>$v){
  1250. $list['categories'][]=$k;
  1251. $list['series'][0]['name']='纯质纸';
  1252. $list['series'][0]['data'][]=round($v['纯质纸']);
  1253. }
  1254. foreach($result1 as $k=>$v){
  1255. $list1['categories'][]=$k;
  1256. $list1['series'][0]['name']='纯质纸';
  1257. $list1['series'][0]['data'][]=round($v['纯质纸']);
  1258. }
  1259. $data=input('post.');
  1260. if(isset($data['dependence'])){
  1261. $dependence=$data['dependence'];
  1262. }else{
  1263. $dependence['item']['value']=date('Y',time());
  1264. }
  1265. $sy_yeardata = 0;
  1266. $cg_yeardata = 0;
  1267. if($dependence['item']['value'] == date('Y',time())){
  1268. $i=(int)$dependence['item']['value'];
  1269. $res1['categories'][]=$dependence['item']['value'];
  1270. for($i=0;$i<=11;$i++){
  1271. $cg_yeardata += $list['series'][0]['data'][$i];
  1272. $sy_yeardata += $list1['series'][0]['data'][$i];
  1273. }
  1274. $res1['series'][0]['name']='采购量';
  1275. $res1['series'][0]['data'][]=$cg_yeardata;
  1276. $res1['series'][1]['name']='使用量';
  1277. $res1['series'][1]['data'][]=$sy_yeardata;
  1278. }else{
  1279. $i=(int)$dependence['item']['value'];
  1280. $res1['categories'][]=$dependence['item']['value'];
  1281. $res1['series'][0]['name']='采购量';
  1282. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1283. $res1['series'][1]['name']='使用量';
  1284. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1285. }
  1286. $res['status']=0;
  1287. $res['msg']='';
  1288. $res['data']=$res1;
  1289. return json($res);
  1290. }
  1291. }
  1292. //每月各类纸张采购量、使用量-全灰板采购量
  1293. public function qhb(){
  1294. $result=$this->month_paperdun();
  1295. $result1= $this->tt12new();
  1296. if(empty($result) || empty($result1)) {
  1297. return json([
  1298. 'status' => 0,
  1299. 'msg' => '没有找到数据',
  1300. 'data' => [
  1301. 'categories' => [''],
  1302. 'series' => [
  1303. ['name' => '采购量', 'data' => [0]],
  1304. ['name' => '使用量', 'data' => [0]]
  1305. ]
  1306. ]
  1307. ]);
  1308. }else{
  1309. foreach($result as $k=>$v){
  1310. $list['categories'][]=$k;
  1311. $list['series'][0]['name']='全灰板';
  1312. $list['series'][0]['data'][]=round($v['全灰板']);
  1313. }
  1314. foreach($result1 as $k=>$v){
  1315. $list1['categories'][]=$k;
  1316. $list1['series'][0]['name']='全灰板';
  1317. $list1['series'][0]['data'][]=round($v['全灰板']);
  1318. }
  1319. $data=input('post.');
  1320. if(isset($data['dependence'])){
  1321. $dependence=$data['dependence'];
  1322. }else{
  1323. $dependence['item']['value']=date('Y',time());
  1324. }
  1325. $sy_yeardata = 0;
  1326. $cg_yeardata = 0;
  1327. if($dependence['item']['value'] == date('Y',time())){
  1328. $i=(int)$dependence['item']['value'];
  1329. $res1['categories'][]=$dependence['item']['value'];
  1330. for($i=0;$i<=11;$i++){
  1331. $cg_yeardata += $list['series'][0]['data'][$i];
  1332. $sy_yeardata += $list1['series'][0]['data'][$i];
  1333. }
  1334. $res1['series'][0]['name']='采购量';
  1335. $res1['series'][0]['data'][]=$cg_yeardata;
  1336. $res1['series'][1]['name']='使用量';
  1337. $res1['series'][1]['data'][]=$sy_yeardata;
  1338. }else{
  1339. $i=(int)$dependence['item']['value'];
  1340. $res1['categories'][]=$dependence['item']['value'];
  1341. $res1['series'][0]['name']='采购量';
  1342. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1343. $res1['series'][1]['name']='使用量';
  1344. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1345. }
  1346. $res['status']=0;
  1347. $res['msg']='';
  1348. $res['data']=$res1;
  1349. return json($res);
  1350. }
  1351. }
  1352. //每月各类纸张采购量、使用量-白卡纸采购量
  1353. public function bkz(){
  1354. $result=$this->month_paperdun();
  1355. $result1= $this->tt12new();
  1356. if(empty($result) || empty($result1)) {
  1357. return json([
  1358. 'status' => 0,
  1359. 'msg' => '没有找到数据',
  1360. 'data' => [
  1361. 'categories' => [''],
  1362. 'series' => [
  1363. ['name' => '采购量', 'data' => [0]],
  1364. ['name' => '使用量', 'data' => [0]]
  1365. ]
  1366. ]
  1367. ]);
  1368. }else{
  1369. foreach($result as $k=>$v){
  1370. $list['categories'][]=$k;
  1371. $list['series'][0]['name']='白卡纸';
  1372. $list['series'][0]['data'][]=round($v['白卡纸']);
  1373. }
  1374. foreach($result1 as $k=>$v){
  1375. $list1['categories'][]=$k;
  1376. $list1['series'][0]['name']='白卡纸';
  1377. $list1['series'][0]['data'][]=round($v['白卡纸']);
  1378. }
  1379. $data=input('post.');
  1380. if(isset($data['dependence'])){
  1381. $dependence=$data['dependence'];
  1382. }else{
  1383. $dependence['item']['value']=date('Y',time());
  1384. }
  1385. $sy_yeardata = 0;
  1386. $cg_yeardata = 0;
  1387. if($dependence['item']['value'] == date('Y',time())){
  1388. $i=(int)$dependence['item']['value'];
  1389. $res1['categories'][]=$dependence['item']['value'];
  1390. for($i=0;$i<=11;$i++){
  1391. $cg_yeardata += $list['series'][0]['data'][$i];
  1392. $sy_yeardata += $list1['series'][0]['data'][$i];
  1393. }
  1394. $res1['series'][0]['name']='采购量';
  1395. $res1['series'][0]['data'][]=$cg_yeardata;
  1396. $res1['series'][1]['name']='使用量';
  1397. $res1['series'][1]['data'][]=$sy_yeardata;
  1398. }else{
  1399. $i=(int)$dependence['item']['value'];
  1400. $res1['categories'][]=$dependence['item']['value'];
  1401. $res1['series'][0]['name']='采购量';
  1402. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1403. $res1['series'][1]['name']='使用量';
  1404. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1405. }
  1406. $res['status']=0;
  1407. $res['msg']='';
  1408. $res['data']=$res1;
  1409. return json($res);
  1410. }
  1411. }
  1412. //每月各类纸张采购量、使用量-轻型纸采购量
  1413. public function qxz(){
  1414. $result=$this->month_paperdun();
  1415. $result1= $this->tt12new();
  1416. if(empty($result) || empty($result1)) {
  1417. return json([
  1418. 'status' => 0,
  1419. 'msg' => '没有找到数据',
  1420. 'data' => [
  1421. 'categories' => [''],
  1422. 'series' => [
  1423. ['name' => '采购量', 'data' => [0]],
  1424. ['name' => '使用量', 'data' => [0]]
  1425. ]
  1426. ]
  1427. ]);
  1428. }else{
  1429. foreach($result as $k=>$v){
  1430. $list['categories'][]=$k;
  1431. $list['series'][0]['name']='轻型纸';
  1432. $list['series'][0]['data'][]=round($v['轻型纸']);
  1433. }
  1434. foreach($result1 as $k=>$v){
  1435. $list1['categories'][]=$k;
  1436. $list1['series'][0]['name']='轻型纸';
  1437. $list1['series'][0]['data'][]=round($v['轻型纸']);
  1438. }
  1439. $data=input('post.');
  1440. if(isset($data['dependence'])){
  1441. $dependence=$data['dependence'];
  1442. }else{
  1443. $dependence['item']['value']=date('Y',time());
  1444. }
  1445. $sy_yeardata = 0;
  1446. $cg_yeardata = 0;
  1447. if($dependence['item']['value'] == date('Y',time())){
  1448. $i=(int)$dependence['item']['value'];
  1449. $res1['categories'][]=$dependence['item']['value'];
  1450. for($i=0;$i<=11;$i++){
  1451. $cg_yeardata += $list['series'][0]['data'][$i];
  1452. $sy_yeardata += $list1['series'][0]['data'][$i];
  1453. }
  1454. $res1['series'][0]['name']='采购量';
  1455. $res1['series'][0]['data'][]=$cg_yeardata;
  1456. $res1['series'][1]['name']='使用量';
  1457. $res1['series'][1]['data'][]=$sy_yeardata;
  1458. }else{
  1459. $i=(int)$dependence['item']['value'];
  1460. $res1['categories'][]=$dependence['item']['value'];
  1461. $res1['series'][0]['name']='采购量';
  1462. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1463. $res1['series'][1]['name']='使用量';
  1464. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1465. }
  1466. $res['status']=0;
  1467. $res['msg']='';
  1468. $res['data']=$res1;
  1469. return json($res);
  1470. }
  1471. }
  1472. //每月各类纸张采购量、使用量-亚光双面铜版纸采购量
  1473. public function ygsmtb(){
  1474. $result=$this->month_paperdun();
  1475. $result1= $this->tt12new();
  1476. if(empty($result) || empty($result1)) {
  1477. return json([
  1478. 'status' => 0,
  1479. 'msg' => '没有找到数据',
  1480. 'data' => [
  1481. 'categories' => [''],
  1482. 'series' => [
  1483. ['name' => '采购量', 'data' => [0]],
  1484. ['name' => '使用量', 'data' => [0]]
  1485. ]
  1486. ]
  1487. ]);
  1488. }else{
  1489. foreach($result as $k=>$v){
  1490. $list['categories'][]=$k;
  1491. $list['series'][0]['name']='亚光双面铜版纸';
  1492. $list['series'][0]['data'][]=round($v['亚光双面铜版纸']);
  1493. }
  1494. foreach($result1 as $k=>$v){
  1495. $list1['categories'][]=$k;
  1496. $list1['series'][0]['name']='亚光双面铜版纸';
  1497. $list1['series'][0]['data'][]=round($v['亚光双面铜版纸']);
  1498. }
  1499. $data=input('post.');
  1500. if(isset($data['dependence'])){
  1501. $dependence=$data['dependence'];
  1502. }else{
  1503. $dependence['item']['value']=date('Y',time());
  1504. }
  1505. $sy_yeardata = 0;
  1506. $cg_yeardata = 0;
  1507. if($dependence['item']['value'] == date('Y',time())){
  1508. $i=(int)$dependence['item']['value'];
  1509. $res1['categories'][]=$dependence['item']['value'];
  1510. for($i=0;$i<=11;$i++){
  1511. $cg_yeardata += $list['series'][0]['data'][$i];
  1512. $sy_yeardata += $list1['series'][0]['data'][$i];
  1513. }
  1514. $res1['series'][0]['name']='采购量';
  1515. $res1['series'][0]['data'][]=$cg_yeardata;
  1516. $res1['series'][1]['name']='使用量';
  1517. $res1['series'][1]['data'][]=$sy_yeardata;
  1518. }else{
  1519. $i=(int)$dependence['item']['value'];
  1520. $res1['categories'][]=$dependence['item']['value'];
  1521. $res1['series'][0]['name']='采购量';
  1522. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1523. $res1['series'][1]['name']='使用量';
  1524. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1525. }
  1526. $res['status']=0;
  1527. $res['msg']='';
  1528. $res['data']=$res1;
  1529. return json($res);
  1530. }
  1531. }
  1532. //每月各类纸张采购量、使用量-轻涂纸采购量
  1533. public function qtz(){
  1534. $result=$this->month_paperdun();
  1535. $result1= $this->tt12new();
  1536. if(empty($result) || empty($result1)) {
  1537. return json([
  1538. 'status' => 0,
  1539. 'msg' => '没有找到数据',
  1540. 'data' => [
  1541. 'categories' => [''],
  1542. 'series' => [
  1543. ['name' => '采购量', 'data' => [0]],
  1544. ['name' => '使用量', 'data' => [0]]
  1545. ]
  1546. ]
  1547. ]);
  1548. }else{
  1549. foreach($result as $k=>$v){
  1550. $list['categories'][]=$k;
  1551. $list['series'][0]['name']='轻涂纸';
  1552. $list['series'][0]['data'][]=round($v['轻涂纸']);
  1553. }
  1554. foreach($result1 as $k=>$v){
  1555. $list1['categories'][]=$k;
  1556. $list1['series'][0]['name']='轻涂纸';
  1557. $list1['series'][0]['data'][]=round($v['轻涂纸']);
  1558. }
  1559. $data=input('post.');
  1560. if(isset($data['dependence'])){
  1561. $dependence=$data['dependence'];
  1562. }else{
  1563. $dependence['item']['value']=date('Y',time());
  1564. }
  1565. $sy_yeardata = 0;
  1566. $cg_yeardata = 0;
  1567. if($dependence['item']['value'] == date('Y',time())){
  1568. $i=(int)$dependence['item']['value'];
  1569. $res1['categories'][]=$dependence['item']['value'];
  1570. for($i=0;$i<=11;$i++){
  1571. $cg_yeardata += $list['series'][0]['data'][$i];
  1572. $sy_yeardata += $list1['series'][0]['data'][$i];
  1573. }
  1574. $res1['series'][0]['name']='采购量';
  1575. $res1['series'][0]['data'][]=$cg_yeardata;
  1576. $res1['series'][1]['name']='使用量';
  1577. $res1['series'][1]['data'][]=$sy_yeardata;
  1578. }else{
  1579. $i=(int)$dependence['item']['value'];
  1580. $res1['categories'][]=$dependence['item']['value'];
  1581. $res1['series'][0]['name']='采购量';
  1582. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1583. $res1['series'][1]['name']='使用量';
  1584. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1585. }
  1586. $res['status']=0;
  1587. $res['msg']='';
  1588. $res['data']=$res1;
  1589. return json($res);
  1590. }
  1591. }
  1592. //每月各类纸张采购量、使用量-彩画纸采购量
  1593. public function chz(){
  1594. $result=$this->month_paperdun();
  1595. $result1= $this->tt12new();
  1596. if(empty($result) || empty($result1)) {
  1597. return json([
  1598. 'status' => 0,
  1599. 'msg' => '没有找到数据',
  1600. 'data' => [
  1601. 'categories' => [''],
  1602. 'series' => [
  1603. ['name' => '采购量', 'data' => [0]],
  1604. ['name' => '使用量', 'data' => [0]]
  1605. ]
  1606. ]
  1607. ]);
  1608. }else{
  1609. foreach($result as $k=>$v){
  1610. $list['categories'][]=$k;
  1611. $list['series'][0]['name']='彩画纸';
  1612. $list['series'][0]['data'][]=round($v['彩画纸']);
  1613. }
  1614. foreach($result1 as $k=>$v){
  1615. $list1['categories'][]=$k;
  1616. $list1['series'][0]['name']='彩画纸';
  1617. $list1['series'][0]['data'][]=round($v['彩画纸']);
  1618. }
  1619. $data=input('post.');
  1620. if(isset($data['dependence'])){
  1621. $dependence=$data['dependence'];
  1622. }else{
  1623. $dependence['item']['value']=date('Y',time());
  1624. }
  1625. $sy_yeardata = 0;
  1626. $cg_yeardata = 0;
  1627. if($dependence['item']['value'] == date('Y',time())){
  1628. $i=(int)$dependence['item']['value'];
  1629. $res1['categories'][]=$dependence['item']['value'];
  1630. for($i=0;$i<=11;$i++){
  1631. $cg_yeardata += $list['series'][0]['data'][$i];
  1632. $sy_yeardata += $list1['series'][0]['data'][$i];
  1633. }
  1634. $res1['series'][0]['name']='采购量';
  1635. $res1['series'][0]['data'][]=$cg_yeardata;
  1636. $res1['series'][1]['name']='使用量';
  1637. $res1['series'][1]['data'][]=$sy_yeardata;
  1638. }else{
  1639. $i=(int)$dependence['item']['value'];
  1640. $res1['categories'][]=$dependence['item']['value'];
  1641. $res1['series'][0]['name']='采购量';
  1642. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1643. $res1['series'][1]['name']='使用量';
  1644. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1645. }
  1646. $res['status']=0;
  1647. $res['msg']='';
  1648. $res['data']=$res1;
  1649. return json($res);
  1650. }
  1651. }
  1652. //每月各类纸张采购量、使用量-特种纸采购量
  1653. public function tzz(){
  1654. $result=$this->month_paperdun();
  1655. $result1= $this->tt12new();
  1656. if(empty($result) || empty($result1)) {
  1657. return json([
  1658. 'status' => 0,
  1659. 'msg' => '没有找到数据',
  1660. 'data' => [
  1661. 'categories' => [''],
  1662. 'series' => [
  1663. ['name' => '采购量', 'data' => [0]],
  1664. ['name' => '使用量', 'data' => [0]]
  1665. ]
  1666. ]
  1667. ]);
  1668. }else{
  1669. foreach($result as $k=>$v){
  1670. $list['categories'][]=$k;
  1671. $list['series'][0]['name']='特种纸';
  1672. $list['series'][0]['data'][]=round($v['特种纸']);
  1673. }
  1674. foreach($result1 as $k=>$v){
  1675. $list1['categories'][]=$k;
  1676. $list1['series'][0]['name']='特种纸';
  1677. $list1['series'][0]['data'][]=round($v['特种纸']);
  1678. }
  1679. $data=input('post.');
  1680. if(isset($data['dependence'])){
  1681. $dependence=$data['dependence'];
  1682. }else{
  1683. $dependence['item']['value']=date('Y',time());
  1684. }
  1685. $sy_yeardata = 0;
  1686. $cg_yeardata = 0;
  1687. if($dependence['item']['value'] == date('Y',time())){
  1688. $i=(int)$dependence['item']['value'];
  1689. $res1['categories'][]=$dependence['item']['value'];
  1690. for($i=0;$i<=11;$i++){
  1691. $cg_yeardata += $list['series'][0]['data'][$i];
  1692. $sy_yeardata += $list1['series'][0]['data'][$i];
  1693. }
  1694. $res1['series'][0]['name']='采购量';
  1695. $res1['series'][0]['data'][]=$cg_yeardata;
  1696. $res1['series'][1]['name']='使用量';
  1697. $res1['series'][1]['data'][]=$sy_yeardata;
  1698. }else{
  1699. $i=(int)$dependence['item']['value'];
  1700. $res1['categories'][]=$dependence['item']['value'];
  1701. $res1['series'][0]['name']='采购量';
  1702. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1703. $res1['series'][1]['name']='使用量';
  1704. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1705. }
  1706. $res['status']=0;
  1707. $res['msg']='';
  1708. $res['data']=$res1;
  1709. return json($res);
  1710. }
  1711. }
  1712. //每月各类纸张采购量、使用量-本白双胶纸采购量
  1713. public function bbsj(){
  1714. $result=$this->month_paperdun();
  1715. $result1= $this->tt12new();
  1716. if(empty($result) || empty($result1)) {
  1717. return json([
  1718. 'status' => 0,
  1719. 'msg' => '没有找到数据',
  1720. 'data' => [
  1721. 'categories' => [''],
  1722. 'series' => [
  1723. ['name' => '采购量', 'data' => [0]],
  1724. ['name' => '使用量', 'data' => [0]]
  1725. ]
  1726. ]
  1727. ]);
  1728. }else{
  1729. foreach($result as $k=>$v){
  1730. $list['categories'][]=$k;
  1731. $list['series'][0]['name']='本白双胶纸';
  1732. $list['series'][0]['data'][]=round($v['本白双胶纸']);
  1733. }
  1734. foreach($result1 as $k=>$v){
  1735. $list1['categories'][]=$k;
  1736. $list1['series'][0]['name']='本白双胶纸';
  1737. $list1['series'][0]['data'][]=round($v['本白双胶纸']);
  1738. }
  1739. $data=input('post.');
  1740. if(isset($data['dependence'])){
  1741. $dependence=$data['dependence'];
  1742. }else{
  1743. $dependence['item']['value']=date('Y',time());
  1744. }
  1745. $sy_yeardata = 0;
  1746. $cg_yeardata = 0;
  1747. if($dependence['item']['value'] == date('Y',time())){
  1748. $i=(int)$dependence['item']['value'];
  1749. $res1['categories'][]=$dependence['item']['value'];
  1750. for($i=0;$i<=11;$i++){
  1751. $cg_yeardata += $list['series'][0]['data'][$i];
  1752. $sy_yeardata += $list1['series'][0]['data'][$i];
  1753. }
  1754. $res1['series'][0]['name']='采购量';
  1755. $res1['series'][0]['data'][]=$cg_yeardata;
  1756. $res1['series'][1]['name']='使用量';
  1757. $res1['series'][1]['data'][]=$sy_yeardata;
  1758. }else{
  1759. $i=(int)$dependence['item']['value'];
  1760. $res1['categories'][]=$dependence['item']['value'];
  1761. $res1['series'][0]['name']='采购量';
  1762. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1763. $res1['series'][1]['name']='使用量';
  1764. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1765. }
  1766. $res['status']=0;
  1767. $res['msg']='';
  1768. $res['data']=$res1;
  1769. return json($res);
  1770. }
  1771. }
  1772. //每月各类纸张采购量、使用量-有光双面铜版纸采购量
  1773. public function ygsm(){
  1774. $result=$this->month_paperdun();
  1775. $result1= $this->tt12new();
  1776. if(empty($result) || empty($result1)) {
  1777. return json([
  1778. 'status' => 0,
  1779. 'msg' => '没有找到数据',
  1780. 'data' => [
  1781. 'categories' => [''],
  1782. 'series' => [
  1783. ['name' => '采购量', 'data' => [0]],
  1784. ['name' => '使用量', 'data' => [0]]
  1785. ]
  1786. ]
  1787. ]);
  1788. }else{
  1789. foreach($result as $k=>$v){
  1790. $list['categories'][]=$k;
  1791. $list['series'][0]['name']='有光双面铜版纸';
  1792. $list['series'][0]['data'][]=round($v['有光双面铜版纸']);
  1793. }
  1794. foreach($result1 as $k=>$v){
  1795. $list1['categories'][]=$k;
  1796. $list1['series'][0]['name']='有光双面铜版纸';
  1797. $list1['series'][0]['data'][]=round($v['有光双面铜版纸']);
  1798. }
  1799. $data=input('post.');
  1800. if(isset($data['dependence'])){
  1801. $dependence=$data['dependence'];
  1802. }else{
  1803. $dependence['item']['value']=date('Y',time());
  1804. }
  1805. $sy_yeardata = 0;
  1806. $cg_yeardata = 0;
  1807. if($dependence['item']['value'] == date('Y',time())){
  1808. $i=(int)$dependence['item']['value'];
  1809. $res1['categories'][]=$dependence['item']['value'];
  1810. for($i=0;$i<=11;$i++){
  1811. $cg_yeardata += $list['series'][0]['data'][$i];
  1812. $sy_yeardata += $list1['series'][0]['data'][$i];
  1813. }
  1814. $res1['series'][0]['name']='采购量';
  1815. $res1['series'][0]['data'][]=$cg_yeardata;
  1816. $res1['series'][1]['name']='使用量';
  1817. $res1['series'][1]['data'][]=$sy_yeardata;
  1818. }else{
  1819. $i=(int)$dependence['item']['value'];
  1820. $res1['categories'][]=$dependence['item']['value'];
  1821. $res1['series'][0]['name']='采购量';
  1822. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1823. $res1['series'][1]['name']='使用量';
  1824. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1825. }
  1826. $res['status']=0;
  1827. $res['msg']='';
  1828. $res['data']=$res1;
  1829. return json($res);
  1830. }
  1831. }
  1832. //当年纸张前十供应商采购量及金额->接口调用(接口去掉了)
  1833. public function year_supplier(){
  1834. $redis = redis();
  1835. $list = json_decode($redis->get(md5('er_lst')),true);
  1836. $r_list = [];
  1837. //按照日期分类分组求和
  1838. foreach ($list as $item) {
  1839. $name = $item['公司'];
  1840. $key = md5($name);
  1841. $t = [];
  1842. $t['name'] = $name;
  1843. $t['number'] = floatval($item['namount']);//数量
  1844. $t['sumprice'] = floatval($item['含税金额']);//金额
  1845. $t['unit'] = trim($item['单位']);//单位
  1846. $t['nhss'] = $item['nhss'];//采购编号
  1847. $dweight = erp_price($t);
  1848. $dprice = $t['sumprice'];
  1849. if (isset($r_list[$key])) {
  1850. $r_list[$key]['name'] = $name;//
  1851. $r_list[$key]['dun'] += $dweight;//吨
  1852. $r_list[$key]['jine'] += $dprice;//金额
  1853. } else {
  1854. $r_list[$key]['name'] = $name;//
  1855. $r_list[$key]['dun'] = $dweight;//吨
  1856. $r_list[$key]['jine'] = $dprice;//金额
  1857. }
  1858. }
  1859. $sort_arr = [];//按金额
  1860. $sort_arr2 = [];//按吨
  1861. foreach($r_list as $key=>$value){
  1862. $sort_arr[$key] = $r_list[$key]['jine'];
  1863. $sort_arr2[$key] = $r_list[$key]['dun'];
  1864. }
  1865. //排序
  1866. array_multisort($sort_arr,SORT_DESC,$r_list);
  1867. //截取前10
  1868. $r_list = array_splice($r_list,0,10);
  1869. $r_list = array_values($r_list);
  1870. $result['columns']=[
  1871. ['name'=>'供应商','id'=>'name','width'=>'50','autoWrap'=>"true",'textAlign'=>'left'],
  1872. ['name'=>'总量(吨)','id'=>'dun','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  1873. ['name'=>'总金额(万元)','id'=>'jine','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  1874. ];
  1875. if (empty($r_list)) {
  1876. $r_list = [
  1877. ['name' => '', 'dun' => 0, 'jine' => 0]
  1878. ];
  1879. }
  1880. $delete = '有限公司';
  1881. foreach($r_list as $k=>$v){
  1882. if(strpos($v['name'],$delete)){
  1883. $v['name'] = substr_replace($v['name'],'',strpos($v['name'],$delete),strlen($delete));
  1884. }
  1885. $result['rows'][$k]['name']=$v['name'];
  1886. $result['rows'][$k]['dun']=round($v['dun'],2);
  1887. $result['rows'][$k]['jine']=round($v['jine']/10000,2);
  1888. }
  1889. $res['status']=0;
  1890. $res['msg']='';
  1891. $res['data']=$result;
  1892. return json($res);
  1893. }
  1894. //纸张库存量及金额->缓存调用【可删除】
  1895. public function Paper_inventory_amount_old(){
  1896. $redis = redis();
  1897. $redis_key = md5('Paper_inventory_amount');
  1898. $sql = "SELECT
  1899. ZZKC.类别,
  1900. CAST( Sum( ZZKC.数量(吨) ) AS DECIMAL ( 8, 2 ) ) AS '库存数量(吨)',
  1901. CAST( Sum( ZZKC.金额 ) / 10000 AS DECIMAL ( 8, 2 ) ) AS '金额(万元)'
  1902. FROM
  1903. (
  1904. SELECT
  1905. KC.cPaperCode,
  1906. KC.cPaperName,
  1907. CASE
  1908. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%轻型纸%' THEN
  1909. '轻型纸'
  1910. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%纯质纸' THEN
  1911. '纯质纸'
  1912. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%特种纸%' THEN
  1913. '特种纸'
  1914. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%书纸%' THEN
  1915. '书纸'
  1916. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%全木浆双胶纸%' THEN
  1917. '全木浆双胶纸'
  1918. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%米黄双胶纸' THEN
  1919. '米黄双胶纸' ELSE KC.czgmc
  1920. END 类别,
  1921. KC.cUnit,
  1922. KC.数量,
  1923. KC.数量(吨),
  1924. /* CW.单价,
  1925. CG.含税单价,*/
  1926. Cast( KC.数量 * COALESCE ( CW.单价, CG.含税单价, 0 ) AS DECIMAL ( 18, 2 ) ) 金额
  1927. FROM
  1928. (
  1929. SELECT
  1930. NN.cPaperCode,
  1931. NN.cPaperName,
  1932. NN.czgmc,
  1933. NN.cUnit,
  1934. Sum( nn.nAmount ) 数量,
  1935. Sum( nn.数量(吨) ) AS '数量(吨)'
  1936. FROM
  1937. (
  1938. SELECT
  1939. cPaperCode,
  1940. cPaperName,
  1941. cUnit,
  1942. Sum( nAmount ) AS nAmount,
  1943. dzzzgg.czgmc,
  1944. CASE
  1945. WHEN cunit = '公斤' THEN
  1946. Sum( nAmount ) / 1000
  1947. WHEN cunit = '令' THEN
  1948. ( CASE WHEN dzzzgg.nhss = 0 THEN Sum( nAmount ) / 20 ELSE Sum( nAmount ) / dzzzgg.nhss END )
  1949. WHEN cunit = '张' THEN
  1950. (
  1951. CASE
  1952. WHEN IFNULL( dzzzgg.nhss, 0 ) = 0 THEN
  1953. Sum( nAmount ) / 500 / 1.5 ELSE Sum( nAmount ) / 500 / dzzzgg.nhss
  1954. END
  1955. ) ELSE 0
  1956. END AS '数量(吨)'
  1957. FROM
  1958. (
  1959. SELECT
  1960. IFNULL( a.id, 0 ) AS id,
  1961. ttPlace.cPaperCode,
  1962. IFNULL( a.cBatchCode, '' ) AS cBatchCode,
  1963. ttPlace.id_place,
  1964. IFNULL( c.cbzdw, '' ) AS cUnit,
  1965. IFNULL( a.nAmount, 0 ) AS nAmount,
  1966. IFNULL( a.nNetAmount, 0 ) AS nNetAmount,
  1967. IFNULL( a.nAvailAmount, 0 ) AS nAvailAmount,
  1968. IFNULL( a.nLength, 0 ) AS nLength,
  1969. IFNULL( a.ID_mxcpck, 0 ) AS ID_mxcpck,
  1970. IFNULL( c.clb, '' ) AS cPaperType,
  1971. IFNULL(DATEDIFF(CURDATE(), b.dDate), 0) AS iStoreAge,
  1972. IFNULL( CASE b.iStatus WHEN 0 THEN '完好' WHEN 1 THEN '残破' WHEN 2 THEN '开裁' WHEN 3 THEN '换纸' END, '' ) AS cStatus,
  1973. IFNULL( b.cOwner, '' ) AS cOwner,
  1974. IFNULL( b.iExclusive, 0 ) AS iExclusive,
  1975. IFNULL( c.chj, '' ) AS cPaperName,
  1976. IFNULL( c.nkz, 0 ) AS nkz,
  1977. IFNULL( c.cgg, '' ) AS cgg,
  1978. c.ccd,
  1979. c.clb,
  1980. IFNULL( c.czgmc, '' ) AS czgmc,
  1981. c.nstate,
  1982. IFNULL( c.cOldSystemNumber, '' ) AS cOldSystemNumber,
  1983. IFNULL( c.nThickness, 0 ) AS nThickness,
  1984. IFNULL( d.cPlaceShowName, '' ) AS cPlaceName,
  1985. d.iRoleID,
  1986. IFNULL( d.cRoleName, '' ) AS cRoleName,
  1987. d.ckfmc,
  1988. d.ckfjc,
  1989. d.ikwxh,
  1990. d.ikwlx,
  1991. d.iForbid,
  1992. d.ikfsx,
  1993. d.iFlag,
  1994. d.iStoreForbid,
  1995. d.iProperty
  1996. FROM
  1997. (
  1998. SELECT
  1999. b.cPaperCode,
  2000. b.id_place
  2001. FROM
  2002. ( SELECT MAX( id ) AS id FROM ppDetailPlace GROUP BY cPaperCode, id_place ) AS a
  2003. INNER JOIN ppDetailPlace AS b ON b.id = a.id
  2004. ) AS ttPlace
  2005. LEFT OUTER JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  2006. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  2007. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  2008. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  2009. FROM dzkw AS a LEFT OUTER JOIN
  2010. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  2011. FROM dzStoreRole AS aa INNER JOIN
  2012. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  2013. FROM ppRole
  2014. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  2015. a.iForbid = 0 LEFT OUTER JOIN
  2016. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) AS d ON ttPlace.id_place = d.ID
  2017. LEFT OUTER JOIN dzzzgg AS c ON ttPlace.cPaperCode = c.cbh
  2018. LEFT OUTER JOIN (
  2019. SELECT
  2020. id,
  2021. cPaperCode,
  2022. cBatchCode,
  2023. id_Place,
  2024. cUnit,
  2025. nAmount,
  2026. nAmount AS nNetAmount,
  2027. nAvailAmount,
  2028. 0 AS nLength,
  2029. ID_mxcpck
  2030. FROM
  2031. ppSubstanceDetail UNION ALL
  2032. SELECT
  2033. id,
  2034. cpapercode,
  2035. cbatchcode,
  2036. id_Place,
  2037. cUnit,
  2038. namount,
  2039. namount - nBrokenAmount AS nNetAmount,
  2040. ( CASE WHEN iFlag = 0 THEN IFNULL( namount, 0 ) ELSE 0 END ) AS nAvailAmount,
  2041. nLength,
  2042. ID_mxcpck
  2043. FROM
  2044. ppSubstanceDetailRoll
  2045. ) AS a ON a.cPaperCode = ttPlace.cPaperCode
  2046. AND a.id_Place = ttPlace.id_place
  2047. LEFT OUTER JOIN ppBatchProp AS b ON a.cBatchCode = b.cBatchCode
  2048. AND a.cPaperCode = b.cPaperCode
  2049. ) kc
  2050. LEFT JOIN dzzzgg ON dzzzgg.cbh = kc.cPaperCode
  2051. WHERE
  2052. 1 = 1
  2053. AND nAmount <> 0
  2054. AND cOwner = '本厂'
  2055. GROUP BY
  2056. cPaperCode,
  2057. cPaperName,
  2058. dzzzgg.czgmc,
  2059. cUnit,
  2060. namount,
  2061. dzzzgg.nhss
  2062. ) NN
  2063. GROUP BY
  2064. NN.cPaperCode,
  2065. NN.czgmc,
  2066. NN.cPaperName,
  2067. NN.cUnit
  2068. ) KC
  2069. LEFT JOIN (
  2070. SELECT
  2071. a.cPeriod,
  2072. a.cPaperCode,
  2073. c.nOutPrice * 1.13 单价
  2074. FROM
  2075. ppAccountFinance a
  2076. LEFT OUTER JOIN ppAccountFinancePrice c ON a.cPeriod = c.cPeriod
  2077. AND a.cPaperCode = c.cPaperCode
  2078. AND a.iplant = c.iplant
  2079. WHERE
  2080. 1 = 1
  2081. AND a.cPeriod = ( SELECT Max( cPeriod ) FROM ppAccountFinance )
  2082. AND (
  2083. Abs( a.nBegAmount ) + Abs( a.nBegMoney ) + Abs( a.nInAmount ) + Abs( a.nInMoney ) + Abs( a.nOutAmount ) + Abs( a.nOutMoney ) + Abs( a.nEndAmount ) + Abs( a.nEndMoney ) <> 0
  2084. )
  2085. ) CW ON KC.cPaperCode = cw.cPaperCode
  2086. LEFT JOIN (
  2087. SELECT
  2088. ppInDetail.cmessagepaper,
  2089. Avg( F.nTaxPrice ) 含税单价
  2090. FROM
  2091. ppInDetail
  2092. LEFT JOIN ppInNoticeDetail F ON PPInDetail.cmessagecode = F.cbillcode
  2093. GROUP BY
  2094. ppInDetail.cmessagepaper
  2095. ) CG ON KC.cPaperCode = CG.cmessagepaper
  2096. ) ZZKC
  2097. GROUP BY
  2098. ZZKC.类别";
  2099. $result=Db::query($sql);
  2100. if ($result) {
  2101. $redis->set($redis_key, json_encode($result));
  2102. echo date("Y-m-d H:i:s").' 存进去了';
  2103. return $result;
  2104. }
  2105. }
  2106. //纸张库存量及金额->接口调用【可删除】
  2107. public function inventory_amount_old() {
  2108. $redis = redis();
  2109. $result = json_decode($redis->get(md5('Paper_inventory_amount')), true);
  2110. // 自定义排序函数:按照金额(万元)从大到小排序
  2111. usort($result, function($a, $b) {
  2112. if ($a['金额(万元)'] == $b['金额(万元)']) {
  2113. return 0;
  2114. }
  2115. return ($a['金额(万元)'] > $b['金额(万元)']) ? -1 : 1;
  2116. });
  2117. // echo "<pre>";
  2118. // print_r($result);
  2119. // echo "<pre>";
  2120. $new_result = [];
  2121. $new_result['columns'] = [
  2122. ['name' => '类别', 'id' => 'rank', 'width' => '35', 'color' => 'blue', 'autoWrap' => "true", 'textAlign' => 'left'],
  2123. ['name' => '库存数量(吨)', 'id' => 'kucun', 'width' => '35', 'color' => 'blue', 'autoWrap' => "true", 'textAlign' => 'left'],
  2124. ['name' => '金额(万元)', 'id' => 'kh', 'width' => '30', 'color' => 'red', 'autoWrap' => "true", 'textAlign' => 'left'],
  2125. ];
  2126. $new_result['rows'] = [];
  2127. foreach ($result as $key => $value) {
  2128. $new_result['rows'][$key]['rank'] = $value['类别'];
  2129. $new_result['rows'][$key]['kucun'] = $value['库存数量(吨)'];
  2130. $new_result['rows'][$key]['kh'] = $value['金额(万元)'];
  2131. }
  2132. $res['status'] = 0;
  2133. $res['msg'] = '';
  2134. $res['data'] = $new_result;
  2135. return json($res);
  2136. }
  2137. //纸张库存量及金额->缓存调用
  2138. public function Paper_inventory_amount(){
  2139. $redis = redis();
  2140. $redis_key = md5('Paper_inventory_amount');
  2141. $sql = "SELECT *
  2142. FROM (SELECT ZZKC.`类别`,
  2143. ZZKC.`库龄`,
  2144. CAST(SUM(ZZKC.`数量(吨)`) AS DECIMAL(8, 2)) AS `库存数量(吨)`,
  2145. CAST(SUM(ZZKC.`金额`) / 10000 AS DECIMAL(8, 2)) AS `金额(万元)`,
  2146. CASE WHEN ZZKC.库龄='六个月以内'THEN 2 ELSE 1 end 序号
  2147. FROM (SELECT KC.cPaperCode,
  2148. KC.cPaperName,
  2149. CASE
  2150. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%轻型纸%' THEN
  2151. '轻型纸'
  2152. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%纯质纸' THEN
  2153. '纯质纸'
  2154. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%特种纸%' THEN
  2155. '特种纸'
  2156. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%书纸%' THEN
  2157. '书纸'
  2158. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%全木浆双胶纸%' THEN
  2159. '全木浆双胶纸'
  2160. WHEN REPLACE ( KC.cPaperName, ' ', '' ) LIKE '%米黄双胶纸' THEN
  2161. '米黄双胶纸' ELSE KC.czgmc
  2162. END 类别,
  2163. KC.cUnit,
  2164. KC.数量,
  2165. KC.数量(吨),
  2166. KC.库龄,
  2167. /* CW.单价,
  2168. CG.含税单价,*/
  2169. Cast( KC.数量 * COALESCE ( CW.单价, CG.含税单价, 0 ) AS DECIMAL ( 18, 2 ) ) 金额
  2170. FROM (SELECT NN.cPaperCode,
  2171. NN.cPaperName,
  2172. NN.czgmc,
  2173. NN.cUnit,
  2174. NN.库龄,
  2175. Sum(nn.nAmount)数量,
  2176. Sum(nn.数量(吨))AS '数量(吨)'
  2177. FROM (SELECT cPaperCode,
  2178. cPaperName,
  2179. cUnit,
  2180. Sum(nAmount) AS nAmount,
  2181. dzzzgg.czgmc,
  2182. CASE
  2183. WHEN cunit = '公斤' THEN Sum(nAmount) / 1000
  2184. WHEN cunit = '令' THEN ( CASE
  2185. WHEN dzzzgg.nhss = 0 THEN Sum(nAmount) / 20
  2186. ELSE Sum(nAmount) / dzzzgg.nhss
  2187. END )
  2188. WHEN cunit = '张' THEN ( CASE
  2189. WHEN IFnull(dzzzgg.nhss, 0) = 0 THEN Sum(nAmount) / 500 / 1.5
  2190. ELSE Sum(nAmount) / 500 / dzzzgg.nhss
  2191. END )
  2192. ELSE 0
  2193. END AS '数量(吨)', iStoreAge,
  2194. CASE
  2195. WHEN iStoreAge >180 THEN'六个月以上'
  2196. ELSE '六个月以内'
  2197. END 库龄
  2198. FROM (
  2199. SELECT
  2200. IFNULL( a.id, 0 ) AS id,
  2201. ttPlace.cPaperCode,
  2202. IFNULL( a.cBatchCode, '' ) AS cBatchCode,
  2203. ttPlace.id_place,
  2204. IFNULL( c.cbzdw, '' ) AS cUnit,
  2205. IFNULL( a.nAmount, 0 ) AS nAmount,
  2206. IFNULL( a.nNetAmount, 0 ) AS nNetAmount,
  2207. IFNULL( a.nAvailAmount, 0 ) AS nAvailAmount,
  2208. IFNULL( a.nLength, 0 ) AS nLength,
  2209. IFNULL( a.ID_mxcpck, 0 ) AS ID_mxcpck,
  2210. IFNULL( c.clb, '' ) AS cPaperType,
  2211. IFNULL(DATEDIFF(CURDATE(), b.dDate), 0) AS iStoreAge,
  2212. IFNULL( CASE b.iStatus WHEN 0 THEN '完好' WHEN 1 THEN '残破' WHEN 2 THEN '开裁' WHEN 3 THEN '换纸' END, '' ) AS cStatus,
  2213. IFNULL( b.cOwner, '' ) AS cOwner,
  2214. IFNULL( b.iExclusive, 0 ) AS iExclusive,
  2215. IFNULL( c.chj, '' ) AS cPaperName,
  2216. IFNULL( c.nkz, 0 ) AS nkz,
  2217. IFNULL( c.cgg, '' ) AS cgg,
  2218. c.ccd,
  2219. c.clb,
  2220. IFNULL( c.czgmc, '' ) AS czgmc,
  2221. c.nstate,
  2222. IFNULL( c.cOldSystemNumber, '' ) AS cOldSystemNumber,
  2223. IFNULL( c.nThickness, 0 ) AS nThickness,
  2224. IFNULL( d.cPlaceShowName, '' ) AS cPlaceName,
  2225. d.iRoleID,
  2226. IFNULL( d.cRoleName, '' ) AS cRoleName,
  2227. d.ckfmc,
  2228. d.ckfjc,
  2229. d.ikwxh,
  2230. d.ikwlx,
  2231. d.iForbid,
  2232. d.ikfsx,
  2233. d.iFlag,
  2234. d.iStoreForbid,
  2235. d.iProperty
  2236. FROM
  2237. (
  2238. SELECT
  2239. b.cPaperCode,
  2240. b.id_place
  2241. FROM
  2242. ( SELECT MAX( id ) AS id FROM ppDetailPlace GROUP BY cPaperCode, id_place ) AS a
  2243. INNER JOIN ppDetailPlace AS b ON b.id = a.id
  2244. ) AS ttPlace
  2245. LEFT OUTER JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  2246. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  2247. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  2248. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  2249. FROM dzkw AS a LEFT OUTER JOIN
  2250. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  2251. FROM dzStoreRole AS aa INNER JOIN
  2252. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  2253. FROM ppRole
  2254. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  2255. a.iForbid = 0 LEFT OUTER JOIN
  2256. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) AS d ON ttPlace.id_place = d.ID
  2257. LEFT OUTER JOIN dzzzgg AS c ON ttPlace.cPaperCode = c.cbh
  2258. LEFT OUTER JOIN (
  2259. SELECT
  2260. id,
  2261. cPaperCode,
  2262. cBatchCode,
  2263. id_Place,
  2264. cUnit,
  2265. nAmount,
  2266. nAmount AS nNetAmount,
  2267. nAvailAmount,
  2268. 0 AS nLength,
  2269. ID_mxcpck
  2270. FROM
  2271. ppSubstanceDetail UNION ALL
  2272. SELECT
  2273. id,
  2274. cpapercode,
  2275. cbatchcode,
  2276. id_Place,
  2277. cUnit,
  2278. namount,
  2279. namount - nBrokenAmount AS nNetAmount,
  2280. ( CASE WHEN iFlag = 0 THEN IFNULL( namount, 0 ) ELSE 0 END ) AS nAvailAmount,
  2281. nLength,
  2282. ID_mxcpck
  2283. FROM
  2284. ppSubstanceDetailRoll
  2285. ) AS a ON a.cPaperCode = ttPlace.cPaperCode
  2286. AND a.id_Place = ttPlace.id_place
  2287. LEFT OUTER JOIN ppBatchProp AS b ON a.cBatchCode = b.cBatchCode
  2288. AND a.cPaperCode = b.cPaperCode
  2289. ) kc
  2290. LEFT JOIN dzzzgg
  2291. ON dzzzgg.cbh = kc.cPaperCode
  2292. WHERE 1 = 1
  2293. AND nAmount <> 0
  2294. AND cOwner = '本厂'
  2295. GROUP BY cPaperCode,
  2296. cPaperName,
  2297. dzzzgg.czgmc,
  2298. cUnit,iStoreAge,
  2299. namount,
  2300. dzzzgg.nhss) NN
  2301. GROUP BY NN.cPaperCode,
  2302. NN.czgmc,
  2303. NN.cPaperName,NN.库龄,
  2304. NN.cUnit)KC
  2305. LEFT JOIN (SELECT a.cPeriod,
  2306. a.cPaperCode,
  2307. c.nOutPrice * 1.13 单价
  2308. FROM ppAccountFinance a
  2309. LEFT OUTER JOIN ppAccountFinancePrice c
  2310. ON a.cPeriod = c.cPeriod
  2311. AND a.cPaperCode = c.cPaperCode
  2312. AND a.iplant = c.iplant
  2313. WHERE 1 = 1
  2314. AND a.cPeriod = (SELECT Max(cPeriod)
  2315. FROM ppAccountFinance)
  2316. AND ( Abs(a.nBegAmount) + Abs(a.nBegMoney)
  2317. + Abs(a.nInAmount) + Abs(a.nInMoney)
  2318. + Abs(a.nOutAmount) + Abs(a.nOutMoney)
  2319. + Abs(a.nEndAmount) + Abs(a.nEndMoney) <> 0 ))CW
  2320. ON KC.cPaperCode = cw.cPaperCode
  2321. LEFT JOIN (SELECT ppInDetail.cmessagepaper,
  2322. Avg(F.nTaxPrice) 含税单价
  2323. FROM ppInDetail
  2324. LEFT JOIN ppInNoticeDetail F
  2325. ON PPInDetail.cmessagecode = F.cbillcode
  2326. GROUP BY ppInDetail.cmessagepaper)CG
  2327. ON KC.cPaperCode = CG.cmessagepaper)ZZKC
  2328. GROUP BY ZZKC.`类别`, ZZKC.`库龄`
  2329. )HZ
  2330. ORDER BY HZ.`序号`, HZ.`金额(万元)` DESC;";
  2331. $result=Db::query($sql);
  2332. if ($result) {
  2333. $redis->set($redis_key, json_encode($result));
  2334. echo date("Y-m-d H:i:s").' 存进去了';
  2335. return $result;
  2336. }
  2337. }
  2338. //纸张库存量及金额->接口调用
  2339. public function inventory_amount() {
  2340. $redis = redis(); // 假设已有redis()连接方法
  2341. $jsonData = $redis->get(md5('Paper_inventory_amount')); // 获取并处理数据
  2342. $data = json_decode($jsonData, true);
  2343. if (!$data) {
  2344. return json([
  2345. 'status' => 0,
  2346. 'msg' => '没有找到数据',
  2347. 'data' => [
  2348. 'columns' => [],
  2349. 'rows' => []
  2350. ]
  2351. ]);
  2352. }
  2353. $sortedData = ['六个月以上' => [], '六个月以内' => []];
  2354. foreach ($data as $item) {
  2355. if (isset($sortedData[$item['库龄']])) {
  2356. $sortedData[$item['库龄']][] = $item;
  2357. }
  2358. }
  2359. // 对两个分类进行排序
  2360. foreach ($sortedData as $key => $items) {
  2361. usort($sortedData[$key], function ($a, $b) {
  2362. return $b['库存数量(吨)'] - $a['库存数量(吨)'];
  2363. });
  2364. }
  2365. // 合并排序后的数据
  2366. $finalData = array_merge($sortedData['六个月以上'], $sortedData['六个月以内']);
  2367. // 构造响应数据
  2368. $response = [
  2369. 'columns' => [
  2370. ['name' => '类别', 'id' => 'category', 'width' => '35', 'color' => 'blue', 'autoWrap' => "true", 'textAlign' => 'left'],
  2371. ['name' => '库存数量(吨)', 'id' => 'amount', 'width' => '30', 'color' => 'blue', 'autoWrap' => "true", 'textAlign' => 'left'],
  2372. ['name' => '金额(万元)', 'id' => 'kh', 'width' => '28', 'color' => 'red', 'autoWrap' => "true", 'textAlign' => 'left'],
  2373. ['name' => '库龄', 'id' => 'kl', 'width' => '34', 'color' => 'red', 'autoWrap' => "true", 'textAlign' => 'left'],
  2374. // 其他列定义...
  2375. ],
  2376. 'rows' => []
  2377. ];
  2378. $totalQuantityOverSixMonths = 0;
  2379. $totalAmountOverSixMonths = 0;
  2380. $totalQuantityUnderSixMonths = 0;
  2381. $totalAmountUnderSixMonths = 0;
  2382. foreach ($finalData as $item) {
  2383. if ($item['库龄'] === '六个月以上') {
  2384. $totalQuantityOverSixMonths += $item['库存数量(吨)'];
  2385. $totalAmountOverSixMonths += $item['金额(万元)'];
  2386. } elseif ($item['库龄'] === '六个月以内') {
  2387. $totalQuantityUnderSixMonths += $item['库存数量(吨)'];
  2388. $totalAmountUnderSixMonths += $item['金额(万元)'];
  2389. }
  2390. }
  2391. // 首先将“六个月以内”的总计数据放在数组最前面
  2392. array_unshift($finalData, [
  2393. '类别' => '合计',
  2394. '库龄' => '六个月以内',
  2395. '库存数量(吨)' => round($totalQuantityUnderSixMonths,2),
  2396. '金额(万元)' => round($totalAmountUnderSixMonths,2),
  2397. ]);
  2398. // 然后将“六个月以上”的总计数据放在“六个月以内”之后(现在数组的最前面)
  2399. array_unshift($finalData, [
  2400. '类别' => '合计',
  2401. '库龄' => '六个月以上',
  2402. '库存数量(吨)' => round($totalQuantityOverSixMonths,2),
  2403. '金额(万元)' => round($totalAmountOverSixMonths,2),
  2404. ]);
  2405. // echo "<pre>";
  2406. // print_r($finalData);
  2407. // echo "</pre>";
  2408. // die;
  2409. foreach ($finalData as $item) {
  2410. $response['rows'][] = [
  2411. 'category' => $item['类别'],
  2412. 'amount' => $item['库存数量(吨)'],
  2413. 'kh' => $item['金额(万元)'],
  2414. 'kl' => $item['库龄'],
  2415. // 其他字段...
  2416. ];
  2417. }
  2418. //echo "<pre>";
  2419. //print_r($response);
  2420. //echo "<pre>";
  2421. return json(['status' => 0, 'msg' => '', 'data' => $response]);
  2422. }
  2423. //当年主要纸张采购量及金额(吨)->接口调用
  2424. public function year_supplier_procurement(){
  2425. $redis = redis();
  2426. $list = json_decode($redis->get(md5('er_lst')),true);
  2427. if(empty($list)) {
  2428. return json([
  2429. 'status' => 0,
  2430. 'msg' => '没有找到数据',
  2431. 'data' => [
  2432. 'categories' => ['无'],
  2433. 'series' => [
  2434. ['name' => '采购量', 'data' => [0]],
  2435. ['name' => '金额', 'data' => [0]]
  2436. ]
  2437. ]
  2438. ]);
  2439. }
  2440. $mainCate = getcateinfo();
  2441. foreach ($list as $item)
  2442. {
  2443. $catename = getCateName($item['czgmc']);
  2444. //是否属于主要纸张
  2445. if(!in_array($catename,$mainCate)){
  2446. continue;
  2447. }
  2448. $key = md5($catename);
  2449. $t = [];
  2450. $t['catename'] = $catename;//纸张名称
  2451. $t['dweight'] = $item['数量(吨)'];//克重
  2452. $t['sumprice'] = $item['含税金额'];//金额
  2453. $dweight = $t['dweight'];
  2454. $dprice = $t['sumprice'] ;
  2455. if (isset($r_list[$key])) {
  2456. $r_list[$key]['catename'] = $catename;//
  2457. $r_list[$key]['dun'] += $dweight;//吨
  2458. $r_list[$key]['jine'] += $dprice;//金额
  2459. } else {
  2460. $r_list[$key]['catename'] = $catename;//
  2461. $r_list[$key]['dun'] = $dweight;//吨
  2462. $r_list[$key]['jine'] = $dprice;//金额
  2463. }
  2464. }
  2465. //按吨位排序
  2466. $sort_arr = [];
  2467. foreach($r_list as $k=>$value){
  2468. $sort_arr[$k] = $r_list[$k]['dun'];
  2469. }
  2470. //排序
  2471. array_multisort($sort_arr,SORT_DESC,$r_list);
  2472. //截取前10
  2473. $r_list = array_splice($r_list,0,10);
  2474. $r_list = array_values($r_list);
  2475. // echo "全年各类纸张采购量";echo "<pre>";print_r($r_list);echo "</pre>";die;
  2476. $result =[];
  2477. foreach($r_list as $k=>$v){
  2478. $result['categories'][$k] =$v['catename'];
  2479. $result['series'][0]['name']='采购量';
  2480. $result['series'][1]['name']='金额';
  2481. $result['series'][0]['data'][$k]=round($v['dun']);
  2482. $result['series'][1]['data'][$k]=round($v['jine']/10000);
  2483. }
  2484. $res['status']=0;
  2485. $res['msg']='';
  2486. $res['data']=$result;
  2487. return json($res);
  2488. }
  2489. /**
  2490. * 第二屏第二页
  2491. */
  2492. //2.3-2每月各类纸张采购均价(第二页)->接口调用
  2493. public function month_paperjie(){
  2494. $redis = redis();
  2495. $filteredList = json_decode($redis->get(md5('q_er_lst')),true);
  2496. // 要排除的 cbillcode 值
  2497. $excludedCbillcodes = ['PRK050886', 'PRK052233'];
  2498. // 使用 array_filter 进行过滤
  2499. $list = array_filter($filteredList, function ($item) use ($excludedCbillcodes) {
  2500. return !in_array($item['cbillcode'], $excludedCbillcodes);
  2501. });
  2502. // halt($list);
  2503. $mainCate = getcateinfo();
  2504. foreach ($list as $item){
  2505. $catename = getCateName($item['czgmc']);
  2506. //是否属于主要纸张
  2507. if(!in_array($catename,$mainCate)){
  2508. continue;
  2509. }
  2510. $month = date('Ym',strtotime($item['darrival'] ));
  2511. $key = md5($catename.$month);
  2512. $t = [];
  2513. $t['dtime'] = $month;//月份
  2514. $t['catename'] = $catename;//纸张名称
  2515. $t['dweight'] = floatval($item['数量(吨)']);//
  2516. $t['sumprice'] = floatval($item['含税金额']);//金额
  2517. $dweight = $t['dweight'];
  2518. $dprice = $t['sumprice'] ;
  2519. if (isset($r_list[$key])) {
  2520. $r_list[$key]['catename'] = $catename;//
  2521. $r_list[$key]['month'] = $month;//
  2522. $r_list[$key]['dun'] += $dweight;//吨
  2523. $r_list[$key]['jine'] += $dprice;//金额
  2524. } else {
  2525. $r_list[$key]['catename'] = $catename;//
  2526. $r_list[$key]['month'] = $month;//
  2527. $r_list[$key]['dun'] = $dweight;//吨
  2528. $r_list[$key]['jine'] = $dprice;//金额
  2529. }
  2530. }
  2531. $c_list = [];
  2532. foreach($r_list as $item){
  2533. // $c_list[$item['month']][$item['catename']] = round($item['jine']/$item['dun']);
  2534. $c_list[$item['month']][$item['catename']] = floor($item['jine']/$item['dun']);
  2535. }
  2536. //补全分类
  2537. foreach ($c_list as &$val) {
  2538. $val = bucateinfo($val);
  2539. arsort($val);
  2540. }
  2541. return $c_list;
  2542. }
  2543. //每月各类纸张采购均价-高白双胶
  2544. public function gbsjjun(){
  2545. $name = '高白双胶纸';
  2546. $result = $this->month_paperjie();
  2547. // echo "<pre>";print_r($result);echo "<pre>";die;
  2548. $list = [];
  2549. $currentYear = date("Y"); // 当前年份
  2550. $currentMonth = date("m"); // 当前月份
  2551. $previousYear = $currentYear - 1; // 上一年
  2552. $currentdata=$result[$currentYear.'01'];
  2553. $currentdata=0;
  2554. $previousdata=0;
  2555. foreach ($result as $k=>$v){
  2556. if($k<$currentYear.'01'){
  2557. if($v[$name]==0){
  2558. $currentdata=$currentdata;
  2559. }else{
  2560. $currentdata=$v[$name];
  2561. }
  2562. }
  2563. if($k<$previousYear.'01'){
  2564. if($v[$name]==0){
  2565. $previousdata= $previousdata;
  2566. }else{
  2567. $previousdata=$v[$name];
  2568. }
  2569. }
  2570. }
  2571. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2572. foreach ($result as $k=>$v){
  2573. if($k>=$currentYear.'01'){
  2574. if($v[$name]==0){
  2575. $list['series'][1]['name'] = $currentYear . '年';
  2576. $list['series'][1]['data'][] =$currentdata;
  2577. }else{
  2578. $list['series'][1]['name'] = $currentYear . '年';
  2579. $list['series'][1]['data'][] =$v[$name];
  2580. $currentdata=$v[$name];
  2581. }
  2582. }elseif ($k>=$previousYear.'01'){
  2583. if($v[$name]==0){
  2584. $list['series'][0]['name'] = $previousYear . '年';
  2585. $list['series'][0]['data'][] =$previousdata;
  2586. }else{
  2587. $list['series'][0]['name'] = $previousYear . '年';
  2588. $list['series'][0]['data'][] =$v[$name];
  2589. $previousdata=$v[$name];
  2590. }
  2591. }
  2592. }
  2593. $res['status'] = 0;
  2594. $res['msg'] = '';
  2595. $res['data'] = $list;
  2596. return json($res);
  2597. }
  2598. //每月各类纸张采购均价-纯雅纸均价
  2599. public function cyzjun(){
  2600. $name = '纯雅纸';
  2601. $result = $this->month_paperjie();
  2602. // echo "<pre>";print_r($result);echo "<pre>";die;
  2603. $list = [];
  2604. $currentYear = date("Y"); // 当前年份
  2605. $currentMonth = date("m"); // 当前月份
  2606. $previousYear = $currentYear - 1; // 上一年
  2607. $currentdata=$result[$currentYear.'01'];
  2608. $currentdata=0;
  2609. $previousdata=0;
  2610. foreach ($result as $k=>$v){
  2611. if($k<$currentYear.'01'){
  2612. if($v[$name]==0){
  2613. $currentdata=$currentdata;
  2614. }else{
  2615. $currentdata=$v[$name];
  2616. }
  2617. }
  2618. if($k<$previousYear.'01'){
  2619. if($v[$name]==0){
  2620. $previousdata= $previousdata;
  2621. }else{
  2622. $previousdata=$v[$name];
  2623. }
  2624. }
  2625. }
  2626. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2627. foreach ($result as $k=>$v){
  2628. if($k>=$currentYear.'01'){
  2629. if($v[$name]==0){
  2630. $list['series'][1]['name'] = $currentYear . '年';
  2631. $list['series'][1]['data'][] =$currentdata;
  2632. }else{
  2633. $list['series'][1]['name'] = $currentYear . '年';
  2634. $list['series'][1]['data'][] =$v[$name];
  2635. $currentdata=$v[$name];
  2636. }
  2637. }elseif ($k>=$previousYear.'01'){
  2638. if($v[$name]==0){
  2639. $list['series'][0]['name'] = $previousYear . '年';
  2640. $list['series'][0]['data'][] =$previousdata;
  2641. }else{
  2642. $list['series'][0]['name'] = $previousYear . '年';
  2643. $list['series'][0]['data'][] =$v[$name];
  2644. $previousdata=$v[$name];
  2645. }
  2646. }
  2647. }
  2648. $res['status'] = 0;
  2649. $res['msg'] = '';
  2650. $res['data'] = $list;
  2651. return json($res);
  2652. // $list = [];
  2653. // $currentYear = date("Y"); // 当前年份
  2654. // $currentMonth = date("m"); // 当前月份
  2655. // $previousYear = $currentYear - 1; // 上一年
  2656. // // 初始化类别
  2657. // $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2658. // // 初始化上一年的数据数组,填充0
  2659. // $list['series'][0]['name'] = $previousYear . '年';
  2660. // $list['series'][0]['data'] = array_fill(0, 12, 0);
  2661. // // 当前年份的数据数组初始化到当前月份
  2662. // $list['series'][1]['name'] = $currentYear . '年';
  2663. // $list['series'][1]['data'] = array_fill(0, (int)$currentMonth, 0); // 注意这里是 currentMonth,不是 currentMonth - 1
  2664. // $prevdata = 0; // 初始化前一个数据点的值
  2665. //
  2666. // // echo "<pre>";print_r($result);echo "<pre>";
  2667. // foreach ($result as $k => $v) {
  2668. // $year = substr($k, 0, 4);
  2669. // $month = substr($k, 4, 2);
  2670. // if ($v[$name] != 0) {
  2671. // $prevdata = $v[$name];
  2672. // }
  2673. // if ($year == $currentYear && $month <= $currentMonth) {
  2674. // // 如果是当前年份,并且月份小于等于当前月份,则赋值
  2675. // $index = (int)$month - 1;
  2676. // $list['series'][1]['data'][$index] = $v[$name];
  2677. // } elseif ($year == $previousYear) {
  2678. // // 如果是上一年的数据,直接赋值
  2679. // $index = (int)$month - 1;
  2680. // $list['series'][0]['data'][$index] = $v[$name];
  2681. //
  2682. // // 如果上一年的某个月份为0,则获取上个月的数据
  2683. // if ($v[$name] == 0 && $prevdata != 0) {
  2684. // $list['series'][0]['data'][$index] = $prevdata;
  2685. // }
  2686. //
  2687. // // 如果上一年的某个月份为0,则获取上个月的数据
  2688. // if ($index === 0 && $prevdata !== 0) {
  2689. // $list['series'][0]['data'][$index] = $prevdata;
  2690. // }
  2691. // }
  2692. // }
  2693. // // echo "<pre>";print_r($list);echo "<pre>";die;
  2694. }
  2695. //每月各类纸张采购均价-纯质纸均价
  2696. public function czzjun(){
  2697. $name = '纯质纸';
  2698. $result = $this->month_paperjie();
  2699. // echo "<pre>";print_r($result);echo "<pre>";die;
  2700. $list = [];
  2701. $currentYear = date("Y"); // 当前年份
  2702. $currentMonth = date("m"); // 当前月份
  2703. $previousYear = $currentYear - 1; // 上一年
  2704. $currentdata=$result[$currentYear.'01'];
  2705. $currentdata=0;
  2706. $previousdata=0;
  2707. foreach ($result as $k=>$v){
  2708. if($k<$currentYear.'01'){
  2709. if($v[$name]==0){
  2710. $currentdata=$currentdata;
  2711. }else{
  2712. $currentdata=$v[$name];
  2713. }
  2714. }
  2715. if($k<$previousYear.'01'){
  2716. if($v[$name]==0){
  2717. $previousdata= $previousdata;
  2718. }else{
  2719. $previousdata=$v[$name];
  2720. }
  2721. }
  2722. }
  2723. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2724. foreach ($result as $k=>$v){
  2725. if($k>=$currentYear.'01'){
  2726. if($v[$name]==0){
  2727. $list['series'][1]['name'] = $currentYear . '年';
  2728. $list['series'][1]['data'][] =$currentdata;
  2729. }else{
  2730. $list['series'][1]['name'] = $currentYear . '年';
  2731. $list['series'][1]['data'][] =$v[$name];
  2732. $currentdata=$v[$name];
  2733. }
  2734. }elseif ($k>=$previousYear.'01'){
  2735. if($v[$name]==0){
  2736. $list['series'][0]['name'] = $previousYear . '年';
  2737. $list['series'][0]['data'][] =$previousdata;
  2738. }else{
  2739. $list['series'][0]['name'] = $previousYear . '年';
  2740. $list['series'][0]['data'][] =$v[$name];
  2741. $previousdata=$v[$name];
  2742. }
  2743. }
  2744. }
  2745. $res['status'] = 0;
  2746. $res['msg'] = '';
  2747. $res['data'] = $list;
  2748. return json($res);
  2749. }
  2750. //每月各类纸张采购均价-全灰板均价
  2751. public function qhbjun(){
  2752. $name = '全灰板';
  2753. $result = $this->month_paperjie();
  2754. // echo "<pre>";print_r($result);echo "<pre>";die;
  2755. $list = [];
  2756. $currentYear = date("Y"); // 当前年份
  2757. $currentMonth = date("m"); // 当前月份
  2758. $previousYear = $currentYear - 1; // 上一年
  2759. $currentdata=$result[$currentYear.'01'];
  2760. $currentdata=0;
  2761. $previousdata=0;
  2762. foreach ($result as $k=>$v){
  2763. if($k<$currentYear.'01'){
  2764. if($v[$name]==0){
  2765. $currentdata=$currentdata;
  2766. }else{
  2767. $currentdata=$v[$name];
  2768. }
  2769. }
  2770. if($k<$previousYear.'01'){
  2771. if($v[$name]==0){
  2772. $previousdata= $previousdata;
  2773. }else{
  2774. $previousdata=$v[$name];
  2775. }
  2776. }
  2777. }
  2778. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2779. foreach ($result as $k=>$v){
  2780. if($k>=$currentYear.'01'){
  2781. if($v[$name]==0){
  2782. $list['series'][1]['name'] = $currentYear . '年';
  2783. $list['series'][1]['data'][] =$currentdata;
  2784. }else{
  2785. $list['series'][1]['name'] = $currentYear . '年';
  2786. $list['series'][1]['data'][] =$v[$name];
  2787. $currentdata=$v[$name];
  2788. }
  2789. }elseif ($k>=$previousYear.'01'){
  2790. if($v[$name]==0){
  2791. $list['series'][0]['name'] = $previousYear . '年';
  2792. $list['series'][0]['data'][] =$previousdata;
  2793. }else{
  2794. $list['series'][0]['name'] = $previousYear . '年';
  2795. $list['series'][0]['data'][] =$v[$name];
  2796. $previousdata=$v[$name];
  2797. }
  2798. }
  2799. }
  2800. $res['status'] = 0;
  2801. $res['msg'] = '';
  2802. $res['data'] = $list;
  2803. return json($res);
  2804. }
  2805. //每月各类纸张采购均价-白卡纸均价
  2806. public function bkzjun(){
  2807. $name = '白卡纸';
  2808. $result = $this->month_paperjie();
  2809. // echo "<pre>";print_r($result);echo "<pre>";die;
  2810. $list = [];
  2811. $currentYear = date("Y"); // 当前年份
  2812. $currentMonth = date("m"); // 当前月份
  2813. $previousYear = $currentYear - 1; // 上一年
  2814. $currentdata=$result[$currentYear.'01'];
  2815. $currentdata=0;
  2816. $previousdata=0;
  2817. foreach ($result as $k=>$v){
  2818. if($k<$currentYear.'01'){
  2819. if($v[$name]==0){
  2820. $currentdata=$currentdata;
  2821. }else{
  2822. $currentdata=$v[$name];
  2823. }
  2824. }
  2825. if($k<$previousYear.'01'){
  2826. if($v[$name]==0){
  2827. $previousdata= $previousdata;
  2828. }else{
  2829. $previousdata=$v[$name];
  2830. }
  2831. }
  2832. }
  2833. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2834. foreach ($result as $k=>$v){
  2835. if($k>=$currentYear.'01'){
  2836. if($v[$name]==0){
  2837. $list['series'][1]['name'] = $currentYear . '年';
  2838. $list['series'][1]['data'][] =$currentdata;
  2839. }else{
  2840. $list['series'][1]['name'] = $currentYear . '年';
  2841. $list['series'][1]['data'][] =$v[$name];
  2842. $currentdata=$v[$name];
  2843. }
  2844. }elseif ($k>=$previousYear.'01'){
  2845. if($v[$name]==0){
  2846. $list['series'][0]['name'] = $previousYear . '年';
  2847. $list['series'][0]['data'][] =$previousdata;
  2848. }else{
  2849. $list['series'][0]['name'] = $previousYear . '年';
  2850. $list['series'][0]['data'][] =$v[$name];
  2851. $previousdata=$v[$name];
  2852. }
  2853. }
  2854. }
  2855. $res['status'] = 0;
  2856. $res['msg'] = '';
  2857. $res['data'] = $list;
  2858. return json($res);
  2859. }
  2860. //每月各类纸张采购均价-轻型纸均价
  2861. public function qxzjun(){
  2862. $name = '轻型纸';
  2863. $result = $this->month_paperjie();
  2864. // echo "<pre>";print_r($result);echo "<pre>";die;
  2865. $list = [];
  2866. $currentYear = date("Y"); // 当前年份
  2867. $currentMonth = date("m"); // 当前月份
  2868. $previousYear = $currentYear - 1; // 上一年
  2869. $currentdata=$result[$currentYear.'01'];
  2870. $currentdata=0;
  2871. $previousdata=0;
  2872. foreach ($result as $k=>$v){
  2873. if($k<$currentYear.'01'){
  2874. if($v[$name]==0){
  2875. $currentdata=$currentdata;
  2876. }else{
  2877. $currentdata=$v[$name];
  2878. }
  2879. }
  2880. if($k<$previousYear.'01'){
  2881. if($v[$name]==0){
  2882. $previousdata= $previousdata;
  2883. }else{
  2884. $previousdata=$v[$name];
  2885. }
  2886. }
  2887. }
  2888. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2889. foreach ($result as $k=>$v){
  2890. if($k>=$currentYear.'01'){
  2891. if($v[$name]==0){
  2892. $list['series'][1]['name'] = $currentYear . '年';
  2893. $list['series'][1]['data'][] =$currentdata;
  2894. }else{
  2895. $list['series'][1]['name'] = $currentYear . '年';
  2896. $list['series'][1]['data'][] =$v[$name];
  2897. $currentdata=$v[$name];
  2898. }
  2899. }elseif ($k>=$previousYear.'01'){
  2900. if($v[$name]==0){
  2901. $list['series'][0]['name'] = $previousYear . '年';
  2902. $list['series'][0]['data'][] =$previousdata;
  2903. }else{
  2904. $list['series'][0]['name'] = $previousYear . '年';
  2905. $list['series'][0]['data'][] =$v[$name];
  2906. $previousdata=$v[$name];
  2907. }
  2908. }
  2909. }
  2910. $res['status'] = 0;
  2911. $res['msg'] = '';
  2912. $res['data'] = $list;
  2913. return json($res);
  2914. }
  2915. //每月各类纸张采购均价-亚光双面铜版纸均价
  2916. public function ygsmtbjun(){
  2917. $name = '亚光双面铜版纸';
  2918. $result = $this->month_paperjie();
  2919. // echo "<pre>";print_r($result);echo "<pre>";die;
  2920. $list = [];
  2921. $currentYear = date("Y"); // 当前年份
  2922. $currentMonth = date("m"); // 当前月份
  2923. $previousYear = $currentYear - 1; // 上一年
  2924. $currentdata=$result[$currentYear.'01'];
  2925. $currentdata=0;
  2926. $previousdata=0;
  2927. foreach ($result as $k=>$v){
  2928. if($k<$currentYear.'01'){
  2929. if($v[$name]==0){
  2930. $currentdata=$currentdata;
  2931. }else{
  2932. $currentdata=$v[$name];
  2933. }
  2934. }
  2935. if($k<$previousYear.'01'){
  2936. if($v[$name]==0){
  2937. $previousdata= $previousdata;
  2938. }else{
  2939. $previousdata=$v[$name];
  2940. }
  2941. }
  2942. }
  2943. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2944. foreach ($result as $k=>$v){
  2945. if($k>=$currentYear.'01'){
  2946. if($v[$name]==0){
  2947. $list['series'][1]['name'] = $currentYear . '年';
  2948. $list['series'][1]['data'][] =$currentdata;
  2949. }else{
  2950. $list['series'][1]['name'] = $currentYear . '年';
  2951. $list['series'][1]['data'][] =$v[$name];
  2952. $currentdata=$v[$name];
  2953. }
  2954. }elseif ($k>=$previousYear.'01'){
  2955. if($v[$name]==0){
  2956. $list['series'][0]['name'] = $previousYear . '年';
  2957. $list['series'][0]['data'][] =$previousdata;
  2958. }else{
  2959. $list['series'][0]['name'] = $previousYear . '年';
  2960. $list['series'][0]['data'][] =$v[$name];
  2961. $previousdata=$v[$name];
  2962. }
  2963. }
  2964. }
  2965. $res['status'] = 0;
  2966. $res['msg'] = '';
  2967. $res['data'] = $list;
  2968. return json($res);
  2969. }
  2970. //每月各类纸张采购均价-轻涂纸均价
  2971. public function qtzjun(){
  2972. $name = '轻涂纸';
  2973. $result = $this->month_paperjie();
  2974. // echo "<pre>";print_r($result);echo "<pre>";die;
  2975. $list = [];
  2976. $currentYear = date("Y"); // 当前年份
  2977. $currentMonth = date("m"); // 当前月份
  2978. $previousYear = $currentYear - 1; // 上一年
  2979. $currentdata=$result[$currentYear.'01'];
  2980. $currentdata=0;
  2981. $previousdata=0;
  2982. foreach ($result as $k=>$v){
  2983. if($k<$currentYear.'01'){
  2984. if($v[$name]==0){
  2985. $currentdata=$currentdata;
  2986. }else{
  2987. $currentdata=$v[$name];
  2988. }
  2989. }
  2990. if($k<$previousYear.'01'){
  2991. if($v[$name]==0){
  2992. $previousdata= $previousdata;
  2993. }else{
  2994. $previousdata=$v[$name];
  2995. }
  2996. }
  2997. }
  2998. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  2999. foreach ($result as $k=>$v){
  3000. if($k>=$currentYear.'01'){
  3001. if($v[$name]==0){
  3002. $list['series'][1]['name'] = $currentYear . '年';
  3003. $list['series'][1]['data'][] =$currentdata;
  3004. }else{
  3005. $list['series'][1]['name'] = $currentYear . '年';
  3006. $list['series'][1]['data'][] =$v[$name];
  3007. $currentdata=$v[$name];
  3008. }
  3009. }elseif ($k>=$previousYear.'01'){
  3010. if($v[$name]==0){
  3011. $list['series'][0]['name'] = $previousYear . '年';
  3012. $list['series'][0]['data'][] =$previousdata;
  3013. }else{
  3014. $list['series'][0]['name'] = $previousYear . '年';
  3015. $list['series'][0]['data'][] =$v[$name];
  3016. $previousdata=$v[$name];
  3017. }
  3018. }
  3019. }
  3020. $res['status'] = 0;
  3021. $res['msg'] = '';
  3022. $res['data'] = $list;
  3023. return json($res);
  3024. }
  3025. //每月各类纸张采购均价-彩画纸均价
  3026. public function chzjun(){
  3027. $name = '彩画纸';
  3028. $result = $this->month_paperjie();
  3029. // echo "<pre>";print_r($result);echo "<pre>";die;
  3030. $list = [];
  3031. $currentYear = date("Y"); // 当前年份
  3032. $currentMonth = date("m"); // 当前月份
  3033. $previousYear = $currentYear - 1; // 上一年
  3034. $currentdata=$result[$currentYear.'01'];
  3035. $currentdata=0;
  3036. $previousdata=0;
  3037. foreach ($result as $k=>$v){
  3038. if($k<$currentYear.'01'){
  3039. if($v[$name]==0){
  3040. $currentdata=$currentdata;
  3041. }else{
  3042. $currentdata=$v[$name];
  3043. }
  3044. }
  3045. if($k<$previousYear.'01'){
  3046. if($v[$name]==0){
  3047. $previousdata= $previousdata;
  3048. }else{
  3049. $previousdata=$v[$name];
  3050. }
  3051. }
  3052. }
  3053. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  3054. foreach ($result as $k=>$v){
  3055. if($k>=$currentYear.'01'){
  3056. if($v[$name]==0){
  3057. $list['series'][1]['name'] = $currentYear . '年';
  3058. $list['series'][1]['data'][] =$currentdata;
  3059. }else{
  3060. $list['series'][1]['name'] = $currentYear . '年';
  3061. $list['series'][1]['data'][] =$v[$name];
  3062. $currentdata=$v[$name];
  3063. }
  3064. }elseif ($k>=$previousYear.'01'){
  3065. if($v[$name]==0){
  3066. $list['series'][0]['name'] = $previousYear . '年';
  3067. $list['series'][0]['data'][] =$previousdata;
  3068. }else{
  3069. $list['series'][0]['name'] = $previousYear . '年';
  3070. $list['series'][0]['data'][] =$v[$name];
  3071. $previousdata=$v[$name];
  3072. }
  3073. }
  3074. }
  3075. $res['status'] = 0;
  3076. $res['msg'] = '';
  3077. $res['data'] = $list;
  3078. return json($res);
  3079. }
  3080. //每月各类纸张采购均价-特种纸均价
  3081. public function tzzjun(){
  3082. $name = '特种纸';
  3083. $result = $this->month_paperjie();
  3084. // echo "<pre>";print_r($result);echo "<pre>";die;
  3085. $list = [];
  3086. $currentYear = date("Y"); // 当前年份
  3087. $currentMonth = date("m"); // 当前月份
  3088. $previousYear = $currentYear - 1; // 上一年
  3089. $currentdata=$result[$currentYear.'01'];
  3090. $currentdata=0;
  3091. $previousdata=0;
  3092. foreach ($result as $k=>$v){
  3093. if($k<$currentYear.'01'){
  3094. if($v[$name]==0){
  3095. $currentdata=$currentdata;
  3096. }else{
  3097. $currentdata=$v[$name];
  3098. }
  3099. }
  3100. if($k<$previousYear.'01'){
  3101. if($v[$name]==0){
  3102. $previousdata= $previousdata;
  3103. }else{
  3104. $previousdata=$v[$name];
  3105. }
  3106. }
  3107. }
  3108. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  3109. foreach ($result as $k=>$v){
  3110. if($k>=$currentYear.'01'){
  3111. if($v[$name]==0){
  3112. $list['series'][1]['name'] = $currentYear . '年';
  3113. $list['series'][1]['data'][] =$currentdata;
  3114. }else{
  3115. $list['series'][1]['name'] = $currentYear . '年';
  3116. $list['series'][1]['data'][] =$v[$name];
  3117. $currentdata=$v[$name];
  3118. }
  3119. }elseif ($k>=$previousYear.'01'){
  3120. if($v[$name]==0){
  3121. $list['series'][0]['name'] = $previousYear . '年';
  3122. $list['series'][0]['data'][] =$previousdata;
  3123. }else{
  3124. $list['series'][0]['name'] = $previousYear . '年';
  3125. $list['series'][0]['data'][] =$v[$name];
  3126. $previousdata=$v[$name];
  3127. }
  3128. }
  3129. }
  3130. $res['status'] = 0;
  3131. $res['msg'] = '';
  3132. $res['data'] = $list;
  3133. return json($res);
  3134. }
  3135. //每月各类纸张采购均价-本白双胶纸均价
  3136. public function bbsjjun(){
  3137. $name = '本白双胶纸';
  3138. $result = $this->month_paperjie();
  3139. // echo "<pre>";print_r($result);echo "<pre>";die;
  3140. $list = [];
  3141. $currentYear = date("Y"); // 当前年份
  3142. $currentMonth = date("m"); // 当前月份
  3143. $previousYear = $currentYear - 1; // 上一年
  3144. $currentdata=$result[$currentYear.'01'];
  3145. $currentdata=0;
  3146. $previousdata=0;
  3147. foreach ($result as $k=>$v){
  3148. if($k<$currentYear.'01'){
  3149. if($v[$name]==0){
  3150. $currentdata=$currentdata;
  3151. }else{
  3152. $currentdata=$v[$name];
  3153. }
  3154. }
  3155. if($k<$previousYear.'01'){
  3156. if($v[$name]==0){
  3157. $previousdata= $previousdata;
  3158. }else{
  3159. $previousdata=$v[$name];
  3160. }
  3161. }
  3162. }
  3163. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  3164. foreach ($result as $k=>$v){
  3165. if($k>=$currentYear.'01'){
  3166. if($v[$name]==0){
  3167. $list['series'][1]['name'] = $currentYear . '年';
  3168. $list['series'][1]['data'][] =$currentdata;
  3169. }else{
  3170. $list['series'][1]['name'] = $currentYear . '年';
  3171. $list['series'][1]['data'][] =$v[$name];
  3172. $currentdata=$v[$name];
  3173. }
  3174. }elseif ($k>=$previousYear.'01'){
  3175. if($v[$name]==0){
  3176. $list['series'][0]['name'] = $previousYear . '年';
  3177. $list['series'][0]['data'][] =$previousdata;
  3178. }else{
  3179. $list['series'][0]['name'] = $previousYear . '年';
  3180. $list['series'][0]['data'][] =$v[$name];
  3181. $previousdata=$v[$name];
  3182. }
  3183. }
  3184. }
  3185. $res['status'] = 0;
  3186. $res['msg'] = '';
  3187. $res['data'] = $list;
  3188. return json($res);
  3189. }
  3190. //每月各类纸张采购均价-有光双面铜版纸均价
  3191. public function ygsmtjun(){
  3192. $name = '有光双面铜版纸';
  3193. $result = $this->month_paperjie();
  3194. // echo "<pre>";print_r($result);echo "<pre>";die;
  3195. $list = [];
  3196. $currentYear = date("Y"); // 当前年份
  3197. $currentMonth = date("m"); // 当前月份
  3198. $previousYear = $currentYear - 1; // 上一年
  3199. $currentdata=$result[$currentYear.'01'];
  3200. $currentdata=0;
  3201. $previousdata=0;
  3202. foreach ($result as $k=>$v){
  3203. if($k<$currentYear.'01'){
  3204. if($v[$name]==0){
  3205. $currentdata=$currentdata;
  3206. }else{
  3207. $currentdata=$v[$name];
  3208. }
  3209. }
  3210. if($k<$previousYear.'01'){
  3211. if($v[$name]==0){
  3212. $previousdata= $previousdata;
  3213. }else{
  3214. $previousdata=$v[$name];
  3215. }
  3216. }
  3217. }
  3218. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  3219. foreach ($result as $k=>$v){
  3220. if($k>=$currentYear.'01'){
  3221. if($v[$name]==0){
  3222. $list['series'][1]['name'] = $currentYear . '年';
  3223. $list['series'][1]['data'][] =$currentdata;
  3224. }else{
  3225. $list['series'][1]['name'] = $currentYear . '年';
  3226. $list['series'][1]['data'][] =$v[$name];
  3227. $currentdata=$v[$name];
  3228. }
  3229. }elseif ($k>=$previousYear.'01'){
  3230. if($v[$name]==0){
  3231. $list['series'][0]['name'] = $previousYear . '年';
  3232. $list['series'][0]['data'][] =$previousdata;
  3233. }else{
  3234. $list['series'][0]['name'] = $previousYear . '年';
  3235. $list['series'][0]['data'][] =$v[$name];
  3236. $previousdata=$v[$name];
  3237. }
  3238. }
  3239. }
  3240. $res['status'] = 0;
  3241. $res['msg'] = '';
  3242. $res['data'] = $list;
  3243. return json($res);
  3244. }
  3245. /**
  3246. * 三、库存情况
  3247. *
  3248. * 表说明
  3249. * ppin->库存表
  3250. * ppindetail->库存详情表
  3251. * dzzzgg->纸张规格表
  3252. * 表的关联
  3253. * ppin.cbillcode = ppindetail.cbillcode
  3254. * ppindetail.cpcode = dzzzgg.cpcode
  3255. * 字段说明
  3256. * ppin.darrival 时间
  3257. * ppin.cowner 本厂->厂料 其他代表各出版社
  3258. * ppindetail.namount 数量
  3259. * ppindetail.cpname 名称(关联纸张规格表,进行分类)
  3260. * ppindetail.cunit 单位(令、张、公斤)
  3261. *令(令数/顿折令(dzzzgg.nhss)) = 公斤
  3262. *张(张数/500/顿折令(dzzzgg.nhss)) = 公斤
  3263. * dzzzgg.czgmc 纸张名称分类
  3264. * dzzzgg.chj 纸张详情名称
  3265. */
  3266. // 【可删除掉】
  3267. public function tt3new_old(){
  3268. //链接定义 Redis
  3269. $redis = redis();
  3270. $redis_key = md5('tt3new');
  3271. //超过180天以上总量
  3272. $sql = "SELECT *
  3273. FROM (SELECT NN.cOwner 货主,
  3274. NN.库龄,
  3275. ROUND(SUM(NN.数量(吨)), 2) 数量(吨)
  3276. FROM (SELECT
  3277. cPlaceName,
  3278. cPaperCode,
  3279. cPaperName,
  3280. ID_Place,
  3281. cRoleName,
  3282. cBatchCode,
  3283. cUnit,
  3284. SUM(nAmount) AS nAmount,
  3285. CASE
  3286. WHEN cunit = '公斤' THEN SUM(nAmount) / 1000
  3287. WHEN cunit = '令' THEN
  3288. CASE
  3289. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 20
  3290. ELSE SUM(nAmount) / dzzzgg.nhss
  3291. END
  3292. WHEN cunit = '张' THEN
  3293. CASE
  3294. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 500 / 1.5
  3295. ELSE SUM(nAmount) / 500 / dzzzgg.nhss
  3296. END
  3297. ELSE 0
  3298. END AS '数量(吨)',
  3299. SUM(nNetAmount) AS nNetAmount,
  3300. CASE
  3301. WHEN cPaperType = '卷筒' AND nAmount <> 0 THEN COUNT(CASE WHEN nAmount = 0 THEN NULL ELSE cPaperCode END)
  3302. ELSE 0
  3303. END AS iCount,
  3304. iStoreAge,
  3305. CASE
  3306. WHEN cowner = '本厂' THEN
  3307. CASE
  3308. WHEN iStoreAge > 180 THEN '六个月以上'
  3309. ELSE '六个月以内'
  3310. END
  3311. ELSE ' '
  3312. END AS 库龄,
  3313. cStatus,
  3314. cOwner,
  3315. cPaperType,
  3316. dzzzgg.nhss
  3317. FROM
  3318. (SELECT
  3319. IFNULL( a.id, 0 ) AS id,
  3320. ttPlace.cPaperCode,
  3321. IFNULL( a.cBatchCode, '' ) AS cBatchCode,
  3322. ttPlace.id_place,
  3323. IFNULL( c.cbzdw, '' ) AS cUnit,
  3324. IFNULL( a.nAmount, 0 ) AS nAmount,
  3325. IFNULL( a.nNetAmount, 0 ) AS nNetAmount,
  3326. IFNULL( a.nAvailAmount, 0 ) AS nAvailAmount,
  3327. IFNULL( a.nLength, 0 ) AS nLength,
  3328. IFNULL( a.ID_mxcpck, 0 ) AS ID_mxcpck,
  3329. IFNULL( c.clb, '' ) AS cPaperType,
  3330. IFNULL( DATEDIFF( NOW( ), b.dDate ), 0 ) AS iStoreAge,
  3331. IFNULL( CASE b.iStatus WHEN 0 THEN '完好' WHEN 1 THEN '残破' WHEN 2 THEN '开裁' WHEN 3 THEN '换纸' END, '' ) AS cStatus,
  3332. IFNULL( b.cOwner, '' ) AS cOwner,
  3333. IFNULL( b.iExclusive, 0 ) AS iExclusive,
  3334. IFNULL( c.chj, '' ) AS cPaperName,
  3335. IFNULL( c.nkz, 0 ) AS nkz,
  3336. IFNULL( c.cgg, '' ) AS cgg,
  3337. c.ccd,
  3338. c.clb,
  3339. IFNULL( c.czgmc, '' ) AS czgmc,
  3340. c.nstate,
  3341. IFNULL( c.cOldSystemNumber, '' ) AS cOldSystemNumber,
  3342. IFNULL( c.nThickness, 0 ) AS nThickness,
  3343. IFNULL( d.cPlaceShowName, '' ) AS cPlaceName,
  3344. d.iRoleID,
  3345. IFNULL( d.cRoleName, '' ) AS cRoleName,
  3346. d.ckfmc,
  3347. d.ckfjc,
  3348. d.ikwxh,
  3349. d.ikwlx,
  3350. d.iForbid,
  3351. d.ikfsx,
  3352. d.iFlag,
  3353. d.iStoreForbid,
  3354. d.iProperty
  3355. FROM
  3356. (
  3357. SELECT
  3358. b.cPaperCode,
  3359. b.id_place
  3360. FROM
  3361. ( SELECT MAX( id ) AS id FROM ppDetailPlace GROUP BY cPaperCode, id_place ) AS a
  3362. INNER JOIN ppDetailPlace AS b ON b.id = a.id
  3363. ) AS ttPlace
  3364. LEFT OUTER JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  3365. c.ckfjc + '/' + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  3366. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  3367. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  3368. FROM dzkw AS a LEFT OUTER JOIN
  3369. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  3370. FROM dzStoreRole AS aa INNER JOIN
  3371. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  3372. FROM ppRole
  3373. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  3374. a.iForbid = 0 LEFT OUTER JOIN
  3375. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) AS d ON ttPlace.id_place = d.ID
  3376. LEFT OUTER JOIN dzzzgg AS c ON ttPlace.cPaperCode = c.cbh
  3377. LEFT OUTER JOIN (
  3378. SELECT
  3379. id,
  3380. cPaperCode,
  3381. cBatchCode,
  3382. id_Place,
  3383. cUnit,
  3384. nAmount,
  3385. nAmount AS nNetAmount,
  3386. nAvailAmount,
  3387. 0 AS nLength,
  3388. ID_mxcpck
  3389. FROM
  3390. ppSubstanceDetail UNION ALL
  3391. SELECT
  3392. id,
  3393. cpapercode,
  3394. cbatchcode,
  3395. id_Place,
  3396. cUnit,
  3397. namount,
  3398. namount - nBrokenAmount AS nNetAmount,
  3399. ( CASE WHEN iFlag = 0 THEN IFNULL( namount, 0 ) ELSE 0 END ) AS nAvailAmount,
  3400. nLength,
  3401. ID_mxcpck
  3402. FROM
  3403. ppSubstanceDetailRoll
  3404. ) AS a ON a.cPaperCode = ttPlace.cPaperCode
  3405. AND a.id_Place = ttPlace.id_place
  3406. LEFT OUTER JOIN ppBatchProp AS b ON a.cBatchCode = b.cBatchCode
  3407. AND a.cPaperCode = b.cPaperCode) kc
  3408. LEFT JOIN dzzzgg ON dzzzgg.cbh = kc.cPaperCode
  3409. WHERE
  3410. 1 = 1
  3411. -- AND cRoleName LIKE '%卷筒纸库管%'
  3412. AND nAmount <> 0
  3413. -- AND cOwner = '求是杂志社'
  3414. -- AND cPaperCode ='J128078072033'
  3415. GROUP BY
  3416. cPaperName,
  3417. cPaperCode,
  3418. ID_Place,
  3419. cPlaceName,
  3420. cRoleName,
  3421. cBatchCode,
  3422. cUnit,
  3423. iStoreAge,
  3424. cStatus,
  3425. cOwner,
  3426. cPaperType,
  3427. namount,
  3428. dzzzgg.nhss) NN
  3429. GROUP BY NN.cOwner,
  3430. NN.库龄)KC
  3431. ORDER BY CASE
  3432. WHEN KC.库龄 = '六个月以上' THEN 1
  3433. WHEN KC.库龄 = '六个月以内' THEN 2
  3434. ELSE 3
  3435. END,
  3436. KC.数量(吨) DESC";
  3437. $list = Db::query($sql);
  3438. $list = array_splice($list,0,10);
  3439. //将查询结果存入 Redis 缓存中
  3440. $redis->set($redis_key, json_encode($list));
  3441. return json($list);
  3442. }
  3443. public function inventorydgz_old(){
  3444. $redis = redis();
  3445. $result = json_decode($redis->get(md5('tt3new')),true);
  3446. if (empty($result)) {
  3447. // 返回一个包含默认字段但数据为空的数组
  3448. return json([
  3449. 'status' => 0,
  3450. 'msg' => '没有找到数据',
  3451. 'data' => [
  3452. 'columns' => [
  3453. ['name'=>'货主','id'=>'cOwnerName','width'=>'40','autoWrap'=>"true",'textAlign'=>'left'],
  3454. ['name'=>'库龄','id'=>'year','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  3455. ['name'=>'数量(吨)','id'=>'nAmount','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  3456. ],
  3457. 'rows' => [
  3458. ['cOwnerName' => '', 'year' => '', 'nAmount' => '']
  3459. ]
  3460. ]
  3461. ]);
  3462. }
  3463. $list['columns']=[
  3464. ['name'=>'货主','id'=>'cOwnerName','width'=>'42','autoWrap'=>"true",'textAlign'=>'left'],
  3465. ['name'=>'库龄','id'=>'year','width'=>'23','autoWrap'=>"true",'textAlign'=>'left'],
  3466. ['name'=>'数量(吨)','id'=>'nAmount','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  3467. ];
  3468. $i=0;
  3469. $delete = '有限公司';
  3470. foreach($result as $v){
  3471. if(strpos($v['货主'],$delete)){
  3472. $v['货主'] = substr_replace($v['货主'],'',strpos($v['货主'],$delete),strlen($delete));
  3473. }
  3474. $list['rows'][$i]['cOwnerName']=$v['货主'];
  3475. $list['rows'][$i]['year']=$v['库龄'];
  3476. $list['rows'][$i]['nAmount']=round($v['数量(吨)'],2);
  3477. $i++;
  3478. }
  3479. $res['status']=0;
  3480. $res['msg']='';
  3481. $res['data']=$list;
  3482. return json($res);
  3483. }
  3484. //纸张库存情况->缓存调用
  3485. public function tt3new(){
  3486. //链接定义 Redis
  3487. $redis = redis();
  3488. $redis_key = md5('tt3new');
  3489. //超过180天以上总量
  3490. $sql = "SELECT *
  3491. FROM (SELECT NN.cOwner 货主,
  3492. NN.库龄,
  3493. ROUND(SUM(NN.数量(吨)), 2) 数量(吨),
  3494. CASE WHEN NN.库龄='六个月以内'THEN 2 ELSE 1 end 序号
  3495. FROM (SELECT cPlaceName,
  3496. cPaperCode,
  3497. cPaperName,
  3498. ID_Place,
  3499. cRoleName,
  3500. cBatchCode,
  3501. cUnit,
  3502. Sum(nAmount) AS nAmount,
  3503. CASE
  3504. WHEN cunit = '公斤' THEN SUM(nAmount) / 1000
  3505. WHEN cunit = '令' THEN
  3506. CASE
  3507. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 20
  3508. ELSE SUM(nAmount) / dzzzgg.nhss
  3509. END
  3510. WHEN cunit = '张' THEN
  3511. CASE
  3512. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 500 / 1.5
  3513. ELSE SUM(nAmount) / 500 / dzzzgg.nhss
  3514. END
  3515. ELSE 0
  3516. END AS '数量(吨)',
  3517. Sum(nNetAmount) nNetAmount,
  3518. CASE cPaperType
  3519. WHEN '卷筒' THEN Count(CASE
  3520. WHEN nAmount = 0 THEN NULL
  3521. ELSE cPaperCode
  3522. END)
  3523. ELSE 0
  3524. END AS iCount,
  3525. CASE
  3526. WHEN iStoreAge >180 THEN'六个月以上'
  3527. ELSE '六个月以内'
  3528. END 库龄,
  3529. cStatus,
  3530. cOwner,
  3531. cPaperType,
  3532. dzzzgg.nhss
  3533. FROM ((SELECT
  3534. IFNULL( a.id, 0 ) AS id,
  3535. ttPlace.cPaperCode,
  3536. IFNULL( a.cBatchCode, '' ) AS cBatchCode,
  3537. ttPlace.id_place,
  3538. IFNULL( c.cbzdw, '' ) AS cUnit,
  3539. IFNULL( a.nAmount, 0 ) AS nAmount,
  3540. IFNULL( a.nNetAmount, 0 ) AS nNetAmount,
  3541. IFNULL( a.nAvailAmount, 0 ) AS nAvailAmount,
  3542. IFNULL( a.nLength, 0 ) AS nLength,
  3543. IFNULL( a.ID_mxcpck, 0 ) AS ID_mxcpck,
  3544. IFNULL( c.clb, '' ) AS cPaperType,
  3545. IFNULL( DATEDIFF( NOW( ), b.dDate ), 0 ) AS iStoreAge,
  3546. IFNULL( CASE b.iStatus WHEN 0 THEN '完好' WHEN 1 THEN '残破' WHEN 2 THEN '开裁' WHEN 3 THEN '换纸' END, '' ) AS cStatus,
  3547. IFNULL( b.cOwner, '' ) AS cOwner,
  3548. IFNULL( b.iExclusive, 0 ) AS iExclusive,
  3549. IFNULL( c.chj, '' ) AS cPaperName,
  3550. IFNULL( c.nkz, 0 ) AS nkz,
  3551. IFNULL( c.cgg, '' ) AS cgg,
  3552. c.ccd,
  3553. c.clb,
  3554. IFNULL( c.czgmc, '' ) AS czgmc,
  3555. c.nstate,
  3556. IFNULL( c.cOldSystemNumber, '' ) AS cOldSystemNumber,
  3557. IFNULL( c.nThickness, 0 ) AS nThickness,
  3558. IFNULL( d.cPlaceShowName, '' ) AS cPlaceName,
  3559. d.iRoleID,
  3560. IFNULL( d.cRoleName, '' ) AS cRoleName,
  3561. d.ckfmc,
  3562. d.ckfjc,
  3563. d.ikwxh,
  3564. d.ikwlx,
  3565. d.iForbid,
  3566. d.ikfsx,
  3567. d.iFlag,
  3568. d.iStoreForbid,
  3569. d.iProperty
  3570. FROM
  3571. (
  3572. SELECT
  3573. b.cPaperCode,
  3574. b.id_place
  3575. FROM
  3576. ( SELECT MAX( id ) AS id FROM ppDetailPlace GROUP BY cPaperCode, id_place ) AS a
  3577. INNER JOIN ppDetailPlace AS b ON b.id = a.id
  3578. ) AS ttPlace
  3579. LEFT OUTER JOIN (SELECT a.ID, a.ikwxh, a.ckwmc, a.ikfid, a.ixnID, a.ikwlx, a.ipbrl, a.ijtrl, a.cbz, a.iFlag, a.iForbid,
  3580. c.ckfjc + '/' + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  3581. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  3582. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  3583. FROM dzkw AS a LEFT OUTER JOIN
  3584. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  3585. FROM dzStoreRole AS aa INNER JOIN
  3586. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  3587. FROM ppRole
  3588. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  3589. a.iForbid = 0 LEFT OUTER JOIN
  3590. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) AS d ON ttPlace.id_place = d.ID
  3591. LEFT OUTER JOIN dzzzgg AS c ON ttPlace.cPaperCode = c.cbh
  3592. LEFT OUTER JOIN (
  3593. SELECT
  3594. id,
  3595. cPaperCode,
  3596. cBatchCode,
  3597. id_Place,
  3598. cUnit,
  3599. nAmount,
  3600. nAmount AS nNetAmount,
  3601. nAvailAmount,
  3602. 0 AS nLength,
  3603. ID_mxcpck
  3604. FROM
  3605. ppSubstanceDetail UNION ALL
  3606. SELECT
  3607. id,
  3608. cpapercode,
  3609. cbatchcode,
  3610. id_Place,
  3611. cUnit,
  3612. namount,
  3613. namount - nBrokenAmount AS nNetAmount,
  3614. ( CASE WHEN iFlag = 0 THEN IFNULL( namount, 0 ) ELSE 0 END ) AS nAvailAmount,
  3615. nLength,
  3616. ID_mxcpck
  3617. FROM
  3618. ppSubstanceDetailRoll
  3619. ) AS a ON a.cPaperCode = ttPlace.cPaperCode
  3620. AND a.id_Place = ttPlace.id_place
  3621. LEFT OUTER JOIN ppBatchProp AS b ON a.cBatchCode = b.cBatchCode
  3622. AND a.cPaperCode = b.cPaperCode)) kc
  3623. LEFT JOIN dzzzgg
  3624. ON dzzzgg.cbh = kc.cPaperCode
  3625. WHERE 1 = 1
  3626. /* AND cRoleName LIKE '%卷筒纸库管%'*/
  3627. AND nAmount <> 0
  3628. /*AND cOwner='本厂'
  3629. AND cPaperCode ='J128078072033'*/
  3630. GROUP BY cPaperName,
  3631. cPaperCode,
  3632. ID_Place,
  3633. cPlaceName,
  3634. cRoleName,
  3635. cBatchCode,
  3636. cUnit,
  3637. iStoreAge,
  3638. cStatus,
  3639. cOwner,
  3640. cPaperType,
  3641. namount,
  3642. dzzzgg.nhss) NN
  3643. GROUP BY NN.cOwner,
  3644. NN.库龄)KC
  3645. ORDER BY kc.序号, KC.数量(吨) DESC";
  3646. $list = Db::query($sql);
  3647. // $list = array_splice($list,0,10);
  3648. //将查询结果存入 Redis 缓存中
  3649. $redis->set($redis_key, json_encode($list));
  3650. return json($list);
  3651. }
  3652. //纸张库存情况->接口调用
  3653. public function inventorydgz(){
  3654. $redis = redis();
  3655. $result = json_decode($redis->get(md5('tt3new')), true);
  3656. if (empty($result)) {
  3657. // 返回一个包含默认字段但数据为空的数组
  3658. return json([
  3659. 'status' => 0,
  3660. 'msg' => '没有找到数据',
  3661. 'data' => [
  3662. 'columns' => [
  3663. ['name'=>'货主','id'=>'cOwnerName','width'=>'40','autoWrap'=>"true",'textAlign'=>'left'],
  3664. ['name'=>'库龄','id'=>'year','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  3665. ['name'=>'数量(吨)','id'=>'nAmount','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  3666. ],
  3667. 'rows' => []
  3668. ]
  3669. ]);
  3670. }
  3671. $aboveSixMonths = [];
  3672. $withinSixMonths = [];
  3673. $delete = '有限公司';
  3674. foreach ($result as $v) {
  3675. if (strpos($v['货主'], $delete)) {
  3676. $v['货主'] = str_replace($delete, '', $v['货主']);
  3677. }
  3678. $v['数量(吨)'] = round($v['数量(吨)'], 2);
  3679. if ($v['库龄'] === '六个月以上') {
  3680. $aboveSixMonths[] = $v;
  3681. } else if ($v['库龄'] === '六个月以内') {
  3682. $withinSixMonths[] = $v;
  3683. }
  3684. }
  3685. // 对两个数组分别按数量(吨)排序
  3686. usort($aboveSixMonths, function($a, $b) {
  3687. return $b['数量(吨)'] <=> $a['数量(吨)'];
  3688. });
  3689. usort($withinSixMonths, function($a, $b) {
  3690. return $b['数量(吨)'] <=> $a['数量(吨)'];
  3691. });
  3692. // 合并排序后的数组
  3693. $sortedResult = array_merge($aboveSixMonths, $withinSixMonths);
  3694. $list = [
  3695. 'columns' => [
  3696. ['name' => '货主', 'id' => 'cOwnerName', 'width' => '42', 'autoWrap' => "true", 'textAlign' => 'left'],
  3697. ['name' => '库龄', 'id' => 'year', 'width' => '23', 'autoWrap' => "true", 'textAlign' => 'left'],
  3698. ['name' => '数量(吨)', 'id' => 'nAmount', 'width' => '25', 'autoWrap' => "true", 'textAlign' => 'left']
  3699. ],
  3700. 'rows' => []
  3701. ];
  3702. foreach ($sortedResult as $i => $v) {
  3703. $list['rows'][] = [
  3704. 'cOwnerName' => $v['货主'],
  3705. 'year' => $v['库龄'],
  3706. 'nAmount' => $v['数量(吨)']
  3707. ];
  3708. }
  3709. $res['status'] = 0;
  3710. $res['msg'] = '';
  3711. $res['data'] = $list;
  3712. return json($res);
  3713. }
  3714. /**
  3715. * 四、全年辅料采购量
  3716. */
  3717. //当年辅料主要供应商采购量及金额->缓存调用
  3718. public function accessories_number(){
  3719. //链接定义 Redis
  3720. $redis = redis();
  3721. $redis_key = md5('accessories_number');
  3722. //辅料教材采购数据
  3723. $sql = "SELECT *
  3724. FROM (SELECT DD.大类名称,
  3725. DD.供应商,
  3726. ROUND(SUM(DD.数量), 2) AS 数量,
  3727. DD.单位,
  3728. ROUND(SUM(DD.金额)/10000, 2) AS '金额(万元)'
  3729. FROM (SELECT NN.cdlmc AS 大类名称,
  3730. NN.cclmc AS 材料名称,
  3731. NN.cywdwmc AS 供应商,
  3732. NN.nbzsl AS 数量,
  3733. NN.nTaxBuyPrice AS 单价,
  3734. NN.nTaxPrice,
  3735. NN.cdw AS 单位,
  3736. ROUND(NN.nTaxMoney, 2) AS 金额
  3737. FROM (SELECT b.ixtrkdbh,
  3738. b.crkdbh,
  3739. a.cclbh,
  3740. a.cclmc,
  3741. a.cdw,
  3742. a.cgg,
  3743. c.ccd,
  3744. a.nbzsl,
  3745. a.nbzdj,
  3746. a.nbzje,
  3747. b.cywdwmc,
  3748. -- Linkstr(a.imxid) AS cPlace,
  3749. a.cph,
  3750. b.dzdrq,
  3751. b.cbz,
  3752. b.cczymc,
  3753. b.cDeliveryCode,
  3754. CASE a.cBuyUnit
  3755. WHEN '' THEN a.cdw
  3756. ELSE a.cBuyUnit
  3757. END AS cBuyUnit,
  3758. CASE a.cBuyUnit
  3759. WHEN '' THEN a.nbzdj
  3760. ELSE a.nBuyPrice
  3761. END AS nBuyPrice,
  3762. c.cycbh,
  3763. d.nTaxBuyPrice,
  3764. d.nTaxPrice,
  3765. IFNULL(d.nTaxPrice, 0) * a.nbzsl AS nTaxMoney,
  3766. b.iPlant,
  3767. a.cBillCode_Buy,
  3768. e.cBillCode AS cInNoticeCode,
  3769. b.cBillCode_Source,
  3770. b.iSourceType,
  3771. c.cdlmc,
  3772. c.cxlmc,
  3773. a.cCode_ProductOrder,
  3774. a.cCode_AProduct,
  3775. a.cName_AProduct,
  3776. a.cVer_AProduct,
  3777. a.ID_Request,
  3778. a.cCode_JobOrder
  3779. FROM mxrkcl a
  3780. LEFT JOIN zbrk b ON a.ixtrkdbh = b.ixtrkdbh
  3781. LEFT JOIN ptkccl c ON a.cclbh = c.cclbm
  3782. LEFT JOIN stInNoticeDetail d ON a.cInNoticeCode = d.cBillCode
  3783. AND a.cInNoticeStuffCode = d.cStuffCode
  3784. LEFT JOIN stInNotice e ON e.cBillCode = d.cBillCode
  3785. LEFT JOIN skBuy f ON f.id = e.ID_skBuy
  3786. WHERE b.bsw = 1
  3787. AND 1 = 1
  3788. AND b.iState = 2
  3789. AND b.bth = 0
  3790. AND b.drkrq BETWEEN '{$this->start_time()}' AND '{$this->end_time()}'
  3791. ) NN
  3792. ) DD
  3793. GROUP BY DD.大类名称,
  3794. DD.供应商,
  3795. DD.单位
  3796. ) AA
  3797. ORDER BY AA.`金额(万元)` DESC;";
  3798. //执行查询结果
  3799. $res = Db::query($sql);
  3800. //将查询结果存入 Redis 缓存中
  3801. $redis->set($redis_key, json_encode($res));
  3802. echo date("Y-m-d H:i:s").' 存进去了';
  3803. return $res;
  3804. }
  3805. //当年辅料主要供应商采购量及金额->接口调用
  3806. public function accessories(){
  3807. $redis = redis();
  3808. $result = json_decode($redis->get(md5('accessories_number')),true);
  3809. if (empty($result)) {
  3810. // 返回一个包含默认字段但数据为空的数组
  3811. return json([
  3812. 'status' => 0,
  3813. 'msg' => '没有找到数据',
  3814. 'data' => [
  3815. 'columns' => [
  3816. ['name'=>'大类名称','id'=>'cdlmc','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  3817. ['name'=>'供应商','id'=>'cdwmc','width'=>'34','autoWrap'=>"true",'textAlign'=>'left'],
  3818. ['name'=>'数量','id'=>'nAmount','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
  3819. ['name'=>'单位','id'=>'cdw','width'=>'13','autoWrap'=>"true",'textAlign'=>'left'],
  3820. ['name'=>'金额(万元)','id'=>'nMoney','width'=>'22','autoWrap'=>"true",'textAlign'=>'left']
  3821. ],
  3822. 'rows' => [
  3823. ['cdlmc' => '', 'cdwmc' => '', 'nAmount' => '', 'cdw' => '', 'nMoney' => '']
  3824. ]
  3825. ]
  3826. ]);
  3827. }
  3828. $list=[];
  3829. $list['columns']=[
  3830. ['name'=>'大类名称','id'=>'cdlmc','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  3831. ['name'=>'供应商','id'=>'cdwmc','width'=>'42','autoWrap'=>"true",'textAlign'=>'left'],
  3832. ['name'=>'数量','id'=>'nAmount','width'=>'14','autoWrap'=>"true",'textAlign'=>'left'],
  3833. ['name'=>'单位','id'=>'cdw','width'=>'10','autoWrap'=>"true",'textAlign'=>'left'],
  3834. ['name'=>'金额(万元)','id'=>'nMoney','width'=>'22','autoWrap'=>"true",'textAlign'=>'left']
  3835. ];
  3836. $i=0;
  3837. foreach($result as $v){
  3838. $list['rows'][$i]['cdlmc']=trim($v['大类名称']);
  3839. $list['rows'][$i]['cdwmc']=trim($v['供应商']);
  3840. $list['rows'][$i]['nAmount']=round($v['数量']);
  3841. $list['rows'][$i]['cdw']=trim($v['单位']);
  3842. $list['rows'][$i]['nMoney']=round($v['金额(万元)'],2);
  3843. $i++;
  3844. }
  3845. $res['status']=0;
  3846. $res['msg']='';
  3847. $res['data']=$list;
  3848. return json($res);
  3849. }
  3850. }