From 7aa29e8f3fc89a5241f3a32d6be3c40aef694b64 Mon Sep 17 00:00:00 2001 From: chenzhi Date: Tue, 25 May 2021 17:54:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=AF=8F=E6=9C=88=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=8F=8A=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/GameMarginController.class.php | 160 +++++++++++++++++- .../Admin/View/GameMargin/marginView.html | 8 +- Public/Admin/excel/gamemargin.xlsx | Bin 0 -> 11877 bytes 3 files changed, 157 insertions(+), 11 deletions(-) create mode 100644 Public/Admin/excel/gamemargin.xlsx diff --git a/Application/Admin/Controller/GameMarginController.class.php b/Application/Admin/Controller/GameMarginController.class.php index c124c08bf..9670fa32c 100644 --- a/Application/Admin/Controller/GameMarginController.class.php +++ b/Application/Admin/Controller/GameMarginController.class.php @@ -45,17 +45,12 @@ class GameMarginController extends AdminController if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ $is_export = true; - $this->export($info); - $this->assign("percent",''); + $this->marginExport($info); }else{ $is_export= false; $this->marginCount($info); - $this->assign("percent",'%'); } - - $this->assign("year", $info['count_year']); - $this->assign("month", $info['count_month']); $this->assign("id", $id); $this->assign("is_export",$is_export); $this->display(); @@ -105,10 +100,13 @@ class GameMarginController extends AdminController $count['jh_pay_amount'] += $v['jh_pay_amount']; $count['jh_statement_amount'] += $v['jh_statement_amount']; $count['jh_margin_amount'] += $v['jh_margin_amount']; - + $v['year'] = $info['count_year']; + $v['month'] = $info['count_month']; $this->sprintfCell($v); } // $count['cp_ratio'] = round( $count['cp_statement_amount']/$count['pay_amount'] ,4)*100; + $count['year'] = $info['count_year']; + $count['month'] = $info['count_month']; $count['pu_ratio'] = round( $count['pu_statement_amount']/$count['pu_pay_amount'] ,4)*100; $count['pu_margin_ratio'] = round( $count['pu_margin_amount']/$count['pu_pay_amount'] ,4)*100; @@ -125,6 +123,154 @@ class GameMarginController extends AdminController $this->assign("data",$marginInfo); $this->assign("count",$count); } + private function marginExport($info) + { + header("Content-type: text/html; charset=utf-8"); + error_reporting(E_ALL); + ini_set('display_errors', TRUE); + ini_set('display_startup_errors', TRUE); + + define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '
'); + + Vendor("PHPExcel.PHPExcel"); + $objReader = \PHPExcel_IOFactory::createReader('excel2007'); + //设置模板文件 + $objPHPExcel = $objReader->load("Public/Admin/excel/gamemargin.xlsx"); + $marginInfo = json_decode($info['margin_info'],true); + $line = 3; + $objPHPExcel->getActiveSheet()->insertNewRowBefore($line+1,count($marginInfo)-1); + + foreach ($marginInfo as &$v) { + // $v["cp_ratio"] = "=ROUND(G{$line}/D{$line},4)"; + + if($v["pc_pay_amount"] > 0){ + $v["pc_ratio"] ="=ROUND(M{$line}/K{$line},2)"; + $v["pc_margin_amount"] = "=ROUND((K{$line}*(1-E{$line})*(1-F{$line}-H{$line}-L{$line})),2)"; + $v["pc_margin_ratio"] ="=ROUND(N{$line}/K{$line},3)"; + } + if ($v["pu_pay_amount"] > 0) { + $v["pu_ratio"] ="=ROUND(R{$line}/P{$line},2)"; + $v["pu_margin_amount"] = "=ROUND((P{$line}-P{$line}*(1-E{$line})*(F{$line}+H{$line})-R{$line}),2)"; + $v["pu_margin_ratio"] = "=ROUND(S{$line}/P{$line},3)"; + } + $v['platform_margin_ratio'] = "=ROUND((D{$line}-V{$line}-G{$line}-I{$line}-J{$line}-M{$line}-R{$line})/(D{$line}-V{$line}),3)"; + + if($v['jh_pay_amount'] > 0){ + $v["jh_ratio"] ="=ROUND(X{$line}/V{$line},2)"; + $v["jh_margin_amount"] = "=ROUND((X{$line}-V{$line}*(1-E{$line})*(F{$line}+H{$line})),2)"; + $v["jh_margin_ratio"] = "=ROUND(Y{$line}/V{$line},3)"; + } + + $v['margin_amount'] = "=ROUND((D{$line}-G{$line}-I{$line}-J{$line}-M{$line}-R{$line}+X{$line}),2)"; + $v['margin_ratio'] = "=ROUND(AB{$line}/D{$line},3)"; + + + $objPHPExcel->getActiveSheet() + ->setCellValue('A'.$line, $info['count_year']) + ->setCellValue('B'.$line, $info['count_month']) + ->setCellValue('C'.$line, $v['relation_game_name']) + ->setCellValue('D'.$line, $v['pay_amount']) + ->setCellValue('E'.$line, $v['cp_promote_ratio']/100) + ->setCellValue('F'.$line, $v['cp_ratio']/100) + ->setCellValue('G'.$line, $v['cp_statement_amount']) + ->setCellValue('H'.$line, $v['cp_rebate_ratio']) + ->setCellValue('I'.$line, $v['cp_rebate_amount']) + ->setCellValue('J'.$line, $v['cp_other_amount']) + ->setCellValue('K'.$line, $v['pc_pay_amount']) + ->setCellValue('L'.$line, $v['pc_ratio']) + ->setCellValue('M'.$line, $v['pc_statement_amount']) + ->setCellValue('N'.$line, $v['pc_margin_amount']) + ->setCellValue('O'.$line, $v['pc_margin_ratio']) + ->setCellValue('P'.$line, $v['pu_pay_amount']) + ->setCellValue('Q'.$line, $v['pu_ratio']) + ->setCellValue('R'.$line, $v['pu_statement_amount']) + ->setCellValue('S'.$line, $v['pu_margin_amount']) + ->setCellValue('T'.$line, $v['pu_margin_ratio']) + ->setCellValue('U'.$line, $v['platform_margin_ratio']) + ->setCellValue('V'.$line, $v['jh_pay_amount']) + ->setCellValue('W'.$line, $v['jh_ratio']) + ->setCellValue('X'.$line, $v['jh_statement_amount']) + ->setCellValue('Y'.$line, $v['jh_margin_amount']) + ->setCellValue('Z'.$line, $v['jh_margin_ratio']) + ->setCellValue('AA'.$line, $v['margin_ratio']) + ->setCellValue('AB'.$line, $v['margin_amount']); + $line ++; + } + + $countLine = $line; + $line--; + + $count = [ + "pay_amount"=>"=SUM(D3:D{$line})", + // "cp_ratio"=>"=ROUND(G{$countLine}/D{$countLine},4)", + "cp_statement_amount"=>"=SUM(G3:G{$line})", + "cp_rebate_amount"=>"=SUM(I3:I{$line})", + "cp_other_amount"=>"=SUM(J3:J{$line})", + + "pc_pay_amount"=>"=SUM(K3:K{$line})", + "pc_ratio"=>"=ROUND(M{$countLine}/K{$countLine},4)", + "pc_statement_amount"=>"=SUM(M3:M{$line})", + "pc_margin_amount"=>"=SUM(N3:N{$line})", + "pc_margin_ratio"=>"=ROUND(N{$countLine}/K{$countLine},4)", + + "pu_pay_amount"=>"=SUM(P3:P{$line})", + "pu_statement_amount"=>"=SUM(R3:R{$line})", + "pu_ratio"=>"=ROUND(R{$countLine}/P{$countLine},4)", + "pu_margin_amount"=>"=SUM(S3:S{$line})", + "pu_margin_ratio"=>"=ROUND(S{$countLine}/P{$countLine},4)", + + "platform_margin_ratio"=>"=ROUND((D{$countLine}-V{$countLine}-G{$countLine}-I{$countLine}-J{$countLine}-M{$countLine}-R{$countLine})/(D{$countLine}-V{$countLine}),4)", + + "jh_pay_amount"=>"=SUM(V3:V{$line})", + "jh_statement_amount"=>"=SUM(X3:X{$line})", + "jh_ratio"=>"=ROUND(X{$countLine}/V{$countLine},4)", + "jh_margin_amount"=>"=SUM(Y3:Y{$line})", + "jh_margin_ratio"=>"=ROUND(Y{$countLine}/V{$countLine},4)", + "margin_ratio"=>"=ROUND(AB{$countLine}/D{$countLine},4)", + "margin_amount"=>"=SUM(AB3:AB{$line})", + + ]; + + $line ++; + $objPHPExcel->getActiveSheet() + ->setCellValue('A'.$line, $info['count_year']) + ->setCellValue('B'.$line, $info['count_month']) + ->setCellValue('D'.$line, $count['pay_amount']) + ->setCellValue('G'.$line, $count['cp_statement_amount']) + ->setCellValue('I'.$line, $count['cp_rebate_amount']) + ->setCellValue('J'.$line, $count['cp_other_amount']) + ->setCellValue('K'.$line, $count['pc_pay_amount']) + ->setCellValue('L'.$line, $count['pc_ratio']) + ->setCellValue('M'.$line, $count['pc_statement_amount']) + ->setCellValue('N'.$line, $count['pc_margin_amount']) + ->setCellValue('O'.$line, $count['pc_margin_ratio']) + ->setCellValue('P'.$line, $count['pu_pay_amount']) + ->setCellValue('Q'.$line, $count['pu_ratio']) + ->setCellValue('R'.$line, $count['pu_statement_amount']) + ->setCellValue('S'.$line, $count['pu_margin_amount']) + ->setCellValue('T'.$line, $count['pu_margin_ratio']) + ->setCellValue('U'.$line, $count['platform_margin_ratio']) + ->setCellValue('V'.$line, $count['jh_pay_amount']) + ->setCellValue('W'.$line, $count['jh_ratio']) + ->setCellValue('X'.$line, $count['jh_statement_amount']) + ->setCellValue('Y'.$line, $count['jh_margin_amount']) + ->setCellValue('Z'.$line, $count['jh_margin_ratio']) + ->setCellValue('AA'.$line, $count['margin_ratio']) + ->setCellValue('AB'.$line, $count['margin_amount']); + + $fileName = "{$info['count_year']}-{$info['count_month']}毛利分析表"; + ob_end_clean();//清除缓冲区,避免乱码 + header('pragma:public'); + header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$fileName.'".xlsx'); + header("Content-Disposition:attachment;filename={$fileName}.xlsx");//attachment新窗口打印inline本窗口打印 + $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'excel2007'); + $objWriter->save('php://output'); + exit; + + + } + + private function export($info) { $marginInfo = json_decode($info['margin_info'],true); diff --git a/Application/Admin/View/GameMargin/marginView.html b/Application/Admin/View/GameMargin/marginView.html index 5ff4d7f17..7bb392f23 100644 --- a/Application/Admin/View/GameMargin/marginView.html +++ b/Application/Admin/View/GameMargin/marginView.html @@ -157,8 +157,8 @@ - {$year} - {$month} + {$margin["year"]} + {$margin["month"]} {$margin["relation_game_name"]} {$margin["pay_amount"]} {$margin["cp_promote_ratio"]}% @@ -193,8 +193,8 @@ - {$year} - {$month} + {$count["year"]} + {$count["month"]} 小计 {$count["pay_amount"]} diff --git a/Public/Admin/excel/gamemargin.xlsx b/Public/Admin/excel/gamemargin.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4899d84d7b68a56097052cb77c16c2616ffca86b GIT binary patch literal 11877 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 literal 0 HcmV?d00001