GhsClass.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. namespace bizGhs\ghs\classes;
  3. use bizGhs\base\classes\BaseClass;
  4. use bizGhs\order\classes\PurchaseOrderClass;
  5. use bizGhs\shop\classes\ShopClass;
  6. use common\components\imgUtil;
  7. use Yii;
  8. class GhsClass extends BaseClass
  9. {
  10. public static $baseFile = '\bizGhs\ghs\models\Ghs';
  11. //供货商列表 ssh 20221220
  12. public static function getGhsList($where)
  13. {
  14. $data = self::getList('*', $where, 'debtAmount DESC,inTurn DESC,addTime DESC');
  15. $data['list'] = self::groupBaseInfo($data['list']);
  16. return $data;
  17. }
  18. public static function groupBaseInfo($list)
  19. {
  20. if (empty($list)) {
  21. return $list;
  22. }
  23. $ids = array_column($list, 'shopId');
  24. $shopInfo = ShopClass::getByIds($ids, null, 'id');
  25. foreach ($list as $key => $val) {
  26. $avatar = $val['avatar'] ?? '';
  27. $list[$key]['shortAvatar'] = $avatar;
  28. $list[$key]['avatar'] = imgUtil::groupImg($avatar);
  29. $currentShopId = $val['shopId'] ?? 0;
  30. //新人福利和推荐福利
  31. $xrFl = $shopInfo[$currentShopId]['xrFl'] ?? 0;
  32. $xrFlAmount = $shopInfo[$currentShopId]['xrFlAmount'] ?? 0;
  33. $tjFl = $shopInfo[$currentShopId]['tjFl'] ?? 0;
  34. $tjFlAmount = $shopInfo[$currentShopId]['tjFlAmount'] ?? 0;
  35. $list[$key]['xrFl'] = $xrFl;
  36. $list[$key]['xrFlAmount'] = $xrFlAmount;
  37. $list[$key]['tjFl'] = $tjFl;
  38. $list[$key]['tjFlAmount'] = $tjFlAmount;
  39. $list[$key]['miniKilo'] = $shopInfo[$currentShopId]['miniKilo'] ?? 0;
  40. $list[$key]['kiloFee'] = $shopInfo[$currentShopId]['kiloFee'] ?? 0;
  41. $list[$key]['presell'] = $shopInfo[$currentShopId]['presell'] ?? 0;
  42. $isOpen = 0;
  43. $list[$key]['isOpen'] = $isOpen;
  44. $list[$key]['openStartTime'] = $shopInfo[$currentShopId]['openStartTime'] ?? '';
  45. $list[$key]['openEndTime'] = $shopInfo[$currentShopId]['openEndTime'] ?? '';
  46. $count = PurchaseOrderClass::getCount(['ghsId' => $val['id'], 'debt' => PurchaseOrderClass::DEBT_YES]);
  47. $debtAmount = PurchaseOrderClass::sum(['ghsId' => $val['id'], 'debt' => PurchaseOrderClass::DEBT_YES], 'actPrice');
  48. $list[$key]['debtNum'] = $count;
  49. $list[$key]['debtAmount'] = $debtAmount;
  50. }
  51. return $list;
  52. }
  53. //下载供货商 ssh 20240506
  54. public static function getGhsFile($mainId)
  55. {
  56. $ghsList = GhsClass::getAllByCondition(['ownMainId' => $mainId], null, '*');
  57. if (!empty($ghsList)) {
  58. foreach ($ghsList as $key => $ghs) {
  59. $count = PurchaseOrderClass::getCount(['ghsId' => $ghs['id'], 'debt' => PurchaseOrderClass::DEBT_YES]);
  60. $debtAmount = PurchaseOrderClass::sum(['ghsId' => $ghs['id'], 'debt' => PurchaseOrderClass::DEBT_YES], 'actPrice');
  61. $ghsList[$key]['debtNum'] = $count ?? 0;
  62. $ghsList[$key]['debtAmount'] = $debtAmount ?? 0;
  63. }
  64. }
  65. $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
  66. require_once($phpExcelFile . 'Classes/PHPExcel.php');
  67. $objPHPExcel = new \PHPExcel();
  68. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  69. ->setLastModifiedBy("Maarten Balliauw")
  70. ->setTitle("Office 2007 XLSX Document")
  71. ->setSubject("Office 2007 XLSX Document")
  72. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  73. ->setKeywords("office 2007 openxml php")
  74. ->setCategory("file");
  75. $ghsTitle = '供货商';
  76. $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
  77. $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
  78. $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
  79. $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
  80. $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
  81. $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
  82. $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
  83. $objPHPExcel->getActiveSheet()->setCellValue('A1', 'ID');
  84. $objPHPExcel->getActiveSheet()->setCellValue('B1', '供货商');
  85. $objPHPExcel->getActiveSheet()->setCellValue('C1', '欠款');
  86. $objPHPExcel->getActiveSheet()->setCellValue('D1', '笔数');
  87. //设置宽度
  88. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(40);
  89. //加粗
  90. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
  91. $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
  92. $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
  93. $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
  94. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  95. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  96. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  97. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  98. $baseRow = 2;
  99. foreach ($ghsList as $key => $ghs) {
  100. $i = $baseRow + $key;
  101. $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $ghs['id']);
  102. $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $ghs['name']);
  103. $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $ghs['debtAmount']);
  104. $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $ghs['debtNum']);
  105. //居左
  106. $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  107. $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  108. $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  109. $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  110. }
  111. $fileName = '供货商-' . date("m-d");
  112. $objPHPExcel->getActiveSheet()->setTitle($fileName);
  113. $objPHPExcel->setActiveSheetIndex(0);
  114. $dir = './priceTable/' . $mainId;
  115. if (file_exists($dir) == false) {
  116. mkdir($dir, 0777, true);
  117. }
  118. $date = $fileName;
  119. $file = $date . '.xls';
  120. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  121. if (file_exists($dir . '/' . $file)) {
  122. unlink($dir . '/' . $file);
  123. }
  124. $objWriter->save($dir . '/' . $file);
  125. return ['file' => '/priceTable/' . $mainId . '/' . $file, 'shortFile' => $file];
  126. }
  127. }