PurchaseOrderItemClass.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. namespace bizGhs\order\classes;
  3. use common\components\util;
  4. use Yii;
  5. use bizGhs\base\classes\BaseClass;
  6. class PurchaseOrderItemClass extends BaseClass
  7. {
  8. public static $baseFile = '\bizGhs\order\models\PurchaseOrderItem';
  9. public static function batchAddOrderItem($data)
  10. {
  11. self::batchAdd($data);
  12. }
  13. public static function getOrderItemDetail($orderSn)
  14. {
  15. return self::getAllByCondition(['orderSn' => $orderSn], null, '*');
  16. }
  17. //导出excel ssh 20241127
  18. public static function exportExcel($order, $orderList, $mainId)
  19. {
  20. $ghsName = $order->ghsName ?? '';
  21. $orderSn = $order->orderSn ?? '';
  22. $fileTitle = $ghsName . '_' . $orderSn;
  23. if (empty($orderList)) {
  24. util::fail('没有数据需要导出');
  25. }
  26. $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
  27. require_once($phpExcelFile . 'Classes/PHPExcel.php');
  28. $objPHPExcel = new \PHPExcel();
  29. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  30. ->setLastModifiedBy("Maarten Balliauw")
  31. ->setTitle("Office 2007 XLSX Document")
  32. ->setSubject("Office 2007 XLSX Document")
  33. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  34. ->setKeywords("office 2007 openxml php")
  35. ->setCategory("file");
  36. $ghsTitle = '花材列表';
  37. $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
  38. $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
  39. $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
  40. $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
  41. $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
  42. $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
  43. $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
  44. //设置宽度
  45. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
  46. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
  47. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
  48. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
  49. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
  50. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(16);
  51. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(16);
  52. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(16);
  53. //加粗
  54. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(13)->setBold(true);
  55. $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(13)->setBold(true);
  56. $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(13)->setBold(true);
  57. $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(13)->setBold(true);
  58. $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(13)->setBold(true);
  59. $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(13)->setBold(true);
  60. $objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setSize(13)->setBold(true);
  61. $objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setSize(13)->setBold(true);
  62. $objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setSize(13)->setBold(true);
  63. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  64. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  65. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  66. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  67. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  68. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  69. $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  70. $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  71. $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  72. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  73. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  74. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  75. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  76. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  77. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  78. $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  79. $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  80. $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  81. $objPHPExcel->getActiveSheet()->setCellValue('A1', '花材ID');
  82. $objPHPExcel->getActiveSheet()->setCellValue('B1', '花材名称');
  83. $objPHPExcel->getActiveSheet()->setCellValue('C1', '数量');
  84. $objPHPExcel->getActiveSheet()->setCellValue('D1', '单价');
  85. $objPHPExcel->getActiveSheet()->setCellValue('E1', '总价');
  86. $objPHPExcel->getActiveSheet()->setCellValue('F1', '预留1');
  87. $objPHPExcel->getActiveSheet()->setCellValue('G1', '预留2');
  88. $objPHPExcel->getActiveSheet()->setCellValue('H1', '预留3');
  89. $objPHPExcel->getActiveSheet()->setCellValue('I1', '预留4');
  90. $baseRow = 2;
  91. foreach ($orderList as $key => $order) {
  92. $i = $baseRow + $key;
  93. $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $order['productId']);
  94. $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $order['name']);
  95. $itemNum = floatval($order['itemNum']);
  96. $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $itemNum);
  97. $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $order['bigPrice']);
  98. $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $order['totalPrice']);
  99. $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, '');
  100. $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, '');
  101. $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, '');
  102. $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, '');
  103. //居中
  104. $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  105. $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  106. $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  107. $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  108. $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  109. $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  110. $objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  111. $objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  112. $objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  113. $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getFont()->setSize(13);
  114. $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getFont()->setSize(13);
  115. $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getFont()->setSize(13);
  116. $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getFont()->setSize(13);
  117. $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getFont()->setSize(13);
  118. $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getFont()->setSize(13);
  119. $objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getFont()->setSize(13);
  120. $objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getFont()->setSize(13);
  121. $objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getFont()->setSize(13);
  122. }
  123. $fileName = $fileTitle;
  124. $objPHPExcel->getActiveSheet()->setTitle($fileName);
  125. $objPHPExcel->setActiveSheetIndex(0);
  126. $dir = './cgItemExcel/' . $mainId;
  127. if (file_exists($dir) == false) {
  128. mkdir($dir, 0777, true);
  129. }
  130. $date = $fileName;
  131. $file = $date . '.xls';
  132. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  133. if (file_exists($dir . '/' . $file)) {
  134. unlink($dir . '/' . $file);
  135. }
  136. $objWriter->save($dir . '/' . $file);
  137. $fileUrl = Yii::$app->params['ghsHost'] . '/cgItemExcel/' . $mainId . '/' . $file;
  138. util::success(['file' => $fileUrl, 'shortFile' => $file]);
  139. }
  140. }