StatCgGhsClass.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. namespace biz\stat\classes;
  3. use biz\base\classes\BaseClass;
  4. use common\components\util;
  5. use Yii;
  6. class StatCgGhsClass extends BaseClass
  7. {
  8. public static $baseFile = '\biz\stat\models\StatCgGhs';
  9. //花店采购统计 ssh 20220402
  10. public static function hdCgGhsReplace($add, $cgInfo, $amount, $num, $date = null)
  11. {
  12. $sjId = $cgInfo->sjId ?? 0;
  13. $mainId = $cgInfo->mainId ?? 0;
  14. $ghsId = $cgInfo->ghsId ?? 0;
  15. $time = $date == null ? date('Ymd') : $date;
  16. $stat = self::getByCondition(['sjId' => $sjId, 'mainId' => $mainId, 'ghsId' => $ghsId, 'time' => $time], true);
  17. if (empty($stat)) {
  18. $stat = self::add(['mainId' => $mainId, 'sjId' => $sjId, 'ghsId' => $ghsId, 'time' => $time], true);
  19. }
  20. $id = $stat->id;
  21. $unique = self::getLockById($id);
  22. if ($add) {
  23. $currentAmount = bcadd($unique->amount, $amount, 2);
  24. $unique->amount = $currentAmount;
  25. } else {
  26. $currentAmount = bcsub($unique->refundAmount, $amount, 2);
  27. $unique->refundAmount = $currentAmount;
  28. }
  29. $unique->num = bcadd($unique->num, $num);
  30. $unique->save();
  31. StatCgGhsMonthClass::hdCgGhsReplace($add, $cgInfo, $amount, $num, $time);
  32. }
  33. //城市批发商采购统计 ssh 2021012
  34. public static function ghsReplace($cgInfo, $date = null)
  35. {
  36. $sjId = $cgInfo->sjId ?? 0;
  37. $mainId = $cgInfo->mainId ?? 0;
  38. $ghsId = $cgInfo->ghsId ?? 0;
  39. $time = $date == null ? date('Ymd') : $date;
  40. $stat = self::getByCondition(['sjId' => $sjId, 'mainId' => $mainId, 'ghsId' => $ghsId, 'time' => $time], true);
  41. if (empty($stat)) {
  42. $stat = self::add(['mainId' => $mainId, 'sjId' => $sjId, 'ghsId' => $ghsId, 'time' => $time], true);
  43. }
  44. $id = $stat->id;
  45. $amount = $cgInfo->price ?? 0;
  46. $totalFreight = $cgInfo->totalFreight ?? 0;
  47. if ($totalFreight > 0) {
  48. $amount = bcadd($totalFreight, $amount, 2);
  49. }
  50. $unique = self::getLockById($id);
  51. $num = $cgInfo->itemNum ?? 0;
  52. $currentNum = bcadd($unique->num, $num, 2);
  53. $unique->num = $currentNum;
  54. $currentAmount = bcadd($unique->amount, $amount, 2);
  55. $unique->amount = $currentAmount;
  56. $unique->save();
  57. StatCgGhsMonthClass::ghsReplace($cgInfo, $time);
  58. }
  59. //退款统计
  60. public static function ghsRefundReplace($cgInfo, $date = null)
  61. {
  62. $sjId = $cgInfo->sjId ?? 0;
  63. $shopId = $cgInfo->shopId ?? 0;
  64. $ghsId = $cgInfo->ghsId ?? 0;
  65. $time = $date == null ? date('Ymd') : $date;
  66. $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'ghsId' => $ghsId, 'time' => $time], true);
  67. if (empty($stat)) {
  68. $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'ghsId' => $ghsId, 'time' => $time], true);
  69. }
  70. $id = $stat->id;
  71. $unique = self::getLockById($id);
  72. $num = $cgInfo->itemNum ?? 0;
  73. $refundPrice = $cgInfo->refundPrice ?? 0;
  74. $currentRefundNum = bcadd($unique->refundNum, $num, 2);
  75. $currentRefundAmount = bcadd($unique->refundAmount, $refundPrice, 2);
  76. $unique->refundNum = $currentRefundNum;
  77. $unique->refundAmount = $currentRefundAmount;
  78. $unique->save();
  79. StatCgGhsMonthClass::ghsRefundReplace($cgInfo, $time);
  80. }
  81. public static function exportCgGhsYj($list, $mainId)
  82. {
  83. $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
  84. require_once($phpExcelFile . 'Classes/PHPExcel.php');
  85. $objPHPExcel = new \PHPExcel();
  86. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  87. ->setLastModifiedBy("Maarten Balliauw")
  88. ->setTitle("Office 2007 XLSX Document")
  89. ->setSubject("Office 2007 XLSX Document")
  90. ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
  91. ->setKeywords("office 2007 openxml php")
  92. ->setCategory("file");
  93. $ghsTitle = '供货商';
  94. $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
  95. $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
  96. $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
  97. $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
  98. $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
  99. $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
  100. $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
  101. $objPHPExcel->getActiveSheet()->setCellValue('A1', 'ID');
  102. $objPHPExcel->getActiveSheet()->setCellValue('B1', '供货商');
  103. $objPHPExcel->getActiveSheet()->setCellValue('C1', '手机号');
  104. $objPHPExcel->getActiveSheet()->setCellValue('D1', '订单数');
  105. $objPHPExcel->getActiveSheet()->setCellValue('E1', '订单金额');
  106. $objPHPExcel->getActiveSheet()->setCellValue('F1', '退款金额');
  107. $objPHPExcel->getActiveSheet()->setCellValue('G1', '实际金额');
  108. $objPHPExcel->getActiveSheet()->setCellValue('H1', '纸箱费');
  109. $objPHPExcel->getActiveSheet()->setCellValue('I1', '打包费');
  110. $objPHPExcel->getActiveSheet()->setCellValue('J1', '运费');
  111. //设置宽度
  112. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
  113. //加粗
  114. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
  115. $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
  116. $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
  117. $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
  118. $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setSize(9)->setBold(true);
  119. $objPHPExcel->getActiveSheet()->getStyle('F1')->getFont()->setSize(9)->setBold(true);
  120. $objPHPExcel->getActiveSheet()->getStyle('G1')->getFont()->setSize(9)->setBold(true);
  121. $objPHPExcel->getActiveSheet()->getStyle('H1')->getFont()->setSize(9)->setBold(true);
  122. $objPHPExcel->getActiveSheet()->getStyle('I1')->getFont()->setSize(9)->setBold(true);
  123. $objPHPExcel->getActiveSheet()->getStyle('J1')->getFont()->setSize(9)->setBold(true);
  124. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  125. $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  126. $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  127. $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  128. $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  129. $objPHPExcel->getActiveSheet()->getStyle('F1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  130. $objPHPExcel->getActiveSheet()->getStyle('G1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  131. $objPHPExcel->getActiveSheet()->getStyle('H1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  132. $objPHPExcel->getActiveSheet()->getStyle('I1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  133. $objPHPExcel->getActiveSheet()->getStyle('J1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  134. $baseRow = 2;
  135. foreach ($list as $key => $custom) {
  136. $i = $baseRow + $key;
  137. $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $custom['id']);
  138. $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $custom['name']);
  139. $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, '');
  140. $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $custom['num']);
  141. $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $custom['orderPrice']);
  142. $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $custom['tkPrice']);
  143. $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $custom['actPrice']);
  144. $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $custom['carton']);
  145. $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $custom['pack']);
  146. $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $custom['freight']);
  147. //居左
  148. $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  149. $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  150. $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  151. $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  152. $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  153. $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  154. $objPHPExcel->getActiveSheet()->getStyle('G' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  155. $objPHPExcel->getActiveSheet()->getStyle('H' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  156. $objPHPExcel->getActiveSheet()->getStyle('I' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  157. $objPHPExcel->getActiveSheet()->getStyle('J' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  158. }
  159. $fileName = '供货商业绩-' . date("m-d");
  160. $objPHPExcel->getActiveSheet()->setTitle($fileName);
  161. $objPHPExcel->setActiveSheetIndex(0);
  162. $dir = './priceTable/' . $mainId;
  163. if (file_exists($dir) == false) {
  164. mkdir($dir, 0777, true);
  165. }
  166. $date = $fileName;
  167. $file = $date . '.xls';
  168. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  169. if (file_exists($dir . '/' . $file)) {
  170. unlink($dir . '/' . $file);
  171. }
  172. $objWriter->save($dir . '/' . $file);
  173. $fileUrl = Yii::$app->params['ghsHost'] . '/priceTable/' . $mainId . '/' . $file;
  174. util::success(['file' => $fileUrl, 'shortFile' => $file]);
  175. }
  176. }