er.php 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979
  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. $list = [];
  270. $sort_arr = [];
  271. foreach($o_list as &$v){
  272. switch ($v['cClientName']) {
  273. case '浙江教育出版社集团有限公司':
  274. $v['cClientName'] = '浙江教育出版社';
  275. break;
  276. case '浙江出版传媒股份有限公司':
  277. $v['cClientName'] = '浙江出版传媒';
  278. break;
  279. case '人民教育出版社有限公司':
  280. $v['cClientName'] = '人民教育出版社';
  281. break;
  282. case '《浙江共产党员》杂志集团有限公司':
  283. $v['cClientName'] = '《浙江共产党员》杂志';
  284. break;
  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. case '大星(上海)文化传媒有限公司(浙江少儿)':
  299. case '大星(上海)文化传媒有限公司(上海书店)':
  300. case '大星(上海)文化传媒有限公司(河南文艺)':
  301. case '大星(上海)文化传媒有限公司':
  302. $v['cClientName'] = '大星(上海)文化传媒';
  303. break;
  304. default:
  305. // 不满足条件的客户名称保持原样
  306. break;
  307. }
  308. }
  309. foreach ($o_list as $value) {
  310. $key = md5($value['cClientName']);
  311. $nAmount = $value['nAmount'];
  312. if (isset($list[$key])) {
  313. $list[$key]['nAmount'] += $nAmount; // 吨
  314. } else {
  315. $list[$key]['nAmount'] = $nAmount; // 吨
  316. $list[$key]['cClientName'] = $value['cClientName'];
  317. $list[$key]['dun'] = '吨';
  318. }
  319. $sort_arr[$key] = $list[$key]['nAmount'];
  320. }
  321. arsort($sort_arr); // 根据 nAmount 降序排序
  322. array_multisort($list,SORT_DESC);
  323. $list=array_splice($list,0,10);
  324. $i=0;
  325. foreach($list as $v){
  326. $result['categories'][$i] = $v['cClientName'];
  327. $result['series'][0]['name'] = '使用量';
  328. $result['series'][0]['data'][$i] = round($v['nAmount']);
  329. $i++;
  330. }
  331. // echo "全年各出版社厂料使用量";echo "<pre>";print_r($result);echo "</pre>"; die;
  332. $res['status'] = 0;
  333. $res['msg'] = '';
  334. $res['data'] = $result;
  335. return json_encode($res);
  336. }
  337. /**
  338. * 二、采购量
  339. * er_lst方法负责存数据 其他方法负责取该方法数据
  340. */
  341. //查询结果集————全年采购量数据->缓存调用
  342. public function er_lst(){
  343. $redis = redis();
  344. $redis_key = md5('er_lst');
  345. //查询语句
  346. $sql = "SELECT ppIn.ID,
  347. CASE
  348. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  349. WHEN ppInDetail.cunit = '令' THEN
  350. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  351. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  352. ELSE 0
  353. END AS '数量(吨)',
  354. dzzzgg.czgmc,
  355. dzzzgg.nhss,
  356. -- ppin.iplant = 0 采购类型 2 书刊类型
  357. ppin.iplant 入库单类型,
  358. ppIn.cbillcode,
  359. CASE
  360. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  361. ELSE ppIn.iSourceType
  362. END iSourceType,
  363. ppInDetail.cpcode,
  364. ppInDetail.cpname,
  365. -- ppInDetail.cbatchcode,
  366. -- ppIn.cowner,
  367. ppIn.csupplier 公司,
  368. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  369. ppInDetail.namount namount,
  370. ppInDetail.mPrice 标准单价,
  371. ppInDetail.cunit 单位,
  372. F.nTaxBuyPrice 含税单价,
  373. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  374. dzzzgg.cgg 规格
  375. FROM ppIn
  376. INNER JOIN ppInDetail
  377. ON ppIn.cbillcode = ppInDetail.cbillcode
  378. AND ppIn.iStatus >= 0
  379. LEFT JOIN (SELECT cBillCode,
  380. cPaperCode,
  381. cBatchCode,
  382. CASE Count(*)
  383. WHEN 1 THEN Min(b.cPlaceShowName)
  384. ELSE ( Min(b.cPlaceShowName) + ',...' )
  385. END AS cKwmc
  386. FROM ppInDetailPlace a
  387. 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,
  388. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  389. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  390. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  391. FROM dzkw AS a LEFT OUTER JOIN
  392. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  393. FROM dzStoreRole AS aa INNER JOIN
  394. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  395. FROM ppRole
  396. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  397. a.iForbid = 0 LEFT OUTER JOIN
  398. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  399. ON a.id_Place = b.id
  400. GROUP BY cBillCode,
  401. cPaperCode,
  402. cBatchCode) E
  403. ON ppInDetail.cBillCode = E.cBillCode
  404. AND ppInDetail.cPCode = E.cpapercode
  405. AND ppInDetail.cBatchCode = E.cbatchcode
  406. LEFT JOIN ppInNoticeDetail F
  407. ON PPInDetail.cmessagecode = F.cbillcode
  408. AND PPInDetail.cmessagepaper = F.cpcode
  409. LEFT JOIN ppInNotice
  410. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  411. LEFT JOIN ppInNoticeDetailClient F1
  412. ON PPInDetail.cmessagecode = F1.cbillcode
  413. AND PPInDetail.cmessagepaper = F1.cpcode
  414. LEFT JOIN ppInNoticeClient
  415. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  416. LEFT JOIN skBuy
  417. ON skBuy.id = ppInNotice.id_skBuy
  418. LEFT JOIN skBuyDetail
  419. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  420. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  421. LEFT JOIN (SELECT a.cSccpBh,
  422. b.cPaperCode
  423. FROM sccp a
  424. INNER JOIN ppArtifactDetail b
  425. ON a.sccpid = b.ID_sccp) G
  426. ON PPInDetail.cmessagecode = G.cSccpBh
  427. AND PPInDetail.cmessagepaper = G.cPaperCode
  428. LEFT JOIN dzzzgg
  429. ON dzzzgg.cbh = ppInDetail.cpcode
  430. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  431. AND ( ppInNoticeClient.cbillcode IS NULL )
  432. AND ( ppIn.dArrival >= '{$this->start_time()}' )
  433. AND ( ppIn.dArrival <= '{$this->end_time()}' )
  434. ORDER BY ppIn.cbillcode,
  435. ppInDetail.isn ";
  436. //执行语句
  437. $res=Db::query($sql);
  438. //将查询结果存入 Redis 缓存中
  439. $redis->set($redis_key, json_encode($res));
  440. echo date("Y-m-d H:i:s").' 存进去了';
  441. return $res;
  442. }
  443. //查询结果集————去年采购量数据->缓存调用
  444. public function qer_lst(){
  445. $redis = redis();
  446. $redis_key = md5('qer_lst');
  447. //查询语句
  448. $sql = "SELECT ppIn.ID,
  449. CASE
  450. WHEN ppInDetail.cunit = '公斤' THEN ppInDetail.namount / 1000
  451. WHEN ppInDetail.cunit = '令' THEN
  452. (case when dzzzgg.nhss=0 then ppInDetail.namount / 20 ELSE ppInDetail.namount / dzzzgg.nhss end)
  453. WHEN ppInDetail.cunit = '张' THEN (case when dzzzgg.nhss=0 then ppInDetail.namount / 500/1.5 ELSE ppInDetail.namount / 500/dzzzgg.nhss end)
  454. ELSE 0
  455. END AS '数量(吨)',
  456. dzzzgg.czgmc,
  457. dzzzgg.nhss,
  458. -- ppin.iplant = 0 采购类型 2 书刊类型
  459. ppin.iplant 入库单类型,
  460. ppIn.cbillcode,
  461. CASE
  462. WHEN ppInNoticeClient.cBillCode IS NOT NULL THEN 100
  463. ELSE ppIn.iSourceType
  464. END iSourceType,
  465. ppInDetail.cpcode,
  466. ppInDetail.cpname,
  467. -- ppInDetail.cbatchcode,
  468. -- ppIn.cowner,
  469. ppIn.csupplier 公司,
  470. DATE_FORMAT(ppIn.darrival, '%Y-%m-%d') darrival,
  471. ppInDetail.namount namount,
  472. ppInDetail.mPrice 标准单价,
  473. ppInDetail.cunit 单位,
  474. F.nTaxBuyPrice 含税单价,
  475. PPInDetail.namount * IFnull(F.nTaxPrice, 0) AS 含税金额 ,
  476. dzzzgg.cgg 规格
  477. FROM ppIn
  478. INNER JOIN ppInDetail
  479. ON ppIn.cbillcode = ppInDetail.cbillcode
  480. AND ppIn.iStatus >= 0
  481. LEFT JOIN (SELECT cBillCode,
  482. cPaperCode,
  483. cBatchCode,
  484. CASE Count(*)
  485. WHEN 1 THEN Min(b.cPlaceShowName)
  486. ELSE ( Min(b.cPlaceShowName) + ',...' )
  487. END AS cKwmc
  488. FROM ppInDetailPlace a
  489. 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,
  490. c.ckfjc + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  491. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  492. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  493. FROM dzkw AS a LEFT OUTER JOIN
  494. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  495. FROM dzStoreRole AS aa INNER JOIN
  496. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  497. FROM ppRole
  498. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  499. a.iForbid = 0 LEFT OUTER JOIN
  500. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) b
  501. ON a.id_Place = b.id
  502. GROUP BY cBillCode,
  503. cPaperCode,
  504. cBatchCode) E
  505. ON ppInDetail.cBillCode = E.cBillCode
  506. AND ppInDetail.cPCode = E.cpapercode
  507. AND ppInDetail.cBatchCode = E.cbatchcode
  508. LEFT JOIN ppInNoticeDetail F
  509. ON PPInDetail.cmessagecode = F.cbillcode
  510. AND PPInDetail.cmessagepaper = F.cpcode
  511. LEFT JOIN ppInNotice
  512. ON PPInDetail.cmessagecode = ppInNotice.cBillCode
  513. LEFT JOIN ppInNoticeDetailClient F1
  514. ON PPInDetail.cmessagecode = F1.cbillcode
  515. AND PPInDetail.cmessagepaper = F1.cpcode
  516. LEFT JOIN ppInNoticeClient
  517. ON PPInDetail.cmessagecode = ppInNoticeClient.cBillCode
  518. LEFT JOIN skBuy
  519. ON skBuy.id = ppInNotice.id_skBuy
  520. LEFT JOIN skBuyDetail
  521. ON skBuyDetail.id_skBuy = ppInNotice.id_skBuy
  522. AND skBuyDetail.cMaterialCode = ppInDetail.cMessagePaper
  523. LEFT JOIN (SELECT a.cSccpBh,
  524. b.cPaperCode
  525. FROM sccp a
  526. INNER JOIN ppArtifactDetail b
  527. ON a.sccpid = b.ID_sccp) G
  528. ON PPInDetail.cmessagecode = G.cSccpBh
  529. AND PPInDetail.cmessagepaper = G.cPaperCode
  530. LEFT JOIN dzzzgg
  531. ON dzzzgg.cbh = ppInDetail.cpcode
  532. WHERE ( ppIn.iSourceType = 0 or ppIn.iSourceType = 2 )
  533. AND ( ppInNoticeClient.cbillcode IS NULL )
  534. AND ( ppIn.dArrival >= '{$this->qstart_time()}' )
  535. AND ( ppIn.dArrival <= '{$this->end_time()}' )
  536. ORDER BY ppIn.cbillcode,
  537. ppInDetail.isn ";
  538. //执行语句
  539. $res=Db::query($sql);
  540. //将查询结果存入 Redis 缓存中
  541. $redis->set($redis_key, json_encode($res));
  542. echo date("Y-m-d H:i:s").' 存进去了';
  543. return $res;
  544. }
  545. //查询结果集————进行处理每月各类纸张使用量
  546. public function tt12new(){
  547. $redis = redis();
  548. $list = json_decode($redis->get(md5('month_zz')),true);
  549. $o_list = [];
  550. foreach ($list as $k => $item) {
  551. $tmp = [];
  552. $tmp['dCreate'] = date('Ym', strtotime($item['年份']));
  553. $tmp['czgmc'] = pdcateinfobyczgmc($item['czgmc']);
  554. $tmp['nAmount'] = $item['nAmount'];
  555. $o_list[] = $tmp;
  556. }
  557. $r_list = [];
  558. //按照日期分类分组求和
  559. foreach ($o_list as $item) {
  560. $key = md5($item['czgmc'] . $item['dCreate']);
  561. if (isset($r_list[$key])) {
  562. $r_list[$key]['czgmc'] = $item['czgmc'];
  563. $r_list[$key]['nsl'] += $item['nAmount'];
  564. $r_list[$key]['dCreate'] = $item['dCreate'];
  565. } else {
  566. $r_list[$key]['czgmc'] = $item['czgmc'];
  567. $r_list[$key]['nsl'] = $item['nAmount'];
  568. $r_list[$key]['dCreate'] = $item['dCreate'];
  569. }
  570. }
  571. //按照日期重组数据
  572. $out_list = [];
  573. foreach ($r_list as $key => $item) {
  574. $catename = $item['czgmc'];
  575. //归类
  576. if (isset($out_list[$item['dCreate']])) {
  577. if (isset($out_list[$item['dCreate']][$catename])) {
  578. $out_list[$item['dCreate']][$catename] += round($item['nsl'],2);
  579. } else {
  580. $out_list[$item['dCreate']][$catename] = round($item['nsl'],2);
  581. }
  582. } else {
  583. $out_list[$item['dCreate']][$catename] = round($item['nsl'],2);
  584. }
  585. }
  586. //补全分类
  587. foreach ($out_list as $key=>&$val) {
  588. //bucateinfo 显示主要纸张分类
  589. $val = bucateinfo($val);
  590. arsort($val);
  591. }
  592. //补全月份
  593. $month_arr = getYearInfo();
  594. //循环将月份分开查询
  595. foreach($month_arr as $m){
  596. if(!isset($out_list[$m])){
  597. $out_list[$m] = bucateinfo();
  598. }
  599. }
  600. //月份正序进行排序
  601. ksort($out_list);
  602. return $out_list;
  603. }
  604. //2.1全年采购量->接口调用
  605. public function year_procurement(){
  606. $redis = redis();
  607. $list = json_decode($redis->get(md5('er_lst')),true);
  608. $sum_dun = 0;//吨
  609. $sum_jine = 0;//金额
  610. foreach ($list as $item) {
  611. $t = [];
  612. $t['number'] = floatval($item['namount']);//数量
  613. $t['nhss'] = floatval($item['nhss']);//吨折令
  614. $t['sumprice'] = toround($item['含税金额']);//含税金额
  615. $t['unit'] = trim($item['单位']);//单位
  616. $sum_dun += erp_price($t);
  617. // $sum_jine += $t['sumprice'];
  618. }
  619. $list=[['name'=>' ','value'=>round($sum_dun)]];
  620. $res['status']=0;
  621. $res['msg']='';
  622. $res['data']=$list;
  623. return json($res);
  624. }
  625. //2.1-1全年采购金额->接口调用
  626. public function year_money(){
  627. $redis = redis();
  628. $list = json_decode($redis->get(md5('er_lst')),true);
  629. $sum_jine = 0;//金额
  630. foreach ($list as $item) {
  631. $t = [];
  632. $t['number'] = floatval($item['namount']);//数量
  633. $t['nhss'] = floatval($item['nhss']);//吨折令
  634. $t['sumprice'] = toround($item['含税金额']);//含税金额
  635. $t['unit'] = trim($item['单位']);//单位
  636. $sum_jine += $t['sumprice'];
  637. }
  638. $list=[['name'=>' ','value'=>round($sum_jine/10000)]];
  639. $res['status']=0;
  640. $res['msg']='';
  641. $res['data']=$list;
  642. return json($res);
  643. }
  644. //2.2每月采购量、金额->接口调用
  645. public function month_procurement(){
  646. $redis = redis();
  647. $list = json_decode($redis->get(md5('er_lst')),true);
  648. $r_list = [];
  649. foreach ($list as $item) {
  650. $month = date('Ym',strtotime($item['darrival']));
  651. $t = [];
  652. $t['dArrival'] = $month;//月份
  653. $t = [];
  654. $t['number'] = floatval($item['namount']);//数量
  655. $t['nhss'] = floatval($item['nhss']);//吨折令
  656. $t['sumprice'] = toround($item['含税金额']);//含税金额
  657. $t['unit'] = trim($item['单位']);//单位
  658. $sum_dun = erp_price($t);//吨
  659. $t['dweight'] = $sum_dun;
  660. $sum_jine = $t['sumprice'];//金额
  661. if (isset($r_list[$month])) {
  662. $r_list[$month]['dArrival'] = $month;//月份
  663. $r_list[$month]['dun'] += $sum_dun;//吨
  664. $r_list[$month]['jine'] += $sum_jine;//金额
  665. } else {
  666. $r_list[$month]['dArrival'] = $month;//月份
  667. $r_list[$month]['dun'] = $sum_dun;//吨
  668. $r_list[$month]['jine'] = $sum_jine;//金额
  669. }
  670. }
  671. $c_list = [];
  672. //补全月份
  673. $yearInfo = getYearInfo();
  674. foreach ($yearInfo as $item){
  675. $item = intval($item);
  676. if(!isset($r_list[$item])){
  677. $c_list[] = [
  678. 'dtime' => $item,//月份
  679. 'dun' =>0,//吨
  680. 'jine' =>0,//金额
  681. ];
  682. }else{
  683. $c_list[] = $r_list[$item];
  684. }
  685. }
  686. $list=[];
  687. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  688. foreach($c_list as $k=>$v){
  689. $list['series'][0]['name']='采购量(吨)';
  690. $list['series'][1]['name']='采购金额(万元)';
  691. $list['series'][0]['data'][]=(int)round($v['dun']);
  692. $list['series'][1]['data'][]=(int)round($v['jine']/10000);
  693. }
  694. $res['status']=0;
  695. $res['msg']='';
  696. $res['data']=$list;
  697. return json($res);
  698. }
  699. //2.3-1每月各类纸张采购量(第一页)->接口调用
  700. public function month_paperdun(){
  701. $redis = redis();
  702. $list = json_decode($redis->get(md5('er_lst')),true);
  703. $mainCate = getcateinfo();
  704. foreach ($list as $item){
  705. $catename = getCateName($item['czgmc']);
  706. //是否属于主要纸张
  707. if(!in_array($catename,$mainCate)){
  708. continue;
  709. }
  710. $month = date('Ym',strtotime($item['darrival'] ));
  711. $key = md5($catename.$month);
  712. $t = [];
  713. $t['dtime'] = $month;//月份
  714. $t['catename'] = $catename;//纸张名称
  715. $t['dweight'] = floatval($item['数量(吨)']);//
  716. $t['sumprice'] = floatval($item['含税金额']);//金额
  717. $dweight = $t['dweight'];
  718. $dprice = $t['sumprice'] ;
  719. if (isset($r_list[$key])) {
  720. $r_list[$key]['catename'] = $catename;//
  721. $r_list[$key]['month'] = $month;//
  722. $r_list[$key]['dun'] += $dweight;//吨
  723. $r_list[$key]['jine'] += $dprice;//金额
  724. } else {
  725. $r_list[$key]['catename'] = $catename;//
  726. $r_list[$key]['month'] = $month;//
  727. $r_list[$key]['dun'] = $dweight;//吨
  728. $r_list[$key]['jine'] = $dprice;//金额
  729. }
  730. }
  731. $c_list = [];
  732. foreach($r_list as $item){
  733. $c_list[$item['month']][$item['catename']] = toround($item['dun']);//
  734. }
  735. //补全分类
  736. foreach ($c_list as &$val) {
  737. $val = bucateinfo($val);
  738. arsort($val);
  739. }
  740. //补全月份
  741. $month_arr = getYearInfo();
  742. foreach($month_arr as $m){
  743. if(!isset($c_list[$m])){
  744. $c_list[$m] = bucateinfo();
  745. }
  746. }
  747. // echo "每月各类纸张采购量(第一页)";echo "<pre>";print_r($c_list);echo "</pre>";die;
  748. return $c_list;
  749. }
  750. //每月各类纸张采购量、使用量-高白双胶纸采购量
  751. public function gbsj(){
  752. $result=$this->month_paperdun();
  753. $result1= $this->tt12new();
  754. foreach($result as $k=>$v){
  755. $list['categories'][]=$k;
  756. $list['series'][0]['name']='高白双胶纸';
  757. $list['series'][0]['data'][]=round($v['高白双胶纸']);
  758. }
  759. foreach($result1 as $k=>$v){
  760. $list1['categories'][]=$k;
  761. $list1['series'][0]['name']='高白双胶纸';
  762. $list1['series'][0]['data'][]=round($v['高白双胶纸']);
  763. }
  764. $data=input('post.');
  765. if(isset($data['dependence'])){
  766. $dependence=$data['dependence'];
  767. }else{
  768. $dependence['item']['value']=date('m',time());
  769. }
  770. $i=(int)$dependence['item']['value'];
  771. $res1['categories'][]=$dependence['item']['value'];
  772. $res1['series'][0]['name']='采购量';
  773. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  774. $res1['series'][1]['name']='使用量';
  775. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  776. $res['status']=0;
  777. $res['msg']='';
  778. $res['data']=$res1;
  779. return json($res);
  780. }
  781. //每月各类纸张采购量、使用量-纯质纸采购量
  782. public function czz(){
  783. $result=$this->month_paperdun();
  784. $result1= $this->tt12new();
  785. foreach($result as $k=>$v){
  786. $list['categories'][]=$k;
  787. $list['series'][0]['name']='纯质纸';
  788. $list['series'][0]['data'][]=round($v['纯质纸']);
  789. }
  790. foreach($result1 as $k=>$v){
  791. $list1['categories'][]=$k;
  792. $list1['series'][0]['name']='纯质纸';
  793. $list1['series'][0]['data'][]=round($v['纯质纸']);
  794. }
  795. $data=input('post.');
  796. if(isset($data['dependence'])){
  797. $dependence=$data['dependence'];
  798. }else{
  799. $dependence['item']['value']=date('m',time());
  800. }
  801. $i=(int)$dependence['item']['value'];
  802. $res1['categories'][]=$dependence['item']['value'];
  803. $res1['series'][0]['name']='采购量';
  804. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  805. $res1['series'][1]['name']='使用量';
  806. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  807. $res['status']=0;
  808. $res['msg']='';
  809. $res['data']=$res1;
  810. return json($res);
  811. }
  812. //每月各类纸张采购量、使用量-全灰板采购量
  813. public function qhb(){
  814. $result=$this->month_paperdun();
  815. $result1= $this->tt12new();
  816. foreach($result as $k=>$v){
  817. $list['categories'][]=$k;
  818. $list['series'][0]['name']='全灰板';
  819. $list['series'][0]['data'][]=round($v['全灰板']);
  820. }
  821. foreach($result1 as $k=>$v){
  822. $list1['categories'][]=$k;
  823. $list1['series'][0]['name']='全灰板';
  824. $list1['series'][0]['data'][]=round($v['全灰板']);
  825. }
  826. $data=input('post.');
  827. if(isset($data['dependence'])){
  828. $dependence=$data['dependence'];
  829. }else{
  830. $dependence['item']['value']=date('m',time());
  831. }
  832. $i=(int)$dependence['item']['value'];
  833. $res1['categories'][]=$dependence['item']['value'];
  834. $res1['series'][0]['name']='采购量';
  835. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  836. $res1['series'][1]['name']='使用量';
  837. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  838. $res['status']=0;
  839. $res['msg']='';
  840. $res['data']=$res1;
  841. return json($res);
  842. }
  843. //每月各类纸张采购量、使用量-白卡纸采购量
  844. public function bkz(){
  845. $result=$this->month_paperdun();
  846. $result1= $this->tt12new();
  847. foreach($result as $k=>$v){
  848. $list['categories'][]=$k;
  849. $list['series'][0]['name']='白卡纸';
  850. $list['series'][0]['data'][]=round($v['白卡纸']);
  851. }
  852. foreach($result1 as $k=>$v){
  853. $list1['categories'][]=$k;
  854. $list1['series'][0]['name']='白卡纸';
  855. $list1['series'][0]['data'][]=round($v['白卡纸']);
  856. }
  857. $data=input('post.');
  858. if(isset($data['dependence'])){
  859. $dependence=$data['dependence'];
  860. }else{
  861. $dependence['item']['value']=date('m',time());
  862. }
  863. $i=(int)$dependence['item']['value'];
  864. $res1['categories'][]=$dependence['item']['value'];
  865. $res1['series'][0]['name']='采购量';
  866. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  867. $res1['series'][1]['name']='使用量';
  868. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  869. $res['status']=0;
  870. $res['msg']='';
  871. $res['data']=$res1;
  872. return json($res);
  873. }
  874. //每月各类纸张采购量、使用量-轻型纸采购量
  875. public function qxz(){
  876. $result=$this->month_paperdun();
  877. $result1= $this->tt12new();
  878. foreach($result as $k=>$v){
  879. $list['categories'][]=$k;
  880. $list['series'][0]['name']='轻型纸';
  881. $list['series'][0]['data'][]=round($v['轻型纸']);
  882. }
  883. foreach($result1 as $k=>$v){
  884. $list1['categories'][]=$k;
  885. $list1['series'][0]['name']='轻型纸';
  886. $list1['series'][0]['data'][]=round($v['轻型纸']);
  887. }
  888. $data=input('post.');
  889. if(isset($data['dependence'])){
  890. $dependence=$data['dependence'];
  891. }else{
  892. $dependence['item']['value']=date('m',time());
  893. }
  894. $i=(int)$dependence['item']['value'];
  895. $res1['categories'][]=$dependence['item']['value'];
  896. $res1['series'][0]['name']='采购量';
  897. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  898. $res1['series'][1]['name']='使用量';
  899. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  900. $res['status']=0;
  901. $res['msg']='';
  902. $res['data']=$res1;
  903. return json($res);
  904. }
  905. //每月各类纸张采购量、使用量-亚光双面铜版纸采购量
  906. public function ygsmtb(){
  907. $result=$this->month_paperdun();
  908. $result1= $this->tt12new();
  909. foreach($result as $k=>$v){
  910. $list['categories'][]=$k;
  911. $list['series'][0]['name']='亚光双面铜版纸';
  912. $list['series'][0]['data'][]=round($v['亚光双面铜版纸']);
  913. }
  914. foreach($result1 as $k=>$v){
  915. $list1['categories'][]=$k;
  916. $list1['series'][0]['name']='亚光双面铜版纸';
  917. $list1['series'][0]['data'][]=round($v['亚光双面铜版纸']);
  918. }
  919. $data=input('post.');
  920. if(isset($data['dependence'])){
  921. $dependence=$data['dependence'];
  922. }else{
  923. $dependence['item']['value']=date('m',time());
  924. }
  925. $i=(int)$dependence['item']['value'];
  926. $res1['categories'][]=$dependence['item']['value'];
  927. $res1['series'][0]['name']='采购量';
  928. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  929. $res1['series'][1]['name']='使用量';
  930. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  931. $res['status']=0;
  932. $res['msg']='';
  933. $res['data']=$res1;
  934. return json($res);
  935. }
  936. //每月各类纸张采购量、使用量-轻涂纸采购量
  937. public function qtz(){
  938. $result=$this->month_paperdun();
  939. $result1= $this->tt12new();
  940. foreach($result as $k=>$v){
  941. $list['categories'][]=$k;
  942. $list['series'][0]['name']='轻涂纸';
  943. $list['series'][0]['data'][]=round($v['轻涂纸']);
  944. }
  945. foreach($result1 as $k=>$v){
  946. $list1['categories'][]=$k;
  947. $list1['series'][0]['name']='轻涂纸';
  948. $list1['series'][0]['data'][]=round($v['轻涂纸']);
  949. }
  950. $data=input('post.');
  951. if(isset($data['dependence'])){
  952. $dependence=$data['dependence'];
  953. }else{
  954. $dependence['item']['value']=date('m',time());
  955. }
  956. $i=(int)$dependence['item']['value'];
  957. $res1['categories'][]=$dependence['item']['value'];
  958. $res1['series'][0]['name']='采购量';
  959. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  960. $res1['series'][1]['name']='使用量';
  961. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  962. $res['status']=0;
  963. $res['msg']='';
  964. $res['data']=$res1;
  965. return json($res);
  966. }
  967. //每月各类纸张采购量、使用量-彩画纸采购量
  968. public function chz(){
  969. $result=$this->month_paperdun();
  970. $result1= $this->tt12new();
  971. foreach($result as $k=>$v){
  972. $list['categories'][]=$k;
  973. $list['series'][0]['name']='彩画纸';
  974. $list['series'][0]['data'][]=round($v['彩画纸']);
  975. }
  976. foreach($result1 as $k=>$v){
  977. $list1['categories'][]=$k;
  978. $list1['series'][0]['name']='彩画纸';
  979. $list1['series'][0]['data'][]=round($v['彩画纸']);
  980. }
  981. $data=input('post.');
  982. if(isset($data['dependence'])){
  983. $dependence=$data['dependence'];
  984. }else{
  985. $dependence['item']['value']=date('m',time());
  986. }
  987. $i=(int)$dependence['item']['value'];
  988. $res1['categories'][]=$dependence['item']['value'];
  989. $res1['series'][0]['name']='采购量';
  990. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  991. $res1['series'][1]['name']='使用量';
  992. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  993. $res['status']=0;
  994. $res['msg']='';
  995. $res['data']=$res1;
  996. return json($res);
  997. }
  998. //每月各类纸张采购量、使用量-特种纸采购量
  999. public function tzz(){
  1000. $result=$this->month_paperdun();
  1001. $result1= $this->tt12new();
  1002. foreach($result as $k=>$v){
  1003. $list['categories'][]=$k;
  1004. $list['series'][0]['name']='特种纸';
  1005. $list['series'][0]['data'][]=round($v['特种纸']);
  1006. }
  1007. foreach($result1 as $k=>$v){
  1008. $list1['categories'][]=$k;
  1009. $list1['series'][0]['name']='特种纸';
  1010. $list1['series'][0]['data'][]=round($v['特种纸']);
  1011. }
  1012. $data=input('post.');
  1013. if(isset($data['dependence'])){
  1014. $dependence=$data['dependence'];
  1015. }else{
  1016. $dependence['item']['value']=date('m',time());
  1017. }
  1018. $i=(int)$dependence['item']['value'];
  1019. $res1['categories'][]=$dependence['item']['value'];
  1020. $res1['series'][0]['name']='采购量';
  1021. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1022. $res1['series'][1]['name']='使用量';
  1023. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1024. $res['status']=0;
  1025. $res['msg']='';
  1026. $res['data']=$res1;
  1027. return json($res);
  1028. }
  1029. //每月各类纸张采购量、使用量-本白双胶纸采购量
  1030. public function bbsj(){
  1031. $result=$this->month_paperdun();
  1032. $result1= $this->tt12new();
  1033. foreach($result as $k=>$v){
  1034. $list['categories'][]=$k;
  1035. $list['series'][0]['name']='本白双胶纸';
  1036. $list['series'][0]['data'][]=round($v['本白双胶纸']);
  1037. }
  1038. foreach($result1 as $k=>$v){
  1039. $list1['categories'][]=$k;
  1040. $list1['series'][0]['name']='本白双胶纸';
  1041. $list1['series'][0]['data'][]=round($v['本白双胶纸']);
  1042. }
  1043. $data=input('post.');
  1044. if(isset($data['dependence'])){
  1045. $dependence=$data['dependence'];
  1046. }else{
  1047. $dependence['item']['value']=date('m',time());
  1048. }
  1049. $i=(int)$dependence['item']['value'];
  1050. $res1['categories'][]=$dependence['item']['value'];
  1051. $res1['series'][0]['name']='采购量';
  1052. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1053. $res1['series'][1]['name']='使用量';
  1054. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1055. $res['status']=0;
  1056. $res['msg']='';
  1057. $res['data']=$res1;
  1058. return json($res);
  1059. }
  1060. //每月各类纸张采购量、使用量-有光双面铜版纸采购量
  1061. public function ygsm(){
  1062. $result=$this->month_paperdun();
  1063. $result1= $this->tt12new();
  1064. foreach($result as $k=>$v){
  1065. $list['categories'][]=$k;
  1066. $list['series'][0]['name']='有光双面铜版纸';
  1067. $list['series'][0]['data'][]=round($v['有光双面铜版纸']);
  1068. }
  1069. foreach($result1 as $k=>$v){
  1070. $list1['categories'][]=$k;
  1071. $list1['series'][0]['name']='有光双面铜版纸';
  1072. $list1['series'][0]['data'][]=round($v['有光双面铜版纸']);
  1073. }
  1074. $data=input('post.');
  1075. if(isset($data['dependence'])){
  1076. $dependence=$data['dependence'];
  1077. }else{
  1078. $dependence['item']['value']=date('m',time());
  1079. }
  1080. $i=(int)$dependence['item']['value'];
  1081. $res1['categories'][]=$dependence['item']['value'];
  1082. $res1['series'][0]['name']='采购量';
  1083. $res1['series'][0]['data'][]=$list['series'][0]['data'][$i-1];
  1084. $res1['series'][1]['name']='使用量';
  1085. $res1['series'][1]['data'][]=$list1['series'][0]['data'][$i-1];
  1086. $res['status']=0;
  1087. $res['msg']='';
  1088. $res['data']=$res1;
  1089. return json($res);
  1090. }
  1091. //2.4全年前十供应商采购量->接口调用
  1092. public function year_supplier(){
  1093. $redis = redis();
  1094. $list = json_decode($redis->get(md5('er_lst')),true);
  1095. $r_list = [];
  1096. //按照日期分类分组求和
  1097. foreach ($list as $item) {
  1098. $name = $item['公司'];
  1099. $key = md5($name);
  1100. $t = [];
  1101. $t['name'] = $name;
  1102. $t['number'] = floatval($item['namount']);//数量
  1103. $t['sumprice'] = floatval($item['含税金额']);//金额
  1104. $t['unit'] = trim($item['单位']);//单位
  1105. $t['nhss'] = $item['nhss'];//采购编号
  1106. $dweight = erp_price($t);
  1107. $dprice = $t['sumprice'];
  1108. if (isset($r_list[$key])) {
  1109. $r_list[$key]['name'] = $name;//
  1110. $r_list[$key]['dun'] += $dweight;//吨
  1111. $r_list[$key]['jine'] += $dprice;//金额
  1112. } else {
  1113. $r_list[$key]['name'] = $name;//
  1114. $r_list[$key]['dun'] = $dweight;//吨
  1115. $r_list[$key]['jine'] = $dprice;//金额
  1116. }
  1117. }
  1118. $sort_arr = [];//按金额
  1119. $sort_arr2 = [];//按吨
  1120. foreach($r_list as $key=>$value){
  1121. $sort_arr[$key] = $r_list[$key]['jine'];
  1122. $sort_arr2[$key] = $r_list[$key]['dun'];
  1123. }
  1124. //排序
  1125. array_multisort($sort_arr,SORT_DESC,$r_list);
  1126. //截取前10
  1127. $r_list = array_splice($r_list,0,10);
  1128. $r_list = array_values($r_list);
  1129. // echo "<pre>";print_r($r_list);echo "</pre>";die;
  1130. $result['columns']=[
  1131. ['name'=>'供应商','id'=>'name','width'=>'50','autoWrap'=>"true",'textAlign'=>'left'],
  1132. ['name'=>'总量(吨)','id'=>'dun','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  1133. ['name'=>'总金额(万元)','id'=>'jine','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  1134. ];
  1135. $delete = '有限公司';
  1136. foreach($r_list as $k=>$v){
  1137. if(strpos($v['name'],$delete)){
  1138. $v['name'] = substr_replace($v['name'],'',strpos($v['name'],$delete),strlen($delete));
  1139. }
  1140. $result['rows'][$k]['name']=$v['name'];
  1141. $result['rows'][$k]['dun']=floor($v['dun']);
  1142. $result['rows'][$k]['jine']=round($v['jine']/10000);
  1143. }
  1144. $res['status']=0;
  1145. $res['msg']='';
  1146. $res['data']=$result;
  1147. return json($res);
  1148. }
  1149. //2.5全年各类纸张采购量(吨)->接口调用
  1150. public function year_supplier_procurement(){
  1151. $redis = redis();
  1152. $list = json_decode($redis->get(md5('er_lst')),true);
  1153. $mainCate = getcateinfo();
  1154. foreach ($list as $item)
  1155. {
  1156. $catename = getCateName($item['czgmc']);
  1157. //是否属于主要纸张
  1158. if(!in_array($catename,$mainCate)){
  1159. continue;
  1160. }
  1161. $key = md5($catename);
  1162. $t = [];
  1163. $t['catename'] = $catename;//纸张名称
  1164. $t['dweight'] = $item['数量(吨)'];//克重
  1165. $t['sumprice'] = $item['含税金额'];//金额
  1166. $dweight = $t['dweight'];
  1167. $dprice = $t['sumprice'] ;
  1168. if (isset($r_list[$key])) {
  1169. $r_list[$key]['catename'] = $catename;//
  1170. $r_list[$key]['dun'] += $dweight;//吨
  1171. $r_list[$key]['jine'] += $dprice;//金额
  1172. } else {
  1173. $r_list[$key]['catename'] = $catename;//
  1174. $r_list[$key]['dun'] = $dweight;//吨
  1175. $r_list[$key]['jine'] = $dprice;//金额
  1176. }
  1177. }
  1178. //按吨位排序
  1179. $sort_arr = [];
  1180. foreach($r_list as $k=>$value){
  1181. $sort_arr[$k] = $r_list[$k]['dun'];
  1182. }
  1183. //排序
  1184. array_multisort($sort_arr,SORT_DESC,$r_list);
  1185. //截取前10
  1186. $r_list = array_splice($r_list,0,10);
  1187. $r_list = array_values($r_list);
  1188. // echo "全年各类纸张采购量";echo "<pre>";print_r($r_list);echo "</pre>";die;
  1189. $result =[];
  1190. foreach($r_list as $k=>$v){
  1191. $result['categories'][$k] =$v['catename'];
  1192. $result['series'][0]['name']='采购量';
  1193. $result['series'][1]['name']='金额';
  1194. $result['series'][0]['data'][$k]=round($v['dun']);
  1195. $result['series'][1]['data'][$k]=round($v['jine']/10000);
  1196. }
  1197. $res['status']=0;
  1198. $res['msg']='';
  1199. $res['data']=$result;
  1200. return json($res);
  1201. }
  1202. /**
  1203. * 第二屏第二页
  1204. */
  1205. //2.3-2每月各类纸张采购均价(第二页)->接口调用
  1206. public function month_paperjie(){
  1207. $redis = redis();
  1208. $list = json_decode($redis->get(md5('qer_lst')),true);
  1209. // halt($list);
  1210. $mainCate = getcateinfo();
  1211. foreach ($list as $item){
  1212. $catename = getCateName($item['czgmc']);
  1213. //是否属于主要纸张
  1214. if(!in_array($catename,$mainCate)){
  1215. continue;
  1216. }
  1217. $month = date('Ym',strtotime($item['darrival'] ));
  1218. $key = md5($catename.$month);
  1219. $t = [];
  1220. $t['dtime'] = $month;//月份
  1221. $t['catename'] = $catename;//纸张名称
  1222. $t['dweight'] = floatval($item['数量(吨)']);//
  1223. $t['sumprice'] = floatval($item['含税金额']);//金额
  1224. $dweight = $t['dweight'];
  1225. $dprice = $t['sumprice'] ;
  1226. if (isset($r_list[$key])) {
  1227. $r_list[$key]['catename'] = $catename;//
  1228. $r_list[$key]['month'] = $month;//
  1229. $r_list[$key]['dun'] += $dweight;//吨
  1230. $r_list[$key]['jine'] += $dprice;//金额
  1231. } else {
  1232. $r_list[$key]['catename'] = $catename;//
  1233. $r_list[$key]['month'] = $month;//
  1234. $r_list[$key]['dun'] = $dweight;//吨
  1235. $r_list[$key]['jine'] = $dprice;//金额
  1236. }
  1237. }
  1238. $c_list = [];
  1239. foreach($r_list as $item){
  1240. // $c_list[$item['month']][$item['catename']] = round($item['jine']/$item['dun']);
  1241. $c_list[$item['month']][$item['catename']] = floor($item['jine']/$item['dun']);
  1242. }
  1243. //补全分类
  1244. foreach ($c_list as &$val) {
  1245. $val = bucateinfo($val);
  1246. arsort($val);
  1247. }
  1248. //补全月份
  1249. // $month_arr = getYearInfo();
  1250. // foreach($month_arr as $m){
  1251. // if(!isset($c_list[$m])){
  1252. // $c_list[$m] = bucateinfo();
  1253. // }
  1254. // }
  1255. // echo "每月各类纸张采购均价(第二页)";echo "<pre>";print_r($c_list);echo "</pre>";die;
  1256. return $c_list;
  1257. }
  1258. //每月各类纸张采购均价-高白双胶
  1259. public function gbsjjun(){
  1260. $name = '高白双胶纸';
  1261. $result = $this->month_paperjie();
  1262. $list = [];
  1263. $i=0;
  1264. $j=0;
  1265. $prevdata=0;
  1266. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1267. foreach ($result as $k => $v) {
  1268. if($k<=date('Ym',time())&$v[$name]==0){
  1269. $v[$name]=$prevdata;
  1270. }
  1271. if($k>='202301'){
  1272. $list['series'][1]['name']='2023年';
  1273. $list['series'][1]['data'][$j]=$v[$name];
  1274. $j++;
  1275. }else{
  1276. $list['series'][0]['name']='2022年';
  1277. $list['series'][0]['data'][$i]=$v[$name];
  1278. $i++;
  1279. }
  1280. $prevdata=$v[$name];
  1281. }
  1282. $res['status'] = 0;
  1283. $res['msg'] = '';
  1284. $res['data'] = $list;
  1285. return json($res);
  1286. }
  1287. //每月各类纸张采购均价-纯雅纸均价
  1288. public function cyzjun(){
  1289. $name = '纯雅纸';
  1290. $result = $this->month_paperjie();
  1291. $list = [];
  1292. $i=0;
  1293. $j=0;
  1294. $prevdata=0;
  1295. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1296. foreach ($result as $k => $v) {
  1297. if($k<=date('Ym',time())&$v[$name]==0){
  1298. $v[$name]=$prevdata;
  1299. }
  1300. if($k>='202301'){
  1301. $list['series'][1]['name']='2023年';
  1302. $list['series'][1]['data'][$j]=$v[$name];
  1303. $j++;
  1304. }else{
  1305. $list['series'][0]['name']='2022年';
  1306. $list['series'][0]['data'][$i]=$v[$name];
  1307. $i++;
  1308. }
  1309. $prevdata=$v[$name];
  1310. }
  1311. $res['status'] = 0;
  1312. $res['msg'] = '';
  1313. $res['data'] = $list;
  1314. return json($res);
  1315. }
  1316. //每月各类纸张采购均价-纯质纸均价
  1317. public function czzjun(){
  1318. $name = '纯质纸';
  1319. $result = $this->month_paperjie();
  1320. $list = [];
  1321. $i=0;
  1322. $j=0;
  1323. $prevdata=0;
  1324. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1325. foreach ($result as $k => $v) {
  1326. if($k<=date('Ym',time())&$v[$name]==0){
  1327. $v[$name]=$prevdata;
  1328. }
  1329. if($k>='202301'){
  1330. $list['series'][1]['name']='2023年';
  1331. $list['series'][1]['data'][$j]=$v[$name];
  1332. $j++;
  1333. }else{
  1334. $list['series'][0]['name']='2022年';
  1335. $list['series'][0]['data'][$i]=$v[$name];
  1336. $i++;
  1337. }
  1338. $prevdata=$v[$name];
  1339. }
  1340. $res['status'] = 0;
  1341. $res['msg'] = '';
  1342. $res['data'] = $list;
  1343. return json($res);
  1344. }
  1345. //每月各类纸张采购均价-全灰板均价
  1346. public function qhbjun(){
  1347. $name = '全灰板';
  1348. $result = $this->month_paperjie();
  1349. $list = [];
  1350. $i=0;
  1351. $j=0;
  1352. $prevdata=0;
  1353. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1354. foreach ($result as $k => $v) {
  1355. if($k<=date('Ym',time())&$v[$name]==0){
  1356. $v[$name]=$prevdata;
  1357. }
  1358. if($k>='202301'){
  1359. $list['series'][1]['name']='2023年';
  1360. $list['series'][1]['data'][$j]=$v[$name];
  1361. $j++;
  1362. }else{
  1363. $list['series'][0]['name']='2022年';
  1364. $list['series'][0]['data'][$i]=$v[$name];
  1365. $i++;
  1366. }
  1367. $prevdata=$v[$name];
  1368. }
  1369. $res['status'] = 0;
  1370. $res['msg'] = '';
  1371. $res['data'] = $list;
  1372. return json($res);
  1373. }
  1374. //每月各类纸张采购均价-白卡纸均价
  1375. public function bkzjun(){
  1376. $name = '白卡纸';
  1377. $result = $this->month_paperjie();
  1378. $list = [];
  1379. $i=0;
  1380. $j=0;
  1381. $prevdata=0;
  1382. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1383. foreach ($result as $k => $v) {
  1384. if($k<=date('Ym',time())&$v[$name]==0){
  1385. $v[$name]=$prevdata;
  1386. }
  1387. if($k>='202301'){
  1388. $list['series'][1]['name']='2023年';
  1389. $list['series'][1]['data'][$j]=$v[$name];
  1390. $j++;
  1391. }else{
  1392. $list['series'][0]['name']='2022年';
  1393. $list['series'][0]['data'][$i]=$v[$name];
  1394. $i++;
  1395. }
  1396. $prevdata=$v[$name];
  1397. }
  1398. $res['status'] = 0;
  1399. $res['msg'] = '';
  1400. $res['data'] = $list;
  1401. return json($res);
  1402. }
  1403. //每月各类纸张采购均价-轻型纸均价
  1404. public function qxzjun(){
  1405. $name = '轻型纸';
  1406. $result = $this->month_paperjie();
  1407. $list = [];
  1408. $i=0;
  1409. $j=0;
  1410. $prevdata=0;
  1411. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1412. foreach ($result as $k => $v) {
  1413. if($k<=date('Ym',time())&$v[$name]==0){
  1414. $v[$name]=$prevdata;
  1415. }
  1416. if($k>='202301'){
  1417. $list['series'][1]['name']='2023年';
  1418. $list['series'][1]['data'][$j]=$v[$name];
  1419. $j++;
  1420. }else{
  1421. $list['series'][0]['name']='2022年';
  1422. $list['series'][0]['data'][$i]=$v[$name];
  1423. $i++;
  1424. }
  1425. $prevdata=$v[$name];
  1426. }
  1427. $res['status'] = 0;
  1428. $res['msg'] = '';
  1429. $res['data'] = $list;
  1430. return json($res);
  1431. }
  1432. //每月各类纸张采购均价-亚光双面铜版纸均价
  1433. public function ygsmtbjun(){
  1434. $name = '亚光双面铜版纸';
  1435. $result = $this->month_paperjie();
  1436. $list = [];
  1437. $i=0;
  1438. $j=0;
  1439. $prevdata=0;
  1440. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1441. foreach ($result as $k => $v) {
  1442. if($k<=date('Ym',time())&$v[$name]==0){
  1443. $v[$name]=$prevdata;
  1444. }
  1445. if($k>='202301'){
  1446. $list['series'][1]['name']='2023年';
  1447. $list['series'][1]['data'][$j]=$v[$name];
  1448. $j++;
  1449. }else{
  1450. $list['series'][0]['name']='2022年';
  1451. $list['series'][0]['data'][$i]=$v[$name];
  1452. $i++;
  1453. }
  1454. $prevdata=$v[$name];
  1455. }
  1456. $res['status'] = 0;
  1457. $res['msg'] = '';
  1458. $res['data'] = $list;
  1459. return json($res);
  1460. }
  1461. //每月各类纸张采购均价-轻涂纸均价
  1462. public function qtzjun(){
  1463. $name = '轻涂纸';
  1464. $result = $this->month_paperjie();
  1465. $list = [];
  1466. $i=0;
  1467. $j=0;
  1468. $prevdata=0;
  1469. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1470. foreach ($result as $k => $v) {
  1471. if($k<=date('Ym',time())&$v[$name]==0){
  1472. $v[$name]=$prevdata;
  1473. }
  1474. if($k>='202301'){
  1475. $list['series'][1]['name']='2023年';
  1476. $list['series'][1]['data'][$j]=$v[$name];
  1477. $j++;
  1478. }else{
  1479. $list['series'][0]['name']='2022年';
  1480. $list['series'][0]['data'][$i]=$v[$name];
  1481. $i++;
  1482. }
  1483. $prevdata=$v[$name];
  1484. }
  1485. $res['status'] = 0;
  1486. $res['msg'] = '';
  1487. $res['data'] = $list;
  1488. return json($res);
  1489. }
  1490. //每月各类纸张采购均价-彩画纸均价
  1491. public function chzjun(){
  1492. $name = '彩画纸';
  1493. $result = $this->month_paperjie();
  1494. $list = [];
  1495. $i=0;
  1496. $j=0;
  1497. $prevdata=0;
  1498. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1499. foreach ($result as $k => $v) {
  1500. if($k<=date('Ym',time())&$v[$name]==0){
  1501. $v[$name]=$prevdata;
  1502. }
  1503. if($k>='202301'){
  1504. $list['series'][1]['name']='2023年';
  1505. $list['series'][1]['data'][$j]=$v[$name];
  1506. $j++;
  1507. }else{
  1508. $list['series'][0]['name']='2022年';
  1509. $list['series'][0]['data'][$i]=$v[$name];
  1510. $i++;
  1511. }
  1512. $prevdata=$v[$name];
  1513. }
  1514. $res['status'] = 0;
  1515. $res['msg'] = '';
  1516. $res['data'] = $list;
  1517. return json($res);
  1518. }
  1519. //每月各类纸张采购均价-特种纸均价
  1520. public function tzzjun(){
  1521. $name = '特种纸';
  1522. $result = $this->month_paperjie();
  1523. $list = [];
  1524. $i=0;
  1525. $j=0;
  1526. $prevdata=0;
  1527. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1528. foreach ($result as $k => $v) {
  1529. if($k<=date('Ym',time())&$v[$name]==0){
  1530. $v[$name]=$prevdata;
  1531. }
  1532. if($k>='202301'){
  1533. $list['series'][1]['name']='2023年';
  1534. $list['series'][1]['data'][$j]=$v[$name];
  1535. $j++;
  1536. }else{
  1537. $list['series'][0]['name']='2022年';
  1538. $list['series'][0]['data'][$i]=$v[$name];
  1539. $i++;
  1540. }
  1541. $prevdata=$v[$name];
  1542. }
  1543. $res['status'] = 0;
  1544. $res['msg'] = '';
  1545. $res['data'] = $list;
  1546. return json($res);
  1547. }
  1548. //每月各类纸张采购均价-本白双胶纸均价
  1549. public function bbsjjun(){
  1550. $name = '本白双胶纸';
  1551. $result = $this->month_paperjie();
  1552. $list = [];
  1553. $i=0;
  1554. $j=0;
  1555. $prevdata=0;
  1556. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1557. foreach ($result as $k => $v) {
  1558. if($k<=date('Ym',time())&$v[$name]==0){
  1559. $v[$name]=$prevdata;
  1560. }
  1561. if($k>='202301'){
  1562. $list['series'][1]['name']='2023年';
  1563. $list['series'][1]['data'][$j]=$v[$name];
  1564. $j++;
  1565. }else{
  1566. $list['series'][0]['name']='2022年';
  1567. $list['series'][0]['data'][$i]=$v[$name];
  1568. $i++;
  1569. }
  1570. $prevdata=$v[$name];
  1571. }
  1572. $res['status'] = 0;
  1573. $res['msg'] = '';
  1574. $res['data'] = $list;
  1575. return json($res);
  1576. }
  1577. //每月各类纸张采购均价-有光双面铜版纸均价
  1578. public function ygsmtjun(){
  1579. $name = '有光双面铜版纸';
  1580. $result = $this->month_paperjie();
  1581. $list = [];
  1582. $i=0;
  1583. $j=0;
  1584. $prevdata=0;
  1585. $list['categories']=['01','02','03','04','05','06','07','08','09','10','11','12'];
  1586. foreach ($result as $k => $v) {
  1587. if($k<=date('Ym',time())&$v[$name]==0){
  1588. $v[$name]=$prevdata;
  1589. }
  1590. if($k>='202301'){
  1591. $list['series'][1]['name']='2023年';
  1592. $list['series'][1]['data'][$j]=$v[$name];
  1593. $j++;
  1594. }else{
  1595. $list['series'][0]['name']='2022年';
  1596. $list['series'][0]['data'][$i]=$v[$name];
  1597. $i++;
  1598. }
  1599. $prevdata=$v[$name];
  1600. }
  1601. $res['status'] = 0;
  1602. $res['msg'] = '';
  1603. $res['data'] = $list;
  1604. return json($res);
  1605. }
  1606. /**
  1607. * 三、库存情况
  1608. *
  1609. * 表说明
  1610. * ppin->库存表
  1611. * ppindetail->库存详情表
  1612. * dzzzgg->纸张规格表
  1613. * 表的关联
  1614. * ppin.cbillcode = ppindetail.cbillcode
  1615. * ppindetail.cpcode = dzzzgg.cpcode
  1616. * 字段说明
  1617. * ppin.darrival 时间
  1618. * ppin.cowner 本厂->厂料 其他代表各出版社
  1619. * ppindetail.namount 数量
  1620. * ppindetail.cpname 名称(关联纸张规格表,进行分类)
  1621. * ppindetail.cunit 单位(令、张、公斤)
  1622. *令(令数/顿折令(dzzzgg.nhss)) = 公斤
  1623. *张(张数/500/顿折令(dzzzgg.nhss)) = 公斤
  1624. * dzzzgg.czgmc 纸张名称分类
  1625. * dzzzgg.chj 纸张详情名称
  1626. */
  1627. //3.库存情况->缓存调用
  1628. public function tt3new(){
  1629. //链接定义 Redis
  1630. $redis = redis();
  1631. $redis_key = md5('tt3new');
  1632. //超过180天以上总量
  1633. $sql = "SELECT *
  1634. FROM (SELECT NN.cOwner 货主,
  1635. NN.库龄,
  1636. ROUND(SUM(NN.数量(吨)), 2) 数量(吨)
  1637. FROM (SELECT
  1638. cPlaceName,
  1639. cPaperCode,
  1640. cPaperName,
  1641. ID_Place,
  1642. cRoleName,
  1643. cBatchCode,
  1644. cUnit,
  1645. SUM(nAmount) AS nAmount,
  1646. CASE
  1647. WHEN cunit = '公斤' THEN SUM(nAmount) / 1000
  1648. WHEN cunit = '令' THEN
  1649. CASE
  1650. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 20
  1651. ELSE SUM(nAmount) / dzzzgg.nhss
  1652. END
  1653. WHEN cunit = '张' THEN
  1654. CASE
  1655. WHEN dzzzgg.nhss = 0 THEN SUM(nAmount) / 500 / 1.5
  1656. ELSE SUM(nAmount) / 500 / dzzzgg.nhss
  1657. END
  1658. ELSE 0
  1659. END AS '数量(吨)',
  1660. SUM(nNetAmount) AS nNetAmount,
  1661. CASE
  1662. WHEN cPaperType = '卷筒' AND nAmount <> 0 THEN COUNT(CASE WHEN nAmount = 0 THEN NULL ELSE cPaperCode END)
  1663. ELSE 0
  1664. END AS iCount,
  1665. iStoreAge,
  1666. CASE
  1667. WHEN cowner = '本厂' THEN
  1668. CASE
  1669. WHEN iStoreAge > 180 THEN '六个月以上'
  1670. ELSE '六个月以内'
  1671. END
  1672. ELSE ' '
  1673. END AS 库龄,
  1674. cStatus,
  1675. cOwner,
  1676. cPaperType,
  1677. dzzzgg.nhss
  1678. FROM
  1679. (SELECT
  1680. IFNULL( a.id, 0 ) AS id,
  1681. ttPlace.cPaperCode,
  1682. IFNULL( a.cBatchCode, '' ) AS cBatchCode,
  1683. ttPlace.id_place,
  1684. IFNULL( c.cbzdw, '' ) AS cUnit,
  1685. IFNULL( a.nAmount, 0 ) AS nAmount,
  1686. IFNULL( a.nNetAmount, 0 ) AS nNetAmount,
  1687. IFNULL( a.nAvailAmount, 0 ) AS nAvailAmount,
  1688. IFNULL( a.nLength, 0 ) AS nLength,
  1689. IFNULL( a.ID_mxcpck, 0 ) AS ID_mxcpck,
  1690. IFNULL( c.clb, '' ) AS cPaperType,
  1691. IFNULL( DATEDIFF( NOW( ), b.dDate ), 0 ) AS iStoreAge,
  1692. IFNULL( CASE b.iStatus WHEN 0 THEN '完好' WHEN 1 THEN '残破' WHEN 2 THEN '开裁' WHEN 3 THEN '换纸' END, '' ) AS cStatus,
  1693. IFNULL( b.cOwner, '' ) AS cOwner,
  1694. IFNULL( b.iExclusive, 0 ) AS iExclusive,
  1695. IFNULL( c.chj, '' ) AS cPaperName,
  1696. IFNULL( c.nkz, 0 ) AS nkz,
  1697. IFNULL( c.cgg, '' ) AS cgg,
  1698. c.ccd,
  1699. c.clb,
  1700. IFNULL( c.czgmc, '' ) AS czgmc,
  1701. c.nstate,
  1702. IFNULL( c.cOldSystemNumber, '' ) AS cOldSystemNumber,
  1703. IFNULL( c.nThickness, 0 ) AS nThickness,
  1704. IFNULL( d.cPlaceShowName, '' ) AS cPlaceName,
  1705. d.iRoleID,
  1706. IFNULL( d.cRoleName, '' ) AS cRoleName,
  1707. d.ckfmc,
  1708. d.ckfjc,
  1709. d.ikwxh,
  1710. d.ikwlx,
  1711. d.iForbid,
  1712. d.ikfsx,
  1713. d.iFlag,
  1714. d.iStoreForbid,
  1715. d.iProperty
  1716. FROM
  1717. (
  1718. SELECT
  1719. b.cPaperCode,
  1720. b.id_place
  1721. FROM
  1722. ( SELECT MAX( id ) AS id FROM ppDetailPlace GROUP BY cPaperCode, id_place ) AS a
  1723. INNER JOIN ppDetailPlace AS b ON b.id = a.id
  1724. ) AS ttPlace
  1725. 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,
  1726. c.ckfjc + '/' + a.ckwmc AS cPlaceShowName, a.cPlaceCode, a.iProperty, b.iRoleID, b.cRoleName, c.ckfmc, c.ckfjc, c.ikflb,
  1727. c.ikfsx, c.iForbid AS iStoreForbid, c.ibmID, c.iPaper, c.iStuff, c.iHalf, c.iFinish, c.iWaste, c.iTemp, c.iEntrust,
  1728. IFNULL(c.iPSStuff, 0) AS iPSStuff, c.iRollPaper_WeightRoll, c.iSample, c.iSampleLibrary
  1729. FROM dzkw AS a LEFT OUTER JOIN
  1730. (SELECT aa.ikfID, aa.iRoleID, bb.cRoleName
  1731. FROM dzStoreRole AS aa INNER JOIN
  1732. (SELECT ID, iRoleNO, cRoleName, cRemark, iType
  1733. FROM ppRole
  1734. WHERE (iType = 0)) AS bb ON aa.iRoleID = bb.ID) AS b ON a.ikfid = b.ikfID AND
  1735. a.iForbid = 0 LEFT OUTER JOIN
  1736. dzkf AS c ON a.ikfid = c.ID AND c.iForbid = 0) AS d ON ttPlace.id_place = d.ID
  1737. LEFT OUTER JOIN dzzzgg AS c ON ttPlace.cPaperCode = c.cbh
  1738. LEFT OUTER JOIN (
  1739. SELECT
  1740. id,
  1741. cPaperCode,
  1742. cBatchCode,
  1743. id_Place,
  1744. cUnit,
  1745. nAmount,
  1746. nAmount AS nNetAmount,
  1747. nAvailAmount,
  1748. 0 AS nLength,
  1749. ID_mxcpck
  1750. FROM
  1751. ppSubstanceDetail UNION ALL
  1752. SELECT
  1753. id,
  1754. cpapercode,
  1755. cbatchcode,
  1756. id_Place,
  1757. cUnit,
  1758. namount,
  1759. namount - nBrokenAmount AS nNetAmount,
  1760. ( CASE WHEN iFlag = 0 THEN IFNULL( namount, 0 ) ELSE 0 END ) AS nAvailAmount,
  1761. nLength,
  1762. ID_mxcpck
  1763. FROM
  1764. ppSubstanceDetailRoll
  1765. ) AS a ON a.cPaperCode = ttPlace.cPaperCode
  1766. AND a.id_Place = ttPlace.id_place
  1767. LEFT OUTER JOIN ppBatchProp AS b ON a.cBatchCode = b.cBatchCode
  1768. AND a.cPaperCode = b.cPaperCode) kc
  1769. LEFT JOIN dzzzgg ON dzzzgg.cbh = kc.cPaperCode
  1770. WHERE
  1771. 1 = 1
  1772. -- AND cRoleName LIKE '%卷筒纸库管%'
  1773. AND nAmount <> 0
  1774. -- AND cOwner = '求是杂志社'
  1775. -- AND cPaperCode ='J128078072033'
  1776. GROUP BY
  1777. cPaperName,
  1778. cPaperCode,
  1779. ID_Place,
  1780. cPlaceName,
  1781. cRoleName,
  1782. cBatchCode,
  1783. cUnit,
  1784. iStoreAge,
  1785. cStatus,
  1786. cOwner,
  1787. cPaperType,
  1788. namount,
  1789. dzzzgg.nhss) NN
  1790. GROUP BY NN.cOwner,
  1791. NN.库龄)KC
  1792. ORDER BY CASE
  1793. WHEN KC.库龄 = '六个月以上' THEN 1
  1794. WHEN KC.库龄 = '六个月以内' THEN 2
  1795. ELSE 3
  1796. END,
  1797. KC.数量(吨) DESC";
  1798. // ORDER BY CASE
  1799. // WHEN KC.库龄 = '六个月以上' THEN 1
  1800. // WHEN KC.库龄 = '六个月以内' THEN 2
  1801. // ELSE 3
  1802. // END,
  1803. // KC.数量(吨) DESC
  1804. $list = Db::query($sql);
  1805. $list = array_splice($list,0,10);
  1806. //将查询结果存入 Redis 缓存中
  1807. $redis->set($redis_key, json_encode($list));
  1808. return json($list);
  1809. }
  1810. //库存情况->接口调用
  1811. public function inventorydgz(){
  1812. $redis = redis();
  1813. $result = json_decode($redis->get(md5('tt3new')),true);
  1814. $list['columns']=[
  1815. ['name'=>'货主','id'=>'cOwnerName','width'=>'40','autoWrap'=>"true",'textAlign'=>'left'],
  1816. ['name'=>'库龄','id'=>'year','width'=>'25','autoWrap'=>"true",'textAlign'=>'left'],
  1817. ['name'=>'数量(吨)','id'=>'nAmount','width'=>'25','autoWrap'=>"true",'textAlign'=>'left']
  1818. ];
  1819. $i=0;
  1820. $delete = '有限公司';
  1821. foreach($result as $v){
  1822. if(strpos($v['货主'],$delete)){
  1823. $v['货主'] = substr_replace($v['货主'],'',strpos($v['货主'],$delete),strlen($delete));
  1824. }
  1825. $list['rows'][$i]['cOwnerName']=$v['货主'];
  1826. $list['rows'][$i]['year']=$v['库龄'];
  1827. $list['rows'][$i]['nAmount']=round($v['数量(吨)']);
  1828. $i++;
  1829. }
  1830. // foreach($result as $v){
  1831. // $list['rows'][$i]['cOwnerName']=trim($v['货主']);
  1832. // $list['rows'][$i]['year']=$v['库龄'];
  1833. // $list['rows'][$i]['nAmount']=round($v['数量(吨)']);
  1834. // $i++;
  1835. // }
  1836. // halt($result);
  1837. $res['status']=0;
  1838. $res['msg']='';
  1839. $res['data']=$list;
  1840. return json($res);
  1841. }
  1842. /**
  1843. * 四、全年辅料采购量
  1844. */
  1845. //全年辅料采购量->缓存调用
  1846. public function accessories_number(){
  1847. //链接定义 Redis
  1848. $redis = redis();
  1849. $redis_key = md5('accessories_number');
  1850. //辅料教材采购数据
  1851. $sql = "SELECT *
  1852. FROM (SELECT DD.大类名称,
  1853. DD.供应商,
  1854. ROUND(SUM(DD.数量), 2) AS 数量,
  1855. DD.单位,
  1856. ROUND(SUM(DD.金额)/10000, 2) AS '金额(万元)'
  1857. FROM (SELECT NN.cdlmc AS 大类名称,
  1858. NN.cclmc AS 材料名称,
  1859. NN.cywdwmc AS 供应商,
  1860. NN.nbzsl AS 数量,
  1861. NN.nTaxBuyPrice AS 单价,
  1862. NN.nTaxPrice,
  1863. NN.cdw AS 单位,
  1864. ROUND(NN.nTaxMoney, 2) AS 金额
  1865. FROM (SELECT b.ixtrkdbh,
  1866. b.crkdbh,
  1867. a.cclbh,
  1868. a.cclmc,
  1869. a.cdw,
  1870. a.cgg,
  1871. c.ccd,
  1872. a.nbzsl,
  1873. a.nbzdj,
  1874. a.nbzje,
  1875. b.cywdwmc,
  1876. -- Linkstr(a.imxid) AS cPlace,
  1877. a.cph,
  1878. b.dzdrq,
  1879. b.cbz,
  1880. b.cczymc,
  1881. b.cDeliveryCode,
  1882. CASE a.cBuyUnit
  1883. WHEN '' THEN a.cdw
  1884. ELSE a.cBuyUnit
  1885. END AS cBuyUnit,
  1886. CASE a.cBuyUnit
  1887. WHEN '' THEN a.nbzdj
  1888. ELSE a.nBuyPrice
  1889. END AS nBuyPrice,
  1890. c.cycbh,
  1891. d.nTaxBuyPrice,
  1892. d.nTaxPrice,
  1893. IFNULL(d.nTaxPrice, 0) * a.nbzsl AS nTaxMoney,
  1894. b.iPlant,
  1895. a.cBillCode_Buy,
  1896. e.cBillCode AS cInNoticeCode,
  1897. b.cBillCode_Source,
  1898. b.iSourceType,
  1899. c.cdlmc,
  1900. c.cxlmc,
  1901. a.cCode_ProductOrder,
  1902. a.cCode_AProduct,
  1903. a.cName_AProduct,
  1904. a.cVer_AProduct,
  1905. a.ID_Request,
  1906. a.cCode_JobOrder
  1907. FROM mxrkcl a
  1908. LEFT JOIN zbrk b ON a.ixtrkdbh = b.ixtrkdbh
  1909. LEFT JOIN ptkccl c ON a.cclbh = c.cclbm
  1910. LEFT JOIN stInNoticeDetail d ON a.cInNoticeCode = d.cBillCode
  1911. AND a.cInNoticeStuffCode = d.cStuffCode
  1912. LEFT JOIN stInNotice e ON e.cBillCode = d.cBillCode
  1913. LEFT JOIN skBuy f ON f.id = e.ID_skBuy
  1914. WHERE b.bsw = 1
  1915. AND 1 = 1
  1916. AND b.iState = 2
  1917. AND b.bth = 0
  1918. AND b.drkrq BETWEEN '{$this->start_time()}' AND '{$this->end_time()}'
  1919. ) NN
  1920. ) DD
  1921. GROUP BY DD.大类名称,
  1922. DD.供应商,
  1923. DD.单位
  1924. ) AA
  1925. ORDER BY AA.`金额(万元)` DESC;";
  1926. //执行查询结果
  1927. $res = Db::query($sql);
  1928. //将查询结果存入 Redis 缓存中
  1929. $redis->set($redis_key, json_encode($res));
  1930. echo date("Y-m-d H:i:s").' 存进去了';
  1931. return $res;
  1932. }
  1933. //全年辅料采购量->接口调用
  1934. public function accessories(){
  1935. $redis = redis();
  1936. $result = json_decode($redis->get(md5('accessories_number')),true);
  1937. // echo "全年辅料采购量";echo "<pre>";print_r($o_list);echo "</pre>";die;
  1938. $list=[];
  1939. $list['columns']=[
  1940. ['name'=>'大类名称','id'=>'cdlmc','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  1941. ['name'=>'供应商','id'=>'cdwmc','width'=>'28','autoWrap'=>"true",'textAlign'=>'left'],
  1942. ['name'=>'数量','id'=>'nAmount','width'=>'20','autoWrap'=>"true",'textAlign'=>'left'],
  1943. ['name'=>'单位','id'=>'cdw','width'=>'15','autoWrap'=>"true",'textAlign'=>'left'],
  1944. ['name'=>'金额(万元)','id'=>'nMoney','width'=>'22','autoWrap'=>"true",'textAlign'=>'left']
  1945. ];
  1946. $i=0;
  1947. foreach($result as $v){
  1948. $list['rows'][$i]['cdlmc']=trim($v['大类名称']);
  1949. $list['rows'][$i]['cdwmc']=trim($v['供应商']);
  1950. $list['rows'][$i]['nAmount']=round($v['数量']);
  1951. $list['rows'][$i]['cdw']=trim($v['单位']);
  1952. $list['rows'][$i]['nMoney']=round($v['金额(万元)']);
  1953. $i++;
  1954. }
  1955. // echo "全年辅料采购量";echo "<pre>";print_r($list);echo "</pre>";die;
  1956. $res['status']=0;
  1957. $res['msg']='';
  1958. $res['data']=$list;
  1959. return json($res);
  1960. }
  1961. }