san.php 82 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227
  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. * 一、使用量
  26. * month_zz方法负责存数据 其他方法负责取该方法数据
  27. */
  28. //查询结果集————全年使用量数据->缓存调用
  29. public function month_zz(){
  30. $redis = redis();
  31. $redis_key = md5('month_zz');
  32. //查询语句
  33. $sql = "SELECT
  34. *
  35. FROM
  36. (
  37. SELECT CONVERT
  38. ( pp.dFZRQ, CHAR ) 年份,
  39. aa.cSQ_ZZMC,
  40. aa.czgmc,
  41. aa.nAmount,
  42. pp.cClientName
  43. FROM
  44. (
  45. SELECT
  46. ppOut2.ID,
  47. ppOut2.cBillCode AS cDJBH,
  48. ppOut2.id_Center AS ID_GZZX,
  49. MKernel.cGzzxmc,
  50. ppOut2.id_Machine AS ID_JT,
  51. MKerJzmb.cJzmc AS cJTMC,
  52. ppOut2.id_Shift AS ID_BanZ,
  53. banzu.cBanzuMc AS cBanZMC,
  54. ppOut2.ID_mxcpck AS ID_CPMX,
  55. v_ppOutPlan.cSubpenaName AS cYJMC,
  56. ppOut2.dDate1 AS dSQRQ,
  57. ppOut2.dDate2 AS dTJRQ,
  58. ppOut2.dDate3 AS dFZRQ,
  59. ppOut2.dDate4 AS dSZRQ,
  60. ppOut2.cOperatorCode1 AS cSQRBH,
  61. DZZG.czgxm AS cSQRMC,
  62. ppOut2.cOperatorCode2 AS cTJRBH,
  63. dzzg1.czgxm AS cTJRMC,
  64. ppOut2.cOperatorCode3 AS cFZRBH,
  65. dzzg2.czgxm AS cFZRMC,
  66. ppOut2.cOperatorCode4 AS cSZRBH,
  67. dzzg3.czgxm AS cSZRMC,
  68. ppOut2.iPaperType AS iZZLX,
  69. ppOut2.iUseType AS iCKYT,
  70. ppOut2.iOut AS iSFWJG,
  71. ppOut2.cRemark AS cBZ,
  72. ppOut2.iStatus AS iZT,
  73. ppOut2.id_Role AS ID_KFJS,
  74. ppOut2.iplant,
  75. ppOut2.iSourceType,
  76. ppRole.cRoleName AS cKFJSMC,
  77. ppvBMMC.cBMBH,
  78. ppvBMMC.cBMMC,
  79. v_ppOutPlan.cSubpenaCode AS cCPBH,
  80. v_ppOutPlan.ckhmc,
  81. v_ppOutPlan.cClientName,
  82. v_ppOutPlan.cBillCode_SubClass,
  83. v_ppOutPlan.cOrderBilllOrigin_SubClass,
  84. ppOut2.ID_sysRDSetting,
  85. ppOut2.crdcode,
  86. ppOut2.crdname,
  87. ppOut2.cModifierNumber,
  88. ppOut2.cModifierName,
  89. IFNULL( v_ppOutPlan.cIsSpellPrinting, '否' ) AS cIsSpellPrinting,
  90. v_ppOutPlan.cWJGDWBH,
  91. v_ppOutPlan.cWJGDWMC,
  92. v_ppOutPlan.cCode_JobOrder
  93. FROM
  94. ppOut2
  95. LEFT OUTER JOIN (
  96. SELECT
  97. ppOut2.ID,
  98. ppOut2.cDeptCode AS cBMBH,
  99. DZBM.cbmmc AS cBMMC
  100. FROM
  101. ppOut2
  102. LEFT OUTER JOIN DZBM ON ppOut2.cDeptCode = DZBM.cbmbh
  103. WHERE
  104. ( ppOut2.iOut = 0 ) UNION
  105. SELECT
  106. ppOut2.ID,
  107. ppOut2.cDeptCode AS cBMBH,
  108. DZYWDW.cdwmc AS cBMMC
  109. FROM
  110. ppOut2
  111. LEFT OUTER JOIN DZYWDW ON ppOut2.cDeptCode = DZYWDW.cywdwbh
  112. WHERE
  113. ( ppOut2.iOut = 1 )
  114. ) AS ppvBMMC ON ppOut2.ID = ppvBMMC.ID
  115. LEFT OUTER JOIN ppRole ON ppOut2.id_Role = ppRole.ID
  116. LEFT OUTER JOIN DZZG AS dzzg3 ON ppOut2.cOperatorCode4 = dzzg3.czgbh
  117. LEFT OUTER JOIN DZZG AS dzzg2 ON ppOut2.cOperatorCode3 = dzzg2.czgbh
  118. LEFT OUTER JOIN DZZG AS dzzg1 ON ppOut2.cOperatorCode2 = dzzg1.czgbh
  119. LEFT OUTER JOIN DZZG ON ppOut2.cOperatorCode1 = DZZG.czgbh
  120. LEFT OUTER JOIN (
  121. SELECT
  122. a.imxcpid AS ID,
  123. b.csccpbh AS cSubpenaCode,
  124. b.csccpmc AS cSubpenaName,
  125. a.isign AS iPaperFrom,
  126. a.cbh AS cPaperCode,
  127. a.chj AS cPaperName,
  128. a.cbzdw AS cUnit,
  129. c.clb AS cPaperType,
  130. a.nbzsl AS nPlanAmount,
  131. a.nwfsl AS nNotOutAmount,
  132. a.nAmount_A,
  133. 0 AS nPlanAmount_OP,
  134. b.cywdwmc AS ckhmc,
  135. b.cClientName,
  136. a.cOrderBilllOriginBillCode,
  137. a.cBillCode_SubClass,
  138. a.iStatus,
  139. CASE
  140. a.iOrderBilllOrigin_SubClass
  141. WHEN 0 THEN
  142. '正常'
  143. WHEN 1 THEN
  144. '补料'
  145. WHEN 2 THEN
  146. '部件补印'
  147. WHEN 3 THEN
  148. '成品补印'
  149. WHEN 4 THEN
  150. '补印'
  151. WHEN 5 THEN
  152. '本厂加工'
  153. WHEN 6 THEN
  154. '返工'
  155. END AS cOrderBilllOrigin_SubClass,
  156. '' AS cIsSpellPrinting,
  157. 0 AS ID_WJGDW,
  158. '' AS cWJGDWBH,
  159. '' AS cWJGDWMC,
  160. a.ID_scAComp,
  161. a.cCode_scAComp,
  162. a.cName_scAComp,
  163. 0 AS iType_From,
  164. '产品' AS cTypeForm,
  165. '' AS cCode_JobOrder
  166. FROM
  167. mxcpck AS a
  168. INNER JOIN zbcpck AS b ON a.isccpid = b.isccpid
  169. AND a.izbcpckID = b.ID
  170. INNER JOIN dzzzgg AS c ON a.cbh = c.cbh
  171. ) v_ppOutPlan ON ppOut2.ID_mxcpck = v_ppOutPlan.ID
  172. LEFT OUTER JOIN banzu ON ppOut2.id_Shift = banzu.banzuId
  173. LEFT OUTER JOIN MKerJzmb ON ppOut2.id_Machine = MKerJzmb.ID
  174. LEFT OUTER JOIN MKernel ON ppOut2.id_Center = MKernel.ID
  175. ) pp
  176. LEFT JOIN (
  177. SELECT
  178. ppvOutDetail2.*,
  179. gg.cOldSystemNumber,
  180. gg.nhss,
  181. CASE
  182. WHEN ppvOutDetail2.cSF_DW = '公斤' THEN
  183. ppvOutDetail2.nSF_SL / 1000
  184. WHEN ppvOutDetail2.cSF_DW = '令' THEN
  185. ( CASE WHEN gg.nhss = 0 THEN ppvOutDetail2.nSF_SL / 20 ELSE ppvOutDetail2.nSF_SL / gg.nhss END )
  186. WHEN ppvOutDetail2.cSF_DW = '张' THEN
  187. (
  188. CASE
  189. WHEN gg.nhss = 0 THEN
  190. ppvOutDetail2.nSF_SL / 500 / 1.5 ELSE ppvOutDetail2.nSF_SL / 500 / gg.nhss
  191. END
  192. ) ELSE 0
  193. END AS nAmount
  194. FROM
  195. (
  196. SELECT
  197. ppOutDetail2.id,
  198. ppOutDetail2.ID_ppOut2,
  199. ppOutDetail2.cReqPaperCode AS cSQ_ZZBH,
  200. dzzzgg1.chj AS cSQ_ZZMC,
  201. dzzzgg1.czgmc AS czgmc,
  202. ppOutDetail2.cReqUnit AS cSQ_DW,
  203. IFNULL( ppOutDetail2.nReqAmount, 0 ) AS nSQ_SL,
  204. ppvOutDetailAccount.cPaperCode AS cSF_ZZBH,
  205. dzzzgg_1.chj AS cSF_ZZMC,
  206. ppvOutDetailAccount.cUnit AS cSF_DW,
  207. IFNULL( ppvOutDetailAccount.nAmount, 0 ) AS nSF_SL
  208. FROM
  209. dzzzgg AS dzzzgg1
  210. RIGHT OUTER JOIN dzzzgg AS dzzzgg_1
  211. RIGHT OUTER JOIN (
  212. SELECT
  213. ID_ppOutDetail2,
  214. cPaperCode,
  215. cUnit,
  216. SUM( nAmount ) AS nAmount
  217. FROM
  218. ppOutDetailFlat2
  219. GROUP BY
  220. ID_ppOutDetail2,
  221. cPaperCode,
  222. cUnit UNION
  223. SELECT
  224. ID_ppOutDetail2,
  225. cPaperCode,
  226. cUnit,
  227. SUM( nAmount ) AS nAmount
  228. FROM
  229. ppOutDetailRoll2
  230. GROUP BY
  231. ID_ppOutDetail2,
  232. cPaperCode,
  233. cUnit
  234. ) AS ppvOutDetailAccount
  235. RIGHT OUTER JOIN ppOutDetail2 ON ppvOutDetailAccount.ID_ppOutDetail2 = ppOutDetail2.id ON dzzzgg_1.cbh = ppvOutDetailAccount.cPaperCode ON dzzzgg1.cbh = ppOutDetail2.cReqPaperCode
  236. ) ppvOutDetail2
  237. LEFT JOIN dzzzgg gg ON gg.cbh = ppvOutDetail2.cSQ_ZZBH
  238. ) aa ON pp.id = aa.ID_ppOut2
  239. WHERE
  240. 1 = 1
  241. AND iZT = 3
  242. AND iCKYT = 1
  243. AND dFZRQ BETWEEN '{$this->start_time()}' AND '{$this->end_time()}' ) tt";
  244. //执行语句
  245. $res = Db::query($sql);
  246. //将查询结果存入 Redis 缓存中
  247. $redis->set($redis_key, json_encode($res));
  248. echo date("Y-m-d H:i:s").' 存进去了';
  249. return $res;
  250. }
  251. //1.1全年总使用量(吨)->接口调用
  252. public function yearuse(){
  253. $redis = redis();
  254. $list = json_decode($redis->get(md5('month_zz')),true);
  255. $sum_dun = 0;
  256. foreach ($list as $item) {
  257. $sum_dun += $item['nAmount'];//数量
  258. }
  259. $list=[['name'=>' ','value'=>round($sum_dun)]];
  260. $res['status']= 0;
  261. $res['msg'] = '';
  262. $res['data'] = $list;
  263. return json($res);
  264. }
  265. //1.3全年各出版社厂料使用量->接口调用
  266. public function yearpress(){
  267. $redis = redis();
  268. $o_list = json_decode($redis->get(md5('month_zz')), true);
  269. if(empty($o_list)) {
  270. return json_encode([
  271. 'status' => 0,
  272. 'msg' => '没有找到数据',
  273. 'data' => [
  274. 'categories' => [''],
  275. 'series' => [
  276. ['name' => '使用量', 'data' => [0]]
  277. ]
  278. ]
  279. ]);
  280. }
  281. $list = [];
  282. $sort_arr = [];
  283. foreach($o_list as &$v){
  284. switch ($v['cClientName']) {
  285. case '浙江教育出版社集团有限公司':
  286. $v['cClientName'] = '浙江教育出版社';
  287. break;
  288. case '浙江出版传媒股份有限公司':
  289. $v['cClientName'] = '浙江出版传媒';
  290. break;
  291. case '人民教育出版社有限公司':
  292. $v['cClientName'] = '人民教育出版社';
  293. break;
  294. case '《浙江共产党员》杂志集团有限公司':
  295. $v['cClientName'] = '《浙江共产党员》杂志';
  296. break;
  297. case '教育科学出版社有限公司':
  298. $v['cClientName'] = '教育科学出版社';
  299. break;
  300. case '浙江省新华书店集团有限公司(作业本)':
  301. $v['cClientName'] = '浙江省新华书店(作业本)';
  302. break;
  303. case '中信出版集团股份有限公司':
  304. $v['cClientName'] = '中信出版集团';
  305. break;
  306. case '读者出版传媒股份有限公司':
  307. $v['cClientName'] = '读者出版传媒';
  308. break;
  309. case '大星(上海)文化传媒有限公司(浙江文艺)':
  310. case '大星(上海)文化传媒有限公司(浙江少儿)':
  311. case '大星(上海)文化传媒有限公司(上海书店)':
  312. case '大星(上海)文化传媒有限公司(河南文艺)':
  313. case '大星(上海)文化传媒有限公司':
  314. $v['cClientName'] = '大星(上海)文化传媒';
  315. break;
  316. default:
  317. // 不满足条件的客户名称保持原样
  318. break;
  319. }
  320. }
  321. foreach ($o_list as $value) {
  322. $key = md5($value['cClientName']);
  323. $nAmount = $value['nAmount'];
  324. if (isset($list[$key])) {
  325. $list[$key]['nAmount'] += $nAmount; // 吨
  326. } else {
  327. $list[$key]['nAmount'] = $nAmount; // 吨
  328. $list[$key]['cClientName'] = $value['cClientName'];
  329. $list[$key]['dun'] = '吨';
  330. }
  331. $sort_arr[$key] = $list[$key]['nAmount'];
  332. }
  333. arsort($sort_arr); // 根据 nAmount 降序排序
  334. array_multisort($list,SORT_DESC);
  335. $list=array_splice($list,0,10);
  336. $i=0;
  337. foreach($list as $v){
  338. $result['categories'][$i] = $v['cClientName'];
  339. $result['series'][0]['name'] = '使用量';
  340. $result['series'][0]['data'][$i] = round($v['nAmount']);
  341. $i++;
  342. }
  343. // echo "全年各出版社厂料使用量";echo "<pre>";print_r($result);echo "</pre>"; die;
  344. $res['status'] = 0;
  345. $res['msg'] = '';
  346. $res['data'] = $result;
  347. return json_encode($res);
  348. }
  349. /**
  350. * 二、采购量
  351. * er_lst方法负责存数据 其他方法负责取该方法数据
  352. */
  353. //查询结果集————全年采购量数据->缓存调用
  354. public function er_lst(){
  355. $redis = redis();
  356. $redis_key = md5('er_lst');
  357. //查询语句
  358. $sql = "SELECT ppIn.ID,
  359. CASE
  360. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  361. WHEN ppInDetail.cunit = '令' THEN
  362. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  363. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  364. ELSE 0
  365. END AS '数量(吨)',
  366. dzzzgg.czgmc,
  367. dzzzgg.nhss,
  368. -- ppin.iplant = 0 采购类型 2 书刊类型
  369. ppin.iplant 入库单类型,
  370. ppIn.cbillcode,
  371. CASE
  372. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  373. ELSE ppIn.iSourceType
  374. END iSourceType,
  375. ppInDetail.cpcode,
  376. ppInDetail.cpname,
  377. -- ppInDetail.cbatchcode,
  378. -- ppIn.cowner,
  379. ppIn.csupplier 公司,
  380. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  381. ppInDetail.namount namount,
  382. ppInDetail.mPrice 标准单价,
  383. ppInDetail.cunit 单位,
  384. F.nTaxBuyPrice 含税单价,
  385. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  386. dzzzgg.cgg 规格
  387. FROM ppIn
  388. INNER JOIN ppInDetail
  389. ON ppIn.cbillcode = ppInDetail.cbillcode
  390. AND ppIn.iStatus >= 0
  391. LEFT JOIN (SELECT cBillCode,
  392. cPaperCode,
  393. cBatchCode,
  394. CASE Count(*)
  395. WHEN 1 THEN Min(b.cPlaceShowName)
  396. ELSE ( Min(b.cPlaceShowName) + ',...' )
  397. END AS cKwmc
  398. FROM ppInDetailPlace a
  399. 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,
  400. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  401. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  402. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  403. FROM dzkw AS a LEFT OUTER JOIN
  404. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  405. FROM dzStoreRole AS aa INNER JOIN
  406. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  407. FROM ppRole
  408. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  409. a.iForbid = 0 LEFT OUTER JOIN
  410. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  411. ON a.id_Place = b.id
  412. GROUP BY cBillCode,
  413. cPaperCode,
  414. cBatchCode) E
  415. ON ppInDetail.cBillCode = E.cBillCode
  416. AND ppInDetail.cPCode = E.cpapercode
  417. AND ppInDetail.cBatchCode = E.cbatchcode
  418. LEFT JOIN ppInNoticeDetail F
  419. ON PPInDetail.cmessagecode = F.cbillcode
  420. AND PPInDetail.cmessagepaper = F.cpcode
  421. LEFT JOIN ppInNotice
  422. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  423. LEFT JOIN ppInNoticeDetailClient F1
  424. ON PPInDetail.cmessagecode = F1.cbillcode
  425. AND PPInDetail.cmessagepaper = F1.cpcode
  426. LEFT JOIN ppInNoticeClient
  427. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  428. LEFT JOIN skBuy
  429. ON skBuy.id = ppInNotice.id_skBuy
  430. LEFT JOIN skBuyDetail
  431. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  432. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  433. LEFT JOIN (SELECT a.cSccpBh,
  434. b.cPaperCode
  435. FROM sccp a
  436. INNER JOIN ppArtifactDetail b
  437. ON a.sccpid = b.ID_sccp) G
  438. ON PPInDetail.cmessagecode = G.cSccpBh
  439. AND PPInDetail.cmessagepaper = G.cPaperCode
  440. LEFT JOIN dzzzgg
  441. ON dzzzgg.cbh = ppInDetail.cpcode
  442. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  443. AND ( ppInNoticeClient.cbillcode IS NULL )
  444. AND ( ppIn.dArrival >= '{$this->start_time()}' )
  445. AND ( ppIn.dArrival <= '{$this->end_time()}' )
  446. ORDER BY ppIn.cbillcode,
  447. ppInDetail.isn ";
  448. //执行语句
  449. $res=Db::query($sql);
  450. //将查询结果存入 Redis 缓存中
  451. $redis->set($redis_key, json_encode($res));
  452. echo date("Y-m-d H:i:s").' 存进去了';
  453. return $res;
  454. }
  455. //查询结果集————去年采购量数据->缓存调用
  456. public function qer_lst(){
  457. $redis = redis();
  458. $redis_key = md5('qer_lst');
  459. //查询语句
  460. $sql = "SELECT ppIn.ID,
  461. CASE
  462. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  463. WHEN ppInDetail.cunit = '令' THEN
  464. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  465. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  466. ELSE 0
  467. END AS '数量(吨)',
  468. dzzzgg.czgmc,
  469. dzzzgg.nhss,
  470. -- ppin.iplant = 0 采购类型 2 书刊类型
  471. ppin.iplant 入库单类型,
  472. ppIn.cbillcode,
  473. CASE
  474. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  475. ELSE ppIn.iSourceType
  476. END iSourceType,
  477. ppInDetail.cpcode,
  478. ppInDetail.cpname,
  479. -- ppInDetail.cbatchcode,
  480. -- ppIn.cowner,
  481. ppIn.csupplier 公司,
  482. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  483. ppInDetail.namount namount,
  484. ppInDetail.mPrice 标准单价,
  485. ppInDetail.cunit 单位,
  486. F.nTaxBuyPrice 含税单价,
  487. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  488. dzzzgg.cgg 规格
  489. FROM ppIn
  490. INNER JOIN ppInDetail
  491. ON ppIn.cbillcode = ppInDetail.cbillcode
  492. AND ppIn.iStatus >= 0
  493. LEFT JOIN (SELECT cBillCode,
  494. cPaperCode,
  495. cBatchCode,
  496. CASE Count(*)
  497. WHEN 1 THEN Min(b.cPlaceShowName)
  498. ELSE ( Min(b.cPlaceShowName) + ',...' )
  499. END AS cKwmc
  500. FROM ppInDetailPlace a
  501. 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,
  502. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  503. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  504. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  505. FROM dzkw AS a LEFT OUTER JOIN
  506. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  507. FROM dzStoreRole AS aa INNER JOIN
  508. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  509. FROM ppRole
  510. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  511. a.iForbid = 0 LEFT OUTER JOIN
  512. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  513. ON a.id_Place = b.id
  514. GROUP BY cBillCode,
  515. cPaperCode,
  516. cBatchCode) E
  517. ON ppInDetail.cBillCode = E.cBillCode
  518. AND ppInDetail.cPCode = E.cpapercode
  519. AND ppInDetail.cBatchCode = E.cbatchcode
  520. LEFT JOIN ppInNoticeDetail F
  521. ON PPInDetail.cmessagecode = F.cbillcode
  522. AND PPInDetail.cmessagepaper = F.cpcode
  523. LEFT JOIN ppInNotice
  524. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  525. LEFT JOIN ppInNoticeDetailClient F1
  526. ON PPInDetail.cmessagecode = F1.cbillcode
  527. AND PPInDetail.cmessagepaper = F1.cpcode
  528. LEFT JOIN ppInNoticeClient
  529. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  530. LEFT JOIN skBuy
  531. ON skBuy.id = ppInNotice.id_skBuy
  532. LEFT JOIN skBuyDetail
  533. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  534. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  535. LEFT JOIN (SELECT a.cSccpBh,
  536. b.cPaperCode
  537. FROM sccp a
  538. INNER JOIN ppArtifactDetail b
  539. ON a.sccpid = b.ID_sccp) G
  540. ON PPInDetail.cmessagecode = G.cSccpBh
  541. AND PPInDetail.cmessagepaper = G.cPaperCode
  542. LEFT JOIN dzzzgg
  543. ON dzzzgg.cbh = ppInDetail.cpcode
  544. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  545. AND ( ppInNoticeClient.cbillcode IS NULL )
  546. AND ( ppIn.dArrival >= '{$this->qstart_time()}' )
  547. AND ( ppIn.dArrival <= '{$this->end_time()}' )
  548. ORDER BY ppIn.cbillcode,
  549. ppInDetail.isn ";
  550. //执行语句
  551. $res=Db::query($sql);
  552. //将查询结果存入 Redis 缓存中
  553. $redis->set($redis_key, json_encode($res));
  554. echo date("Y-m-d H:i:s").' 存进去了';
  555. return $res;
  556. }
  557. //查询结果集————进行处理每月各类纸张使用量
  558. public function tt12new(){
  559. $redis = redis();
  560. $list = json_decode($redis->get(md5('month_zz')),true);
  561. if(empty($list)) {
  562. return '';
  563. }else{
  564. $o_list = [];
  565. foreach ($list as $k => $item) {
  566. $tmp = [];
  567. $tmp['dCreate'] = date('Ym', strtotime($item['年份']));
  568. $tmp['czgmc'] = pdcateinfobyczgmc($item['czgmc']);
  569. $tmp['nAmount'] = $item['nAmount'];
  570. $o_list[] = $tmp;
  571. }
  572. $r_list = [];
  573. //按照日期分类分组求和
  574. foreach ($o_list as $item) {
  575. $key = md5($item['czgmc'] . $item['dCreate']);
  576. if (isset($r_list[$key])) {
  577. $r_list[$key]['czgmc'] = $item['czgmc'];
  578. $r_list[$key]['nsl'] += $item['nAmount'];
  579. $r_list[$key]['dCreate'] = $item['dCreate'];
  580. } else {
  581. $r_list[$key]['czgmc'] = $item['czgmc'];
  582. $r_list[$key]['nsl'] = $item['nAmount'];
  583. $r_list[$key]['dCreate'] = $item['dCreate'];
  584. }
  585. }
  586. //按照日期重组数据
  587. $out_list = [];
  588. foreach ($r_list as $key => $item) {
  589. $catename = $item['czgmc'];
  590. //归类
  591. if (isset($out_list[$item['dCreate']])) {
  592. if (isset($out_list[$item['dCreate']][$catename])) {
  593. $out_list[$item['dCreate']][$catename] += round($item['nsl'],2);
  594. } else {
  595. $out_list[$item['dCreate']][$catename] = round($item['nsl'],2);
  596. }
  597. } else {
  598. $out_list[$item['dCreate']][$catename] = round($item['nsl'],2);
  599. }
  600. }
  601. //补全分类
  602. foreach ($out_list as $key=>&$val) {
  603. //bucateinfo 显示主要纸张分类
  604. $val = bucateinfo($val);
  605. arsort($val);
  606. }
  607. //补全月份
  608. $month_arr = getYearInfo();
  609. //循环将月份分开查询
  610. foreach($month_arr as $m){
  611. if(!isset($out_list[$m])){
  612. $out_list[$m] = bucateinfo();
  613. }
  614. }
  615. //月份正序进行排序
  616. ksort($out_list);
  617. return $out_list;
  618. }
  619. }
  620. //2.1全年采购量->接口调用
  621. public function year_procurement(){
  622. $redis = redis();
  623. $list = json_decode($redis->get(md5('er_lst')),true);
  624. $sum_dun = 0;//吨
  625. $sum_jine = 0;//金额
  626. foreach ($list as $item) {
  627. $t = [];
  628. $t['number'] = floatval($item['namount']);//数量
  629. $t['nhss'] = floatval($item['nhss']);//吨折令
  630. $t['sumprice'] = toround($item['含税金额']);//含税金额
  631. $t['unit'] = trim($item['单位']);//单位
  632. $sum_dun += erp_price($t);
  633. // $sum_jine += $t['sumprice'];
  634. }
  635. $list=[['name'=>' ','value'=>round($sum_dun)]];
  636. $res['status']=0;
  637. $res['msg']='';
  638. $res['data']=$list;
  639. return json($res);
  640. }
  641. //2.1-1全年采购金额->接口调用
  642. public function year_money(){
  643. $redis = redis();
  644. $list = json_decode($redis->get(md5('er_lst')),true);
  645. $sum_jine = 0;//金额
  646. foreach ($list as $item) {
  647. $t = [];
  648. $t['number'] = floatval($item['namount']);//数量
  649. $t['nhss'] = floatval($item['nhss']);//吨折令
  650. $t['sumprice'] = toround($item['含税金额']);//含税金额
  651. $t['unit'] = trim($item['单位']);//单位
  652. $sum_jine += $t['sumprice'];
  653. }
  654. $list=[['name'=>' ','value'=>round($sum_jine/10000)]];
  655. $res['status']=0;
  656. $res['msg']='';
  657. $res['data']=$list;
  658. return json($res);
  659. }
  660. //2.2每月采购量、金额->接口调用
  661. public function month_procurement(){
  662. $redis = redis();
  663. $list = json_decode($redis->get(md5('er_lst')),true);
  664. $r_list = [];
  665. foreach ($list as $item) {
  666. $month = date('Ym',strtotime($item['darrival']));
  667. $t = [];
  668. $t['dArrival'] = $month;//月份
  669. $t = [];
  670. $t['number'] = floatval($item['namount']);//数量
  671. $t['nhss'] = floatval($item['nhss']);//吨折令
  672. $t['sumprice'] = toround($item['含税金额']);//含税金额
  673. $t['unit'] = trim($item['单位']);//单位
  674. $sum_dun = erp_price($t);//吨
  675. $t['dweight'] = $sum_dun;
  676. $sum_jine = $t['sumprice'];//金额
  677. if (isset($r_list[$month])) {
  678. $r_list[$month]['dArrival'] = $month;//月份
  679. $r_list[$month]['dun'] += $sum_dun;//吨
  680. $r_list[$month]['jine'] += $sum_jine;//金额
  681. } else {
  682. $r_list[$month]['dArrival'] = $month;//月份
  683. $r_list[$month]['dun'] = $sum_dun;//吨
  684. $r_list[$month]['jine'] = $sum_jine;//金额
  685. }
  686. }
  687. $c_list = [];
  688. //补全月份
  689. $yearInfo = getYearInfo();
  690. foreach ($yearInfo as $item){
  691. $item = intval($item);
  692. if(!isset($r_list[$item])){
  693. $c_list[] = [
  694. 'dtime' => $item,//月份
  695. 'dun' =>0,//吨
  696. 'jine' =>0,//金额
  697. ];
  698. }else{
  699. $c_list[] = $r_list[$item];
  700. }
  701. }
  702. $list=[];
  703. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  704. foreach($c_list as $k=>$v){
  705. $list['series'][0]['name']='采购量(吨)';
  706. $list['series'][1]['name']='采购金额(万元)';
  707. $list['series'][0]['data'][]=(int)round($v['dun']);
  708. $list['series'][1]['data'][]=(int)round($v['jine']/10000);
  709. }
  710. $res['status']=0;
  711. $res['msg']='';
  712. $res['data']=$list;
  713. return json($res);
  714. }
  715. //2.3-1每月各类纸张采购量(第一页)->接口调用
  716. public function month_paperdun(){
  717. $redis = redis();
  718. $list = json_decode($redis->get(md5('er_lst')),true);
  719. if(empty($list)) {
  720. return '';
  721. }else{
  722. $mainCate = getcateinfo();
  723. foreach ($list as $item){
  724. $catename = getCateName($item['czgmc']);
  725. //是否属于主要纸张
  726. if(!in_array($catename,$mainCate)){
  727. continue;
  728. }
  729. $month = date('Ym',strtotime($item['darrival'] ));
  730. $key = md5($catename.$month);
  731. $t = [];
  732. $t['dtime'] = $month;//月份
  733. $t['catename'] = $catename;//纸张名称
  734. $t['dweight'] = floatval($item['数量(吨)']);//
  735. $t['sumprice'] = floatval($item['含税金额']);//金额
  736. $dweight = $t['dweight'];
  737. $dprice = $t['sumprice'] ;
  738. if (isset($r_list[$key])) {
  739. $r_list[$key]['catename'] = $catename;//
  740. $r_list[$key]['month'] = $month;//
  741. $r_list[$key]['dun'] += $dweight;//吨
  742. $r_list[$key]['jine'] += $dprice;//金额
  743. } else {
  744. $r_list[$key]['catename'] = $catename;//
  745. $r_list[$key]['month'] = $month;//
  746. $r_list[$key]['dun'] = $dweight;//吨
  747. $r_list[$key]['jine'] = $dprice;//金额
  748. }
  749. }
  750. $c_list = [];
  751. foreach($r_list as $item){
  752. $c_list[$item['month']][$item['catename']] = toround($item['dun']);//
  753. }
  754. //补全分类
  755. foreach ($c_list as &$val) {
  756. $val = bucateinfo($val);
  757. arsort($val);
  758. }
  759. //补全月份
  760. $month_arr = getYearInfo();
  761. foreach($month_arr as $m){
  762. if(!isset($c_list[$m])){
  763. $c_list[$m] = bucateinfo();
  764. }
  765. }
  766. // echo "每月各类纸张采购量(第一页)";echo "<pre>";print_r($c_list);echo "</pre>";die;
  767. return $c_list;
  768. }
  769. }
  770. //每月各类纸张采购量、使用量-高白双胶纸采购量
  771. public function gbsj(){
  772. $result = $this->month_paperdun();
  773. $result1= $this->tt12new();
  774. if(empty($result) || empty($result1)) {
  775. return json([
  776. 'status' => 0,
  777. 'msg' => '没有找到数据',
  778. 'data' => [
  779. 'categories' => [''],
  780. 'series' => [
  781. ['name' => '采购量', 'data' => [0]],
  782. ['name' => '使用量', 'data' => [0]]
  783. ]
  784. ]
  785. ]);
  786. }else{
  787. foreach($result as $k=>$v){
  788. $list['categories'][]=$k;
  789. $list['series'][0]['name']='高白双胶纸';
  790. $list['series'][0]['data'][]=round($v['高白双胶纸']);
  791. }
  792. foreach($result1 as $k=>$v){
  793. $list1['categories'][]=$k;
  794. $list1['series'][0]['name']='高白双胶纸';
  795. $list1['series'][0]['data'][]=round($v['高白双胶纸']);
  796. }
  797. $data=input('post.');
  798. if(isset($data['dependence'])){
  799. $dependence=$data['dependence'];
  800. }else{
  801. $dependence['item']['value']=date('m',time());
  802. }
  803. $i=(int)$dependence['item']['value'];
  804. $res1['categories'][]=$dependence['item']['value'];
  805. $res1['series'][0]['name']='采购量';
  806. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  807. $res1['series'][1]['name']='使用量';
  808. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  809. $res['status']=0;
  810. $res['msg']='';
  811. $res['data']=$res1;
  812. return json($res);
  813. }
  814. }
  815. //每月各类纸张采购量、使用量-纯质纸采购量
  816. public function czz(){
  817. $result=$this->month_paperdun();
  818. $result1= $this->tt12new();
  819. if(empty($result) || empty($result1)) {
  820. return json([
  821. 'status' => 0,
  822. 'msg' => '没有找到数据',
  823. 'data' => [
  824. 'categories' => [''],
  825. 'series' => [
  826. ['name' => '采购量', 'data' => [0]],
  827. ['name' => '使用量', 'data' => [0]]
  828. ]
  829. ]
  830. ]);
  831. }else{
  832. foreach($result as $k=>$v){
  833. $list['categories'][]=$k;
  834. $list['series'][0]['name']='纯质纸';
  835. $list['series'][0]['data'][]=round($v['纯质纸']);
  836. }
  837. foreach($result1 as $k=>$v){
  838. $list1['categories'][]=$k;
  839. $list1['series'][0]['name']='纯质纸';
  840. $list1['series'][0]['data'][]=round($v['纯质纸']);
  841. }
  842. $data=input('post.');
  843. if(isset($data['dependence'])){
  844. $dependence=$data['dependence'];
  845. }else{
  846. $dependence['item']['value']=date('m',time());
  847. }
  848. $i=(int)$dependence['item']['value'];
  849. $res1['categories'][]=$dependence['item']['value'];
  850. $res1['series'][0]['name']='采购量';
  851. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  852. $res1['series'][1]['name']='使用量';
  853. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  854. $res['status']=0;
  855. $res['msg']='';
  856. $res['data']=$res1;
  857. return json($res);
  858. }
  859. }
  860. //每月各类纸张采购量、使用量-全灰板采购量
  861. public function qhb(){
  862. $result=$this->month_paperdun();
  863. $result1= $this->tt12new();
  864. if(empty($result) || empty($result1)) {
  865. return json([
  866. 'status' => 0,
  867. 'msg' => '没有找到数据',
  868. 'data' => [
  869. 'categories' => [''],
  870. 'series' => [
  871. ['name' => '采购量', 'data' => [0]],
  872. ['name' => '使用量', 'data' => [0]]
  873. ]
  874. ]
  875. ]);
  876. }else{
  877. foreach($result as $k=>$v){
  878. $list['categories'][]=$k;
  879. $list['series'][0]['name']='全灰板';
  880. $list['series'][0]['data'][]=round($v['全灰板']);
  881. }
  882. foreach($result1 as $k=>$v){
  883. $list1['categories'][]=$k;
  884. $list1['series'][0]['name']='全灰板';
  885. $list1['series'][0]['data'][]=round($v['全灰板']);
  886. }
  887. $data=input('post.');
  888. if(isset($data['dependence'])){
  889. $dependence=$data['dependence'];
  890. }else{
  891. $dependence['item']['value']=date('m',time());
  892. }
  893. $i=(int)$dependence['item']['value'];
  894. $res1['categories'][]=$dependence['item']['value'];
  895. $res1['series'][0]['name']='采购量';
  896. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  897. $res1['series'][1]['name']='使用量';
  898. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  899. $res['status']=0;
  900. $res['msg']='';
  901. $res['data']=$res1;
  902. return json($res);
  903. }
  904. }
  905. //每月各类纸张采购量、使用量-白卡纸采购量
  906. public function bkz(){
  907. $result=$this->month_paperdun();
  908. $result1= $this->tt12new();
  909. if(empty($result) || empty($result1)) {
  910. return json([
  911. 'status' => 0,
  912. 'msg' => '没有找到数据',
  913. 'data' => [
  914. 'categories' => [''],
  915. 'series' => [
  916. ['name' => '采购量', 'data' => [0]],
  917. ['name' => '使用量', 'data' => [0]]
  918. ]
  919. ]
  920. ]);
  921. }else{
  922. foreach($result as $k=>$v){
  923. $list['categories'][]=$k;
  924. $list['series'][0]['name']='白卡纸';
  925. $list['series'][0]['data'][]=round($v['白卡纸']);
  926. }
  927. foreach($result1 as $k=>$v){
  928. $list1['categories'][]=$k;
  929. $list1['series'][0]['name']='白卡纸';
  930. $list1['series'][0]['data'][]=round($v['白卡纸']);
  931. }
  932. $data=input('post.');
  933. if(isset($data['dependence'])){
  934. $dependence=$data['dependence'];
  935. }else{
  936. $dependence['item']['value']=date('m',time());
  937. }
  938. $i=(int)$dependence['item']['value'];
  939. $res1['categories'][]=$dependence['item']['value'];
  940. $res1['series'][0]['name']='采购量';
  941. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  942. $res1['series'][1]['name']='使用量';
  943. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  944. $res['status']=0;
  945. $res['msg']='';
  946. $res['data']=$res1;
  947. return json($res);
  948. }
  949. }
  950. //每月各类纸张采购量、使用量-轻型纸采购量
  951. public function qxz(){
  952. $result=$this->month_paperdun();
  953. $result1= $this->tt12new();
  954. if(empty($result) || empty($result1)) {
  955. return json([
  956. 'status' => 0,
  957. 'msg' => '没有找到数据',
  958. 'data' => [
  959. 'categories' => [''],
  960. 'series' => [
  961. ['name' => '采购量', 'data' => [0]],
  962. ['name' => '使用量', 'data' => [0]]
  963. ]
  964. ]
  965. ]);
  966. }else{
  967. foreach($result as $k=>$v){
  968. $list['categories'][]=$k;
  969. $list['series'][0]['name']='轻型纸';
  970. $list['series'][0]['data'][]=round($v['轻型纸']);
  971. }
  972. foreach($result1 as $k=>$v){
  973. $list1['categories'][]=$k;
  974. $list1['series'][0]['name']='轻型纸';
  975. $list1['series'][0]['data'][]=round($v['轻型纸']);
  976. }
  977. $data=input('post.');
  978. if(isset($data['dependence'])){
  979. $dependence=$data['dependence'];
  980. }else{
  981. $dependence['item']['value']=date('m',time());
  982. }
  983. $i=(int)$dependence['item']['value'];
  984. $res1['categories'][]=$dependence['item']['value'];
  985. $res1['series'][0]['name']='采购量';
  986. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  987. $res1['series'][1]['name']='使用量';
  988. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  989. $res['status']=0;
  990. $res['msg']='';
  991. $res['data']=$res1;
  992. return json($res);
  993. }
  994. }
  995. //每月各类纸张采购量、使用量-亚光双面铜版纸采购量
  996. public function ygsmtb(){
  997. $result=$this->month_paperdun();
  998. $result1= $this->tt12new();
  999. if(empty($result) || empty($result1)) {
  1000. return json([
  1001. 'status' => 0,
  1002. 'msg' => '没有找到数据',
  1003. 'data' => [
  1004. 'categories' => [''],
  1005. 'series' => [
  1006. ['name' => '采购量', 'data' => [0]],
  1007. ['name' => '使用量', 'data' => [0]]
  1008. ]
  1009. ]
  1010. ]);
  1011. }else{
  1012. foreach($result as $k=>$v){
  1013. $list['categories'][]=$k;
  1014. $list['series'][0]['name']='亚光双面铜版纸';
  1015. $list['series'][0]['data'][]=round($v['亚光双面铜版纸']);
  1016. }
  1017. foreach($result1 as $k=>$v){
  1018. $list1['categories'][]=$k;
  1019. $list1['series'][0]['name']='亚光双面铜版纸';
  1020. $list1['series'][0]['data'][]=round($v['亚光双面铜版纸']);
  1021. }
  1022. $data=input('post.');
  1023. if(isset($data['dependence'])){
  1024. $dependence=$data['dependence'];
  1025. }else{
  1026. $dependence['item']['value']=date('m',time());
  1027. }
  1028. $i=(int)$dependence['item']['value'];
  1029. $res1['categories'][]=$dependence['item']['value'];
  1030. $res1['series'][0]['name']='采购量';
  1031. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1032. $res1['series'][1]['name']='使用量';
  1033. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1034. $res['status']=0;
  1035. $res['msg']='';
  1036. $res['data']=$res1;
  1037. return json($res);
  1038. }
  1039. }
  1040. //每月各类纸张采购量、使用量-轻涂纸采购量
  1041. public function qtz(){
  1042. $result=$this->month_paperdun();
  1043. $result1= $this->tt12new();
  1044. if(empty($result) || empty($result1)) {
  1045. return json([
  1046. 'status' => 0,
  1047. 'msg' => '没有找到数据',
  1048. 'data' => [
  1049. 'categories' => [''],
  1050. 'series' => [
  1051. ['name' => '采购量', 'data' => [0]],
  1052. ['name' => '使用量', 'data' => [0]]
  1053. ]
  1054. ]
  1055. ]);
  1056. }else{
  1057. foreach($result as $k=>$v){
  1058. $list['categories'][]=$k;
  1059. $list['series'][0]['name']='轻涂纸';
  1060. $list['series'][0]['data'][]=round($v['轻涂纸']);
  1061. }
  1062. foreach($result1 as $k=>$v){
  1063. $list1['categories'][]=$k;
  1064. $list1['series'][0]['name']='轻涂纸';
  1065. $list1['series'][0]['data'][]=round($v['轻涂纸']);
  1066. }
  1067. $data=input('post.');
  1068. if(isset($data['dependence'])){
  1069. $dependence=$data['dependence'];
  1070. }else{
  1071. $dependence['item']['value']=date('m',time());
  1072. }
  1073. $i=(int)$dependence['item']['value'];
  1074. $res1['categories'][]=$dependence['item']['value'];
  1075. $res1['series'][0]['name']='采购量';
  1076. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1077. $res1['series'][1]['name']='使用量';
  1078. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1079. $res['status']=0;
  1080. $res['msg']='';
  1081. $res['data']=$res1;
  1082. return json($res);
  1083. }
  1084. }
  1085. //每月各类纸张采购量、使用量-彩画纸采购量
  1086. public function chz(){
  1087. $result=$this->month_paperdun();
  1088. $result1= $this->tt12new();
  1089. if(empty($result) || empty($result1)) {
  1090. return json([
  1091. 'status' => 0,
  1092. 'msg' => '没有找到数据',
  1093. 'data' => [
  1094. 'categories' => [''],
  1095. 'series' => [
  1096. ['name' => '采购量', 'data' => [0]],
  1097. ['name' => '使用量', 'data' => [0]]
  1098. ]
  1099. ]
  1100. ]);
  1101. }else{
  1102. foreach($result as $k=>$v){
  1103. $list['categories'][]=$k;
  1104. $list['series'][0]['name']='彩画纸';
  1105. $list['series'][0]['data'][]=round($v['彩画纸']);
  1106. }
  1107. foreach($result1 as $k=>$v){
  1108. $list1['categories'][]=$k;
  1109. $list1['series'][0]['name']='彩画纸';
  1110. $list1['series'][0]['data'][]=round($v['彩画纸']);
  1111. }
  1112. $data=input('post.');
  1113. if(isset($data['dependence'])){
  1114. $dependence=$data['dependence'];
  1115. }else{
  1116. $dependence['item']['value']=date('m',time());
  1117. }
  1118. $i=(int)$dependence['item']['value'];
  1119. $res1['categories'][]=$dependence['item']['value'];
  1120. $res1['series'][0]['name']='采购量';
  1121. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1122. $res1['series'][1]['name']='使用量';
  1123. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1124. $res['status']=0;
  1125. $res['msg']='';
  1126. $res['data']=$res1;
  1127. return json($res);
  1128. }
  1129. }
  1130. //每月各类纸张采购量、使用量-特种纸采购量
  1131. public function tzz(){
  1132. $result=$this->month_paperdun();
  1133. $result1= $this->tt12new();
  1134. if(empty($result) || empty($result1)) {
  1135. return json([
  1136. 'status' => 0,
  1137. 'msg' => '没有找到数据',
  1138. 'data' => [
  1139. 'categories' => [''],
  1140. 'series' => [
  1141. ['name' => '采购量', 'data' => [0]],
  1142. ['name' => '使用量', 'data' => [0]]
  1143. ]
  1144. ]
  1145. ]);
  1146. }else{
  1147. foreach($result as $k=>$v){
  1148. $list['categories'][]=$k;
  1149. $list['series'][0]['name']='特种纸';
  1150. $list['series'][0]['data'][]=round($v['特种纸']);
  1151. }
  1152. foreach($result1 as $k=>$v){
  1153. $list1['categories'][]=$k;
  1154. $list1['series'][0]['name']='特种纸';
  1155. $list1['series'][0]['data'][]=round($v['特种纸']);
  1156. }
  1157. $data=input('post.');
  1158. if(isset($data['dependence'])){
  1159. $dependence=$data['dependence'];
  1160. }else{
  1161. $dependence['item']['value']=date('m',time());
  1162. }
  1163. $i=(int)$dependence['item']['value'];
  1164. $res1['categories'][]=$dependence['item']['value'];
  1165. $res1['series'][0]['name']='采购量';
  1166. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1167. $res1['series'][1]['name']='使用量';
  1168. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1169. $res['status']=0;
  1170. $res['msg']='';
  1171. $res['data']=$res1;
  1172. return json($res);
  1173. }
  1174. }
  1175. //每月各类纸张采购量、使用量-本白双胶纸采购量
  1176. public function bbsj(){
  1177. $result=$this->month_paperdun();
  1178. $result1= $this->tt12new();
  1179. if(empty($result) || empty($result1)) {
  1180. return json([
  1181. 'status' => 0,
  1182. 'msg' => '没有找到数据',
  1183. 'data' => [
  1184. 'categories' => [''],
  1185. 'series' => [
  1186. ['name' => '采购量', 'data' => [0]],
  1187. ['name' => '使用量', 'data' => [0]]
  1188. ]
  1189. ]
  1190. ]);
  1191. }else{
  1192. foreach($result as $k=>$v){
  1193. $list['categories'][]=$k;
  1194. $list['series'][0]['name']='本白双胶纸';
  1195. $list['series'][0]['data'][]=round($v['本白双胶纸']);
  1196. }
  1197. foreach($result1 as $k=>$v){
  1198. $list1['categories'][]=$k;
  1199. $list1['series'][0]['name']='本白双胶纸';
  1200. $list1['series'][0]['data'][]=round($v['本白双胶纸']);
  1201. }
  1202. $data=input('post.');
  1203. if(isset($data['dependence'])){
  1204. $dependence=$data['dependence'];
  1205. }else{
  1206. $dependence['item']['value']=date('m',time());
  1207. }
  1208. $i=(int)$dependence['item']['value'];
  1209. $res1['categories'][]=$dependence['item']['value'];
  1210. $res1['series'][0]['name']='采购量';
  1211. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1212. $res1['series'][1]['name']='使用量';
  1213. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1214. $res['status']=0;
  1215. $res['msg']='';
  1216. $res['data']=$res1;
  1217. return json($res);
  1218. }
  1219. }
  1220. //每月各类纸张采购量、使用量-有光双面铜版纸采购量
  1221. public function ygsm(){
  1222. $result=$this->month_paperdun();
  1223. $result1= $this->tt12new();
  1224. if(empty($result) || empty($result1)) {
  1225. return json([
  1226. 'status' => 0,
  1227. 'msg' => '没有找到数据',
  1228. 'data' => [
  1229. 'categories' => [''],
  1230. 'series' => [
  1231. ['name' => '采购量', 'data' => [0]],
  1232. ['name' => '使用量', 'data' => [0]]
  1233. ]
  1234. ]
  1235. ]);
  1236. }else{
  1237. foreach($result as $k=>$v){
  1238. $list['categories'][]=$k;
  1239. $list['series'][0]['name']='有光双面铜版纸';
  1240. $list['series'][0]['data'][]=round($v['有光双面铜版纸']);
  1241. }
  1242. foreach($result1 as $k=>$v){
  1243. $list1['categories'][]=$k;
  1244. $list1['series'][0]['name']='有光双面铜版纸';
  1245. $list1['series'][0]['data'][]=round($v['有光双面铜版纸']);
  1246. }
  1247. $data=input('post.');
  1248. if(isset($data['dependence'])){
  1249. $dependence=$data['dependence'];
  1250. }else{
  1251. $dependence['item']['value']=date('m',time());
  1252. }
  1253. $i=(int)$dependence['item']['value'];
  1254. $res1['categories'][]=$dependence['item']['value'];
  1255. $res1['series'][0]['name']='采购量';
  1256. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1257. $res1['series'][1]['name']='使用量';
  1258. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1259. $res['status']=0;
  1260. $res['msg']='';
  1261. $res['data']=$res1;
  1262. return json($res);
  1263. }
  1264. }
  1265. //2.4全年前十供应商采购量->接口调用
  1266. public function year_supplier(){
  1267. $redis = redis();
  1268. $list = json_decode($redis->get(md5('er_lst')),true);
  1269. $r_list = [];
  1270. //按照日期分类分组求和
  1271. foreach ($list as $item) {
  1272. $name = $item['公司'];
  1273. $key = md5($name);
  1274. $t = [];
  1275. $t['name'] = $name;
  1276. $t['number'] = floatval($item['namount']);//数量
  1277. $t['sumprice'] = floatval($item['含税金额']);//金额
  1278. $t['unit'] = trim($item['单位']);//单位
  1279. $t['nhss'] = $item['nhss'];//采购编号
  1280. $dweight = erp_price($t);
  1281. $dprice = $t['sumprice'];
  1282. if (isset($r_list[$key])) {
  1283. $r_list[$key]['name'] = $name;//
  1284. $r_list[$key]['dun'] += $dweight;//吨
  1285. $r_list[$key]['jine'] += $dprice;//金额
  1286. } else {
  1287. $r_list[$key]['name'] = $name;//
  1288. $r_list[$key]['dun'] = $dweight;//吨
  1289. $r_list[$key]['jine'] = $dprice;//金额
  1290. }
  1291. }
  1292. $sort_arr = [];//按金额
  1293. $sort_arr2 = [];//按吨
  1294. foreach($r_list as $key=>$value){
  1295. $sort_arr[$key] = $r_list[$key]['jine'];
  1296. $sort_arr2[$key] = $r_list[$key]['dun'];
  1297. }
  1298. //排序
  1299. array_multisort($sort_arr,SORT_DESC,$r_list);
  1300. //截取前10
  1301. $r_list = array_splice($r_list,0,10);
  1302. $r_list = array_values($r_list);
  1303. $result['columns']=[
  1304. ['name'=>'供应商','id'=>'name','width'=>'50','autoWrap'=>"true",'textAlign'=>'left'],
  1305. ['name'=>'总量(吨)','id'=>'dun','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  1306. ['name'=>'总金额(万元)','id'=>'jine','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  1307. ];
  1308. if (empty($r_list)) {
  1309. $r_list = [
  1310. ['name' => '', 'dun' => 0, 'jine' => 0]
  1311. ];
  1312. }
  1313. $delete = '有限公司';
  1314. foreach($r_list as $k=>$v){
  1315. if(strpos($v['name'],$delete)){
  1316. $v['name'] = substr_replace($v['name'],'',strpos($v['name'],$delete),strlen($delete));
  1317. }
  1318. $result['rows'][$k]['name']=$v['name'];
  1319. $result['rows'][$k]['dun']=floor($v['dun']);
  1320. $result['rows'][$k]['jine']=round($v['jine']/10000);
  1321. }
  1322. $res['status']=0;
  1323. $res['msg']='';
  1324. $res['data']=$result;
  1325. return json($res);
  1326. }
  1327. //2.5全年各类纸张采购量(吨)->接口调用
  1328. public function year_supplier_procurement(){
  1329. $redis = redis();
  1330. $list = json_decode($redis->get(md5('er_lst')),true);
  1331. if(empty($list)) {
  1332. return json([
  1333. 'status' => 0,
  1334. 'msg' => '没有找到数据',
  1335. 'data' => [
  1336. 'categories' => ['无'],
  1337. 'series' => [
  1338. ['name' => '采购量', 'data' => [0]],
  1339. ['name' => '金额', 'data' => [0]]
  1340. ]
  1341. ]
  1342. ]);
  1343. }
  1344. $mainCate = getcateinfo();
  1345. foreach ($list as $item)
  1346. {
  1347. $catename = getCateName($item['czgmc']);
  1348. //是否属于主要纸张
  1349. if(!in_array($catename,$mainCate)){
  1350. continue;
  1351. }
  1352. $key = md5($catename);
  1353. $t = [];
  1354. $t['catename'] = $catename;//纸张名称
  1355. $t['dweight'] = $item['数量(吨)'];//克重
  1356. $t['sumprice'] = $item['含税金额'];//金额
  1357. $dweight = $t['dweight'];
  1358. $dprice = $t['sumprice'] ;
  1359. if (isset($r_list[$key])) {
  1360. $r_list[$key]['catename'] = $catename;//
  1361. $r_list[$key]['dun'] += $dweight;//吨
  1362. $r_list[$key]['jine'] += $dprice;//金额
  1363. } else {
  1364. $r_list[$key]['catename'] = $catename;//
  1365. $r_list[$key]['dun'] = $dweight;//吨
  1366. $r_list[$key]['jine'] = $dprice;//金额
  1367. }
  1368. }
  1369. //按吨位排序
  1370. $sort_arr = [];
  1371. foreach($r_list as $k=>$value){
  1372. $sort_arr[$k] = $r_list[$k]['dun'];
  1373. }
  1374. //排序
  1375. array_multisort($sort_arr,SORT_DESC,$r_list);
  1376. //截取前10
  1377. $r_list = array_splice($r_list,0,10);
  1378. $r_list = array_values($r_list);
  1379. // echo "全年各类纸张采购量";echo "<pre>";print_r($r_list);echo "</pre>";die;
  1380. $result =[];
  1381. foreach($r_list as $k=>$v){
  1382. $result['categories'][$k] =$v['catename'];
  1383. $result['series'][0]['name']='采购量';
  1384. $result['series'][1]['name']='金额';
  1385. $result['series'][0]['data'][$k]=round($v['dun']);
  1386. $result['series'][1]['data'][$k]=round($v['jine']/10000);
  1387. }
  1388. $res['status']=0;
  1389. $res['msg']='';
  1390. $res['data']=$result;
  1391. return json($res);
  1392. }
  1393. /**
  1394. * 第二屏第二页
  1395. */
  1396. //2.3-2每月各类纸张采购均价(第二页)->接口调用
  1397. public function month_paperjie(){
  1398. $redis = redis();
  1399. $list = json_decode($redis->get(md5('qer_lst')),true);
  1400. // halt($list);
  1401. $mainCate = getcateinfo();
  1402. foreach ($list as $item){
  1403. $catename = getCateName($item['czgmc']);
  1404. //是否属于主要纸张
  1405. if(!in_array($catename,$mainCate)){
  1406. continue;
  1407. }
  1408. $month = date('Ym',strtotime($item['darrival'] ));
  1409. $key = md5($catename.$month);
  1410. $t = [];
  1411. $t['dtime'] = $month;//月份
  1412. $t['catename'] = $catename;//纸张名称
  1413. $t['dweight'] = floatval($item['数量(吨)']);//
  1414. $t['sumprice'] = floatval($item['含税金额']);//金额
  1415. $dweight = $t['dweight'];
  1416. $dprice = $t['sumprice'] ;
  1417. if (isset($r_list[$key])) {
  1418. $r_list[$key]['catename'] = $catename;//
  1419. $r_list[$key]['month'] = $month;//
  1420. $r_list[$key]['dun'] += $dweight;//吨
  1421. $r_list[$key]['jine'] += $dprice;//金额
  1422. } else {
  1423. $r_list[$key]['catename'] = $catename;//
  1424. $r_list[$key]['month'] = $month;//
  1425. $r_list[$key]['dun'] = $dweight;//吨
  1426. $r_list[$key]['jine'] = $dprice;//金额
  1427. }
  1428. }
  1429. $c_list = [];
  1430. foreach($r_list as $item){
  1431. // $c_list[$item['month']][$item['catename']] = round($item['jine']/$item['dun']);
  1432. $c_list[$item['month']][$item['catename']] = floor($item['jine']/$item['dun']);
  1433. }
  1434. //补全分类
  1435. foreach ($c_list as &$val) {
  1436. $val = bucateinfo($val);
  1437. arsort($val);
  1438. }
  1439. return $c_list;
  1440. }
  1441. //每月各类纸张采购均价-高白双胶
  1442. public function gbsjjun(){
  1443. $name = '高白双胶纸';
  1444. $result = $this->month_paperjie();
  1445. $list = [];
  1446. $currentYear = date("Y"); // 当前年份
  1447. $currentMonth = date("m"); // 当前月份
  1448. $previousYear = $currentYear - 1; // 上一年
  1449. // 初始化类别
  1450. $list['categories'] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
  1451. // 初始化上一年的数据数组,填充0
  1452. $list['series'][0]['name'] = $previousYear . '年';
  1453. $list['series'][0]['data'] = array_fill(0, 12, 0);
  1454. // 当前年份的数据数组初始化到当前月份
  1455. $list['series'][1]['name'] = $currentYear . '年';
  1456. $list['series'][1]['data'] = array_fill(0, (int)$currentMonth, 0); // 注意这里是 currentMonth,不是 currentMonth - 1
  1457. $prevdata = 0; // 初始化前一个数据点的值
  1458. foreach ($result as $k => $v) {
  1459. $year = substr($k, 0, 4);
  1460. $month = substr($k, 4, 2);
  1461. if ($v[$name] == 0) {
  1462. $v[$name] = $prevdata;
  1463. }
  1464. if ($year == $currentYear && $month < $currentMonth) {
  1465. // 如果是当前年份,并且月份小于当前月份,则赋值
  1466. $index = (int)$month - 1;
  1467. $list['series'][1]['data'][$index] = $v[$name];
  1468. } elseif ($year == $previousYear) {
  1469. // 如果是上一年的数据,直接赋值
  1470. $index = (int)$month - 1;
  1471. $list['series'][0]['data'][$index] = $v[$name];
  1472. }
  1473. // 更新前一个数据点的值
  1474. $prevdata = $v[$name];
  1475. }
  1476. $res['status'] = 0;
  1477. $res['msg'] = '';
  1478. $res['data'] = $list;
  1479. return json($res);
  1480. }
  1481. //每月各类纸张采购均价-纯雅纸均价
  1482. public function cyzjun(){
  1483. $name = '纯雅纸';
  1484. $result = $this->month_paperjie();
  1485. $list = [];
  1486. $i=0;
  1487. $j=0;
  1488. $prevdata=0;
  1489. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1490. foreach ($result as $k => $v) {
  1491. if($k<=date('Ym',time())&$v[$name]==0){
  1492. $v[$name]=$prevdata;
  1493. }
  1494. $currentYearMonth = date("Y") . "01";
  1495. if($k>=$currentYearMonth){
  1496. $list['series'][1]['name']= date("Y").'年';
  1497. $list['series'][1]['data'][$j]=$v[$name];
  1498. $j++;
  1499. }else{
  1500. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1501. $list['series'][0]['data'][$i]=$v[$name];
  1502. $i++;
  1503. }
  1504. $prevdata=$v[$name];
  1505. }
  1506. $res['status'] = 0;
  1507. $res['msg'] = '';
  1508. $res['data'] = $list;
  1509. return json($res);
  1510. }
  1511. //每月各类纸张采购均价-纯质纸均价
  1512. public function czzjun(){
  1513. $name = '纯质纸';
  1514. $result = $this->month_paperjie();
  1515. $list = [];
  1516. $i=0;
  1517. $j=0;
  1518. $prevdata=0;
  1519. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1520. foreach ($result as $k => $v) {
  1521. if($k<=date('Ym',time())&$v[$name]==0){
  1522. $v[$name]=$prevdata;
  1523. }
  1524. $currentYearMonth = date("Y") . "01";
  1525. if($k>=$currentYearMonth){
  1526. $list['series'][1]['name']= date("Y").'年';
  1527. $list['series'][1]['data'][$j]=$v[$name];
  1528. $j++;
  1529. }else{
  1530. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1531. $list['series'][0]['data'][$i]=$v[$name];
  1532. $i++;
  1533. }
  1534. $prevdata=$v[$name];
  1535. }
  1536. $res['status'] = 0;
  1537. $res['msg'] = '';
  1538. $res['data'] = $list;
  1539. return json($res);
  1540. }
  1541. //每月各类纸张采购均价-全灰板均价
  1542. public function qhbjun(){
  1543. $name = '全灰板';
  1544. $result = $this->month_paperjie();
  1545. $list = [];
  1546. $i=0;
  1547. $j=0;
  1548. $prevdata=0;
  1549. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1550. foreach ($result as $k => $v) {
  1551. if($k<=date('Ym',time())&$v[$name]==0){
  1552. $v[$name]=$prevdata;
  1553. }
  1554. $currentYearMonth = date("Y") . "01";
  1555. if($k>=$currentYearMonth){
  1556. $list['series'][1]['name']= date("Y").'年';
  1557. $list['series'][1]['data'][$j]=$v[$name];
  1558. $j++;
  1559. }else{
  1560. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1561. $list['series'][0]['data'][$i]=$v[$name];
  1562. $i++;
  1563. }
  1564. $prevdata=$v[$name];
  1565. }
  1566. $res['status'] = 0;
  1567. $res['msg'] = '';
  1568. $res['data'] = $list;
  1569. return json($res);
  1570. }
  1571. //每月各类纸张采购均价-白卡纸均价
  1572. public function bkzjun(){
  1573. $name = '白卡纸';
  1574. $result = $this->month_paperjie();
  1575. $list = [];
  1576. $i=0;
  1577. $j=0;
  1578. $prevdata=0;
  1579. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1580. foreach ($result as $k => $v) {
  1581. if($k<=date('Ym',time())&$v[$name]==0){
  1582. $v[$name]=$prevdata;
  1583. }
  1584. $currentYearMonth = date("Y") . "01";
  1585. if($k>=$currentYearMonth){
  1586. $list['series'][1]['name']= date("Y").'年';
  1587. $list['series'][1]['data'][$j]=$v[$name];
  1588. $j++;
  1589. }else{
  1590. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1591. $list['series'][0]['data'][$i]=$v[$name];
  1592. $i++;
  1593. }
  1594. $prevdata=$v[$name];
  1595. }
  1596. $res['status'] = 0;
  1597. $res['msg'] = '';
  1598. $res['data'] = $list;
  1599. return json($res);
  1600. }
  1601. //每月各类纸张采购均价-轻型纸均价
  1602. public function qxzjun(){
  1603. $name = '轻型纸';
  1604. $result = $this->month_paperjie();
  1605. $list = [];
  1606. $i=0;
  1607. $j=0;
  1608. $prevdata=0;
  1609. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1610. foreach ($result as $k => $v) {
  1611. if($k<=date('Ym',time())&$v[$name]==0){
  1612. $v[$name]=$prevdata;
  1613. }
  1614. $currentYearMonth = date("Y") . "01";
  1615. if($k>=$currentYearMonth){
  1616. $list['series'][1]['name']= date("Y").'年';
  1617. $list['series'][1]['data'][$j]=$v[$name];
  1618. $j++;
  1619. }else{
  1620. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1621. $list['series'][0]['data'][$i]=$v[$name];
  1622. $i++;
  1623. }
  1624. $prevdata=$v[$name];
  1625. }
  1626. $res['status'] = 0;
  1627. $res['msg'] = '';
  1628. $res['data'] = $list;
  1629. return json($res);
  1630. }
  1631. //每月各类纸张采购均价-亚光双面铜版纸均价
  1632. public function ygsmtbjun(){
  1633. $name = '亚光双面铜版纸';
  1634. $result = $this->month_paperjie();
  1635. $list = [];
  1636. $i=0;
  1637. $j=0;
  1638. $prevdata=0;
  1639. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1640. foreach ($result as $k => $v) {
  1641. if($k<=date('Ym',time())&$v[$name]==0){
  1642. $v[$name]=$prevdata;
  1643. }
  1644. $currentYearMonth = date("Y") . "01";
  1645. if($k>=$currentYearMonth){
  1646. $list['series'][1]['name']= date("Y").'年';
  1647. $list['series'][1]['data'][$j]=$v[$name];
  1648. $j++;
  1649. }else{
  1650. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1651. $list['series'][0]['data'][$i]=$v[$name];
  1652. $i++;
  1653. }
  1654. $prevdata=$v[$name];
  1655. }
  1656. $res['status'] = 0;
  1657. $res['msg'] = '';
  1658. $res['data'] = $list;
  1659. return json($res);
  1660. }
  1661. //每月各类纸张采购均价-轻涂纸均价
  1662. public function qtzjun(){
  1663. $name = '轻涂纸';
  1664. $result = $this->month_paperjie();
  1665. $list = [];
  1666. $i=0;
  1667. $j=0;
  1668. $prevdata=0;
  1669. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1670. foreach ($result as $k => $v) {
  1671. if($k<=date('Ym',time())&$v[$name]==0){
  1672. $v[$name]=$prevdata;
  1673. }
  1674. $currentYearMonth = date("Y") . "01";
  1675. if($k>=$currentYearMonth){
  1676. $list['series'][1]['name']= date("Y").'年';
  1677. $list['series'][1]['data'][$j]=$v[$name];
  1678. $j++;
  1679. }else{
  1680. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1681. $list['series'][0]['data'][$i]=$v[$name];
  1682. $i++;
  1683. }
  1684. $prevdata=$v[$name];
  1685. }
  1686. $res['status'] = 0;
  1687. $res['msg'] = '';
  1688. $res['data'] = $list;
  1689. return json($res);
  1690. }
  1691. //每月各类纸张采购均价-彩画纸均价
  1692. public function chzjun(){
  1693. $name = '彩画纸';
  1694. $result = $this->month_paperjie();
  1695. $list = [];
  1696. $i=0;
  1697. $j=0;
  1698. $prevdata=0;
  1699. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1700. foreach ($result as $k => $v) {
  1701. if($k<=date('Ym',time())&$v[$name]==0){
  1702. $v[$name]=$prevdata;
  1703. }
  1704. $currentYearMonth = date("Y") . "01";
  1705. if($k>=$currentYearMonth){
  1706. $list['series'][1]['name']= date("Y").'年';
  1707. $list['series'][1]['data'][$j]=$v[$name];
  1708. $j++;
  1709. }else{
  1710. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1711. $list['series'][0]['data'][$i]=$v[$name];
  1712. $i++;
  1713. }
  1714. $prevdata=$v[$name];
  1715. }
  1716. $res['status'] = 0;
  1717. $res['msg'] = '';
  1718. $res['data'] = $list;
  1719. return json($res);
  1720. }
  1721. //每月各类纸张采购均价-特种纸均价
  1722. public function tzzjun(){
  1723. $name = '特种纸';
  1724. $result = $this->month_paperjie();
  1725. $list = [];
  1726. $i=0;
  1727. $j=0;
  1728. $prevdata=0;
  1729. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1730. foreach ($result as $k => $v) {
  1731. if($k<=date('Ym',time())&$v[$name]==0){
  1732. $v[$name]=$prevdata;
  1733. }
  1734. $currentYearMonth = date("Y") . "01";
  1735. if($k>=$currentYearMonth){
  1736. $list['series'][1]['name']= date("Y").'年';
  1737. $list['series'][1]['data'][$j]=$v[$name];
  1738. $j++;
  1739. }else{
  1740. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1741. $list['series'][0]['data'][$i]=$v[$name];
  1742. $i++;
  1743. }
  1744. $prevdata=$v[$name];
  1745. }
  1746. $res['status'] = 0;
  1747. $res['msg'] = '';
  1748. $res['data'] = $list;
  1749. return json($res);
  1750. }
  1751. //每月各类纸张采购均价-本白双胶纸均价
  1752. public function bbsjjun(){
  1753. $name = '本白双胶纸';
  1754. $result = $this->month_paperjie();
  1755. $list = [];
  1756. $i=0;
  1757. $j=0;
  1758. $prevdata=0;
  1759. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1760. foreach ($result as $k => $v) {
  1761. if($k<=date('Ym',time())&$v[$name]==0){
  1762. $v[$name]=$prevdata;
  1763. }
  1764. $currentYearMonth = date("Y") . "01";
  1765. if($k>=$currentYearMonth){
  1766. $list['series'][1]['name']= date("Y").'年';
  1767. $list['series'][1]['data'][$j]=$v[$name];
  1768. $j++;
  1769. }else{
  1770. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1771. $list['series'][0]['data'][$i]=$v[$name];
  1772. $i++;
  1773. }
  1774. $prevdata=$v[$name];
  1775. }
  1776. $res['status'] = 0;
  1777. $res['msg'] = '';
  1778. $res['data'] = $list;
  1779. return json($res);
  1780. }
  1781. //每月各类纸张采购均价-有光双面铜版纸均价
  1782. public function ygsmtjun(){
  1783. $name = '有光双面铜版纸';
  1784. $result = $this->month_paperjie();
  1785. $list = [];
  1786. $i=0;
  1787. $j=0;
  1788. $prevdata=0;
  1789. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1790. foreach ($result as $k => $v) {
  1791. if($k<=date('Ym',time())&$v[$name]==0){
  1792. $v[$name]=$prevdata;
  1793. }
  1794. $currentYearMonth = date("Y") . "01";
  1795. if($k>=$currentYearMonth){
  1796. $list['series'][1]['name']= date("Y").'年';
  1797. $list['series'][1]['data'][$j]=$v[$name];
  1798. $j++;
  1799. }else{
  1800. $list['series'][0]['name']=date("Y", strtotime("-1 year")).'年';
  1801. $list['series'][0]['data'][$i]=$v[$name];
  1802. $i++;
  1803. }
  1804. $prevdata=$v[$name];
  1805. }
  1806. $res['status'] = 0;
  1807. $res['msg'] = '';
  1808. $res['data'] = $list;
  1809. return json($res);
  1810. }
  1811. /**
  1812. * 三、库存情况
  1813. *
  1814. * 表说明
  1815. * ppin->库存表
  1816. * ppindetail->库存详情表
  1817. * dzzzgg->纸张规格表
  1818. * 表的关联
  1819. * ppin.cbillcode = ppindetail.cbillcode
  1820. * ppindetail.cpcode = dzzzgg.cpcode
  1821. * 字段说明
  1822. * ppin.darrival 时间
  1823. * ppin.cowner 本厂->厂料 其他代表各出版社
  1824. * ppindetail.namount 数量
  1825. * ppindetail.cpname 名称(关联纸张规格表,进行分类)
  1826. * ppindetail.cunit 单位(令、张、公斤)
  1827. *令(令数/顿折令(dzzzgg.nhss)) = 公斤
  1828. *张(张数/500/顿折令(dzzzgg.nhss)) = 公斤
  1829. * dzzzgg.czgmc 纸张名称分类
  1830. * dzzzgg.chj 纸张详情名称
  1831. */
  1832. //3.库存情况->缓存调用
  1833. public function tt3new(){
  1834. //链接定义 Redis
  1835. $redis = redis();
  1836. $redis_key = md5('tt3new');
  1837. //超过180天以上总量
  1838. $sql = "SELECT *
  1839. FROM (SELECT NN.cOwner 货主,
  1840. NN.库龄,
  1841. ROUND(SUM(NN.数量(吨)), 2) 数量(吨)
  1842. FROM (SELECT
  1843. cPlaceName,
  1844. cPaperCode,
  1845. cPaperName,
  1846. ID_Place,
  1847. cRoleName,
  1848. cBatchCode,
  1849. cUnit,
  1850. SUM(nAmount) AS nAmount,
  1851. CASE
  1852. WHEN cunit = '公斤' THEN SUM(nAmount) / 1000
  1853. WHEN cunit = '令' THEN
  1854. CASE
  1855. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 20
  1856. ELSE SUM(nAmount) / dzzzgg.nhss
  1857. END
  1858. WHEN cunit = '张' THEN
  1859. CASE
  1860. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 500 / 1.5
  1861. ELSE SUM(nAmount) / 500 / dzzzgg.nhss
  1862. END
  1863. ELSE 0
  1864. END AS '数量(吨)',
  1865. SUM(nNetAmount) AS nNetAmount,
  1866. CASE
  1867. WHEN cPaperType = '卷筒' AND nAmount <> 0 THEN COUNT(CASE WHEN nAmount = 0 THEN NULL ELSE cPaperCode END)
  1868. ELSE 0
  1869. END AS iCount,
  1870. iStoreAge,
  1871. CASE
  1872. WHEN cowner = '本厂' THEN
  1873. CASE
  1874. WHEN iStoreAge > 180 THEN '六个月以上'
  1875. ELSE '六个月以内'
  1876. END
  1877. ELSE ' '
  1878. END AS 库龄,
  1879. cStatus,
  1880. cOwner,
  1881. cPaperType,
  1882. dzzzgg.nhss
  1883. FROM
  1884. (SELECT
  1885. IFNULL( a.id, 0 ) AS id,
  1886. ttPlace.cPaperCode,
  1887. IFNULL( a.cBatchCode, '' ) AS cBatchCode,
  1888. ttPlace.id_place,
  1889. IFNULL( c.cbzdw, '' ) AS cUnit,
  1890. IFNULL( a.nAmount, 0 ) AS nAmount,
  1891. IFNULL( a.nNetAmount, 0 ) AS nNetAmount,
  1892. IFNULL( a.nAvailAmount, 0 ) AS nAvailAmount,
  1893. IFNULL( a.nLength, 0 ) AS nLength,
  1894. IFNULL( a.ID_mxcpck, 0 ) AS ID_mxcpck,
  1895. IFNULL( c.clb, '' ) AS cPaperType,
  1896. IFNULL( DATEDIFF( NOW( ), b.dDate ), 0 ) AS iStoreAge,
  1897. IFNULL( CASE b.iStatus WHEN 0 THEN '完好' WHEN 1 THEN '残破' WHEN 2 THEN '开裁' WHEN 3 THEN '换纸' END, '' ) AS cStatus,
  1898. IFNULL( b.cOwner, '' ) AS cOwner,
  1899. IFNULL( b.iExclusive, 0 ) AS iExclusive,
  1900. IFNULL( c.chj, '' ) AS cPaperName,
  1901. IFNULL( c.nkz, 0 ) AS nkz,
  1902. IFNULL( c.cgg, '' ) AS cgg,
  1903. c.ccd,
  1904. c.clb,
  1905. IFNULL( c.czgmc, '' ) AS czgmc,
  1906. c.nstate,
  1907. IFNULL( c.cOldSystemNumber, '' ) AS cOldSystemNumber,
  1908. IFNULL( c.nThickness, 0 ) AS nThickness,
  1909. IFNULL( d.cPlaceShowName, '' ) AS cPlaceName,
  1910. d.iRoleID,
  1911. IFNULL( d.cRoleName, '' ) AS cRoleName,
  1912. d.ckfmc,
  1913. d.ckfjc,
  1914. d.ikwxh,
  1915. d.ikwlx,
  1916. d.iForbid,
  1917. d.ikfsx,
  1918. d.iFlag,
  1919. d.iStoreForbid,
  1920. d.iProperty
  1921. FROM
  1922. (
  1923. SELECT
  1924. b.cPaperCode,
  1925. b.id_place
  1926. FROM
  1927. ( SELECT MAX( id ) AS id FROM ppDetailPlace GROUP BY cPaperCode, id_place ) AS a
  1928. INNER JOIN ppDetailPlace AS b ON b.id = a.id
  1929. ) AS ttPlace
  1930. 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,
  1931. c.ckfjc + '/' + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  1932. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  1933. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  1934. FROM dzkw AS a LEFT OUTER JOIN
  1935. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  1936. FROM dzStoreRole AS aa INNER JOIN
  1937. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  1938. FROM ppRole
  1939. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  1940. a.iForbid = 0 LEFT OUTER JOIN
  1941. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) AS d ON ttPlace.id_place = d.ID
  1942. LEFT OUTER JOIN dzzzgg AS c ON ttPlace.cPaperCode = c.cbh
  1943. LEFT OUTER JOIN (
  1944. SELECT
  1945. id,
  1946. cPaperCode,
  1947. cBatchCode,
  1948. id_Place,
  1949. cUnit,
  1950. nAmount,
  1951. nAmount AS nNetAmount,
  1952. nAvailAmount,
  1953. 0 AS nLength,
  1954. ID_mxcpck
  1955. FROM
  1956. ppSubstanceDetail UNION ALL
  1957. SELECT
  1958. id,
  1959. cpapercode,
  1960. cbatchcode,
  1961. id_Place,
  1962. cUnit,
  1963. namount,
  1964. namount - nBrokenAmount AS nNetAmount,
  1965. ( CASE WHEN iFlag = 0 THEN IFNULL( namount, 0 ) ELSE 0 END ) AS nAvailAmount,
  1966. nLength,
  1967. ID_mxcpck
  1968. FROM
  1969. ppSubstanceDetailRoll
  1970. ) AS a ON a.cPaperCode = ttPlace.cPaperCode
  1971. AND a.id_Place = ttPlace.id_place
  1972. LEFT OUTER JOIN ppBatchProp AS b ON a.cBatchCode = b.cBatchCode
  1973. AND a.cPaperCode = b.cPaperCode) kc
  1974. LEFT JOIN dzzzgg ON dzzzgg.cbh = kc.cPaperCode
  1975. WHERE
  1976. 1 = 1
  1977. -- AND cRoleName LIKE '%卷筒纸库管%'
  1978. AND nAmount <> 0
  1979. -- AND cOwner = '求是杂志社'
  1980. -- AND cPaperCode ='J128078072033'
  1981. GROUP BY
  1982. cPaperName,
  1983. cPaperCode,
  1984. ID_Place,
  1985. cPlaceName,
  1986. cRoleName,
  1987. cBatchCode,
  1988. cUnit,
  1989. iStoreAge,
  1990. cStatus,
  1991. cOwner,
  1992. cPaperType,
  1993. namount,
  1994. dzzzgg.nhss) NN
  1995. GROUP BY NN.cOwner,
  1996. NN.库龄)KC
  1997. ORDER BY CASE
  1998. WHEN KC.库龄 = '六个月以上' THEN 1
  1999. WHEN KC.库龄 = '六个月以内' THEN 2
  2000. ELSE 3
  2001. END,
  2002. KC.数量(吨) DESC";
  2003. // ORDER BY CASE
  2004. // WHEN KC.库龄 = '六个月以上' THEN 1
  2005. // WHEN KC.库龄 = '六个月以内' THEN 2
  2006. // ELSE 3
  2007. // END,
  2008. // KC.数量(吨) DESC
  2009. $list = Db::query($sql);
  2010. $list = array_splice($list,0,10);
  2011. //将查询结果存入 Redis 缓存中
  2012. $redis->set($redis_key, json_encode($list));
  2013. return json($list);
  2014. }
  2015. //库存情况->接口调用
  2016. public function inventorydgz(){
  2017. $redis = redis();
  2018. $result = json_decode($redis->get(md5('tt3new')),true);
  2019. if (empty($result)) {
  2020. // 返回一个包含默认字段但数据为空的数组
  2021. return json([
  2022. 'status' => 0,
  2023. 'msg' => '没有找到数据',
  2024. 'data' => [
  2025. 'columns' => [
  2026. ['name'=>'货主','id'=>'cOwnerName','width'=>'40','autoWrap'=>"true",'textAlign'=>'left'],
  2027. ['name'=>'库龄','id'=>'year','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  2028. ['name'=>'数量(吨)','id'=>'nAmount','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  2029. ],
  2030. 'rows' => [
  2031. ['cOwnerName' => '', 'year' => '', 'nAmount' => '']
  2032. ]
  2033. ]
  2034. ]);
  2035. }
  2036. $list['columns']=[
  2037. ['name'=>'货主','id'=>'cOwnerName','width'=>'40','autoWrap'=>"true",'textAlign'=>'left'],
  2038. ['name'=>'库龄','id'=>'year','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  2039. ['name'=>'数量(吨)','id'=>'nAmount','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  2040. ];
  2041. $i=0;
  2042. $delete = '有限公司';
  2043. foreach($result as $v){
  2044. if(strpos($v['货主'],$delete)){
  2045. $v['货主'] = substr_replace($v['货主'],'',strpos($v['货主'],$delete),strlen($delete));
  2046. }
  2047. $list['rows'][$i]['cOwnerName']=$v['货主'];
  2048. $list['rows'][$i]['year']=$v['库龄'];
  2049. $list['rows'][$i]['nAmount']=round($v['数量(吨)']);
  2050. $i++;
  2051. }
  2052. $res['status']=0;
  2053. $res['msg']='';
  2054. $res['data']=$list;
  2055. return json($res);
  2056. }
  2057. /**
  2058. * 四、全年辅料采购量
  2059. */
  2060. //全年辅料采购量->缓存调用
  2061. public function accessories_number(){
  2062. //链接定义 Redis
  2063. $redis = redis();
  2064. $redis_key = md5('accessories_number');
  2065. //辅料教材采购数据
  2066. $sql = "SELECT *
  2067. FROM (SELECT DD.大类名称,
  2068. DD.供应商,
  2069. ROUND(SUM(DD.数量), 2) AS 数量,
  2070. DD.单位,
  2071. ROUND(SUM(DD.金额)/10000, 2) AS '金额(万元)'
  2072. FROM (SELECT NN.cdlmc AS 大类名称,
  2073. NN.cclmc AS 材料名称,
  2074. NN.cywdwmc AS 供应商,
  2075. NN.nbzsl AS 数量,
  2076. NN.nTaxBuyPrice AS 单价,
  2077. NN.nTaxPrice,
  2078. NN.cdw AS 单位,
  2079. ROUND(NN.nTaxMoney, 2) AS 金额
  2080. FROM (SELECT b.ixtrkdbh,
  2081. b.crkdbh,
  2082. a.cclbh,
  2083. a.cclmc,
  2084. a.cdw,
  2085. a.cgg,
  2086. c.ccd,
  2087. a.nbzsl,
  2088. a.nbzdj,
  2089. a.nbzje,
  2090. b.cywdwmc,
  2091. -- Linkstr(a.imxid) AS cPlace,
  2092. a.cph,
  2093. b.dzdrq,
  2094. b.cbz,
  2095. b.cczymc,
  2096. b.cDeliveryCode,
  2097. CASE a.cBuyUnit
  2098. WHEN '' THEN a.cdw
  2099. ELSE a.cBuyUnit
  2100. END AS cBuyUnit,
  2101. CASE a.cBuyUnit
  2102. WHEN '' THEN a.nbzdj
  2103. ELSE a.nBuyPrice
  2104. END AS nBuyPrice,
  2105. c.cycbh,
  2106. d.nTaxBuyPrice,
  2107. d.nTaxPrice,
  2108. IFNULL(d.nTaxPrice, 0) * a.nbzsl AS nTaxMoney,
  2109. b.iPlant,
  2110. a.cBillCode_Buy,
  2111. e.cBillCode AS cInNoticeCode,
  2112. b.cBillCode_Source,
  2113. b.iSourceType,
  2114. c.cdlmc,
  2115. c.cxlmc,
  2116. a.cCode_ProductOrder,
  2117. a.cCode_AProduct,
  2118. a.cName_AProduct,
  2119. a.cVer_AProduct,
  2120. a.ID_Request,
  2121. a.cCode_JobOrder
  2122. FROM mxrkcl a
  2123. LEFT JOIN zbrk b ON a.ixtrkdbh = b.ixtrkdbh
  2124. LEFT JOIN ptkccl c ON a.cclbh = c.cclbm
  2125. LEFT JOIN stInNoticeDetail d ON a.cInNoticeCode = d.cBillCode
  2126. AND a.cInNoticeStuffCode = d.cStuffCode
  2127. LEFT JOIN stInNotice e ON e.cBillCode = d.cBillCode
  2128. LEFT JOIN skBuy f ON f.id = e.ID_skBuy
  2129. WHERE b.bsw = 1
  2130. AND 1 = 1
  2131. AND b.iState = 2
  2132. AND b.bth = 0
  2133. AND b.drkrq BETWEEN '{$this->start_time()}' AND '{$this->end_time()}'
  2134. ) NN
  2135. ) DD
  2136. GROUP BY DD.大类名称,
  2137. DD.供应商,
  2138. DD.单位
  2139. ) AA
  2140. ORDER BY AA.`金额(万元)` DESC;";
  2141. //执行查询结果
  2142. $res = Db::query($sql);
  2143. //将查询结果存入 Redis 缓存中
  2144. $redis->set($redis_key, json_encode($res));
  2145. echo date("Y-m-d H:i:s").' 存进去了';
  2146. return $res;
  2147. }
  2148. //全年辅料采购量->接口调用
  2149. public function accessories(){
  2150. $redis = redis();
  2151. $result = json_decode($redis->get(md5('accessories_number')),true);
  2152. if (empty($result)) {
  2153. // 返回一个包含默认字段但数据为空的数组
  2154. return json([
  2155. 'status' => 0,
  2156. 'msg' => '没有找到数据',
  2157. 'data' => [
  2158. 'columns' => [
  2159. ['name'=>'大类名称','id'=>'cdlmc','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  2160. ['name'=>'供应商','id'=>'cdwmc','width'=>'28','autoWrap'=>"true",'textAlign'=>'left'],
  2161. ['name'=>'数量','id'=>'nAmount','width'=>'20','autoWrap'=>"true",'textAlign'=>'left'],
  2162. ['name'=>'单位','id'=>'cdw','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  2163. ['name'=>'金额(万元)','id'=>'nMoney','width'=>'22','autoWrap'=>"true",'textAlign'=>'left']
  2164. ],
  2165. 'rows' => [
  2166. ['cdlmc' => '', 'cdwmc' => '', 'nAmount' => '', 'cdw' => '', 'nMoney' => '']
  2167. ]
  2168. ]
  2169. ]);
  2170. }
  2171. $list=[];
  2172. $list['columns']=[
  2173. ['name'=>'大类名称','id'=>'cdlmc','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  2174. ['name'=>'供应商','id'=>'cdwmc','width'=>'28','autoWrap'=>"true",'textAlign'=>'left'],
  2175. ['name'=>'数量','id'=>'nAmount','width'=>'20','autoWrap'=>"true",'textAlign'=>'left'],
  2176. ['name'=>'单位','id'=>'cdw','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  2177. ['name'=>'金额(万元)','id'=>'nMoney','width'=>'22','autoWrap'=>"true",'textAlign'=>'left']
  2178. ];
  2179. $i=0;
  2180. foreach($result as $v){
  2181. $list['rows'][$i]['cdlmc']=trim($v['大类名称']);
  2182. $list['rows'][$i]['cdwmc']=trim($v['供应商']);
  2183. $list['rows'][$i]['nAmount']=round($v['数量']);
  2184. $list['rows'][$i]['cdw']=trim($v['单位']);
  2185. $list['rows'][$i]['nMoney']=round($v['金额(万元)']);
  2186. $i++;
  2187. }
  2188. $res['status']=0;
  2189. $res['msg']='';
  2190. $res['data']=$list;
  2191. return json($res);
  2192. }
  2193. }