CustomBalanceChangeClass.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. namespace bizGhs\custom\classes;
  3. use common\components\util;
  4. use bizHd\base\classes\BaseClass;
  5. use Yii;
  6. class CustomBalanceChangeClass extends BaseClass
  7. {
  8. public static $baseFile = '\bizGhs\custom\models\CustomBalanceChange';
  9. public static function getChangeList($where)
  10. {
  11. $data = self::getList('*', $where, 'addTime DESC,id DESC');
  12. return $data;
  13. }
  14. public static function exportData($respond, $mainId)
  15. {
  16. $orderList = $respond['list'] ?? [];
  17. if (empty($orderList)) {
  18. util::fail('没有数据需要导出');
  19. }
  20. $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
  21. require_once($phpExcelFile . 'Classes/PHPExcel.php');
  22. $objPHPExcel = new \PHPExcel();
  23. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  24. ->setLastModifiedBy("Maarten Balliauw")
  25. ->setTitle("Office 2007 XLSX Document")
  26. ->setSubject("Office 2007 XLSX Document")
  27. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  28. ->setKeywords("office 2007 openxml php")
  29. ->setCategory("file");
  30. $ghsTitle = '余额变动记录';
  31. $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
  32. $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
  33. $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
  34. $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
  35. $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
  36. $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
  37. $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
  38. $objPHPExcel->getActiveSheet()->setCellValue('A1', 'ID');
  39. $objPHPExcel->getActiveSheet()->setCellValue('B1', '日期');
  40. $objPHPExcel->getActiveSheet()->setCellValue('C1', '客户ID');
  41. $objPHPExcel->getActiveSheet()->setCellValue('D1', '客户名称');
  42. $objPHPExcel->getActiveSheet()->setCellValue('E1', '类型');
  43. $objPHPExcel->getActiveSheet()->setCellValue('F1', '支付方式');
  44. $objPHPExcel->getActiveSheet()->setCellValue('G1', '事项');
  45. $objPHPExcel->getActiveSheet()->setCellValue('H1', '人员');
  46. $objPHPExcel->getActiveSheet()->setCellValue('I1', '变动');
  47. $objPHPExcel->getActiveSheet()->setCellValue('J1', '余额');
  48. $objPHPExcel->getActiveSheet()->setCellValue('K1', '备注');
  49. //设置宽度
  50. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
  51. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
  52. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
  53. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
  54. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
  55. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(16);
  56. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(20);
  57. //加粗
  58. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
  59. $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
  60. $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
  61. $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
  62. $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(9)->setBold(true);
  63. $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(9)->setBold(true);
  64. $objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setSize(9)->setBold(true);
  65. $objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setSize(9)->setBold(true);
  66. $objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setSize(9)->setBold(true);
  67. $objPHPExcel->getActiveSheet()->getStyle('J1')->getFont()->setSize(9)->setBold(true);
  68. $objPHPExcel->getActiveSheet()->getStyle('K1')->getFont()->setSize(9)->setBold(true);
  69. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  70. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  71. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  72. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  73. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  74. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  75. $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  76. $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  77. $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  78. $objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  79. $objPHPExcel->getActiveSheet()->getStyle('K1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  80. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  81. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  82. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  83. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  84. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  85. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  86. $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  87. $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  88. $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  89. $objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  90. $objPHPExcel->getActiveSheet()->getStyle('K1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  91. $baseRow = 2;
  92. foreach ($orderList as $key => $order) {
  93. $i = $baseRow + $key;
  94. $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $order['id']);
  95. $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $order['addTime']);
  96. $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $order['customId']);
  97. $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $order['customName']);
  98. $capitalType = $order['capitalType'];
  99. $capName = '-';
  100. if ($capitalType == 75) {
  101. $capName = '售后返充';
  102. }
  103. if ($capitalType == 62) {
  104. $capName = '线下充值';
  105. }
  106. if ($capitalType == 66) {
  107. $capName = '线上充值';
  108. }
  109. if ($capitalType == 64) {
  110. $capName = '结账';
  111. }
  112. $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $capName);
  113. $payWay = $order['payWay'];
  114. $payName = '-';
  115. if ($capitalType == 62 || $capitalType == 66) {
  116. if ($payWay == 0) {
  117. $payName = '微信';
  118. }
  119. if ($payWay == 1) {
  120. $payName = '支付宝';
  121. }
  122. if ($payWay == 2) {
  123. $payName = '余额';
  124. }
  125. if ($payWay == 4) {
  126. $payName = '现金';
  127. }
  128. if ($payWay == 5) {
  129. $payName = '银行卡';
  130. }
  131. }
  132. $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $payName);
  133. $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $order['event']);
  134. $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $order['staffName']);
  135. $amount = isset($order['io']) && $order['io'] == 1 ? '+'.$order['amount'] : '-'.$order['amount'];
  136. $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $amount);
  137. $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $order['balance']);
  138. $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $order['remark']);
  139. //居中
  140. $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  141. $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  142. $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  143. $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  144. $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  145. $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  146. $objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  147. $objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  148. $objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  149. $objPHPExcel->getActiveSheet()->getStyle('J' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  150. $objPHPExcel->getActiveSheet()->getStyle('K' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  151. }
  152. $fileName = '余额变动记录-' . time();
  153. $objPHPExcel->getActiveSheet()->setTitle($fileName);
  154. $objPHPExcel->setActiveSheetIndex(0);
  155. $dir = './priceTable/' . $mainId;
  156. if (file_exists($dir) == false) {
  157. mkdir($dir, 0777, true);
  158. }
  159. $date = $fileName;
  160. $file = $date . '.xls';
  161. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  162. if (file_exists($dir . '/' . $file)) {
  163. unlink($dir . '/' . $file);
  164. }
  165. $objWriter->save($dir . '/' . $file);
  166. $fileUrl = Yii::$app->params['ghsHost'] . '/priceTable/' . $mainId . '/' . $file;
  167. util::success(['file' => $fileUrl, 'shortFile' => $file]);
  168. }
  169. }