ShopYeChangeClass.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace biz\shop\classes;
  3. use biz\base\classes\BaseClass;
  4. use common\components\util;
  5. use Yii;
  6. class ShopYeChangeClass extends BaseClass
  7. {
  8. public static $baseFile = '\biz\shop\models\ShopYeChange';
  9. public static function addChange($change, $returnObj = false)
  10. {
  11. return self::add($change, $returnObj);
  12. }
  13. public static function getChangeList($where)
  14. {
  15. $data = self::getList('*', $where, 'addTime DESC,id DESC');
  16. return $data;
  17. }
  18. public static function exportData($respond, $mainId)
  19. {
  20. $orderList = $respond['list'] ?? [];
  21. if (empty($orderList)) {
  22. util::fail('没有数据需要导出');
  23. }
  24. $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
  25. require_once($phpExcelFile . 'Classes/PHPExcel.php');
  26. $objPHPExcel = new \PHPExcel();
  27. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  28. ->setLastModifiedBy("Maarten Balliauw")
  29. ->setTitle("Office 2007 XLSX Document")
  30. ->setSubject("Office 2007 XLSX Document")
  31. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  32. ->setKeywords("office 2007 openxml php")
  33. ->setCategory("file");
  34. $ghsTitle = '余额明细';
  35. $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
  36. $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
  37. $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
  38. $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
  39. $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
  40. $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
  41. $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
  42. $objPHPExcel->getActiveSheet()->setCellValue('A1', '时间');
  43. $objPHPExcel->getActiveSheet()->setCellValue('B1', '事项');
  44. $objPHPExcel->getActiveSheet()->setCellValue('C1', '类型');
  45. $objPHPExcel->getActiveSheet()->setCellValue('D1', '金额');
  46. $objPHPExcel->getActiveSheet()->setCellValue('E1', '余额');
  47. $objPHPExcel->getActiveSheet()->setCellValue('F1', '可提现');
  48. //设置宽度
  49. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
  50. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(50);
  51. //加粗
  52. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
  53. $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
  54. $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
  55. $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
  56. $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(9)->setBold(true);
  57. $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(9)->setBold(true);
  58. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  59. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  60. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  61. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  62. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  63. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  64. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  65. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  66. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  67. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  68. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  69. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  70. $baseRow = 2;
  71. foreach ($orderList as $key => $orderData) {
  72. $i = $baseRow + $key;
  73. $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $orderData['addTime']);
  74. $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $orderData['event']);
  75. $ioStyle = isset($orderData['io']) && $orderData['io'] == 1 ? '收入':'支出';
  76. $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $ioStyle);
  77. $amount = isset($orderData['io']) && $orderData['io'] == 1 ? '+'.$orderData['amount'] : '-'.$orderData['amount'];
  78. $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $amount);
  79. //$objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $orderData['amount']);
  80. $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $orderData['balance']);
  81. $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $orderData['txBalance']);
  82. //居左
  83. $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  84. $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  85. $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  86. $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  87. $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  88. $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  89. }
  90. $fileName = '余额明细-' . time();
  91. $objPHPExcel->getActiveSheet()->setTitle($fileName);
  92. $objPHPExcel->setActiveSheetIndex(0);
  93. $dir = './priceTable/' . $mainId;
  94. if (file_exists($dir) == false) {
  95. mkdir($dir, 0777, true);
  96. }
  97. $date = $fileName;
  98. $file = $date . '.xls';
  99. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  100. if (file_exists($dir . '/' . $file)) {
  101. unlink($dir . '/' . $file);
  102. }
  103. $objWriter->save($dir . '/' . $file);
  104. $fileUrl = Yii::$app->params['ghsHost'] . '/priceTable/' . $mainId . '/' . $file;
  105. util::success(['file' => $fileUrl, 'shortFile' => $file]);
  106. }
  107. }