优化每月计算及导出

master
chenzhi 4 years ago
parent 1728886f1f
commit 7aa29e8f3f

@ -45,17 +45,12 @@ class GameMarginController extends AdminController
if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ if (isset($_REQUEST['export']) && $_REQUEST['export']==1){
$is_export = true; $is_export = true;
$this->export($info); $this->marginExport($info);
$this->assign("percent",'');
}else{ }else{
$is_export= false; $is_export= false;
$this->marginCount($info); $this->marginCount($info);
$this->assign("percent",'%');
} }
$this->assign("year", $info['count_year']);
$this->assign("month", $info['count_month']);
$this->assign("id", $id); $this->assign("id", $id);
$this->assign("is_export",$is_export); $this->assign("is_export",$is_export);
$this->display(); $this->display();
@ -105,10 +100,13 @@ class GameMarginController extends AdminController
$count['jh_pay_amount'] += $v['jh_pay_amount']; $count['jh_pay_amount'] += $v['jh_pay_amount'];
$count['jh_statement_amount'] += $v['jh_statement_amount']; $count['jh_statement_amount'] += $v['jh_statement_amount'];
$count['jh_margin_amount'] += $v['jh_margin_amount']; $count['jh_margin_amount'] += $v['jh_margin_amount'];
$v['year'] = $info['count_year'];
$v['month'] = $info['count_month'];
$this->sprintfCell($v); $this->sprintfCell($v);
} }
// $count['cp_ratio'] = round( $count['cp_statement_amount']/$count['pay_amount'] ,4)*100; // $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_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; $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("data",$marginInfo);
$this->assign("count",$count); $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 : '<br />');
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) private function export($info)
{ {
$marginInfo = json_decode($info['margin_info'],true); $marginInfo = json_decode($info['margin_info'],true);

@ -157,8 +157,8 @@
</if> </if>
<foreach name="data" item="margin"> <foreach name="data" item="margin">
<tr> <tr>
<td>{$year}</td> <td>{$margin["year"]}</td>
<td>{$month}</td> <td>{$margin["month"]}</td>
<td>{$margin["relation_game_name"]}</td> <td>{$margin["relation_game_name"]}</td>
<td>{$margin["pay_amount"]}</td> <td>{$margin["pay_amount"]}</td>
<td>{$margin["cp_promote_ratio"]}%</td> <td>{$margin["cp_promote_ratio"]}%</td>
@ -193,8 +193,8 @@
</tr> </tr>
</foreach> </foreach>
<tr style="font-weight: 800;font-size: 14px;"> <tr style="font-weight: 800;font-size: 14px;">
<td>{$year}</td> <td>{$count["year"]}</td>
<td>{$month}</td> <td>{$count["month"]}</td>
<td>小计</td> <td>小计</td>
<td>{$count["pay_amount"]}</td> <td>{$count["pay_amount"]}</td>
<td></td> <td></td>

Loading…
Cancel
Save