CustomDebtChangeClass.php 11 KB

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