Files
charge-pile-serve/app/controller/Order/CountExcel.php

104 lines
4.0 KiB
PHP
Raw Permalink Normal View History

2025-11-10 16:12:07 +08:00
<?php
namespace app\controller\Order;
use Overtrue\Pinyin\Pinyin;
use think\facade\Db;
class CountExcel
{
public function AmountExcel($start_time,$end_time){
$end_time = date("Y-m-d",strtotime("+1day",strtotime($end_time)));
$date = $this->getDateFromRange($start_time,$end_time);
$RechargeAmountTotal = 0;
$RefundAmountTotal = 0;
$RechargeNumTotal = 0;
$RefundNumTotal = 0;
$OrderAmountTotal = 0;
$OrderNumTotal = 0;
$ServiceAmountTotal = 0;
$mess =array();
foreach ($date as $d){
$area = Db::table('area_three')->column('area');
$RechargeAmount = 0;
$RefundAmount = 0;
$RechargeNum = 0;
$RefundNum = 0;
$OrderAmount = 0;
$OrderNum = 0;
$ServiceAmount = 0;
$degree_pri = 0;
foreach ($area as $a){
$s = $this->GetArea($a);
$table_refund = 'refund_'.$s;
$table_order = 'charge_order_'.$s;
$table_recharge = 'recharge_'.$s;
$recharge = Db::table($table_recharge);
$RechargeAmount += $recharge->whereDay('success_time',$d)->sum('total');
$RechargeNum += $recharge->whereDay('success_time',$d)->count();
$order = Db::table($table_order);
$OrderAmount += $order->whereDay('charge_date',$d)->sum('TotalMoney');
$OrderNum += $order->whereDay('charge_date',$d)->count();
$refund = Db::table($table_refund);
$RefundAmount += $refund->whereDay('create_time',$d)->sum('refund_total');
$RefundNum += $refund->whereDay('create_time',$d)->count();
if (strtotime($d)<strtotime('2023-02-03 00:00:00')){
$degree_pri += $order->whereDay('charge_date',$d)->sum('TotalPower');
$ServiceAmount += round($degree_pri*0.2,2);
}else{
$ServiceAmount += $order->whereDay('charge_date',$d)->sum('SeviceMoney');
}
}
$kk['RechargeAmount'] = round($RechargeAmount/100,2);
$kk['RechargeNum'] = $RechargeNum;
$kk['OrderAmount'] = round($OrderAmount,2);
$kk['OrderNum'] = $OrderNum;
$kk['RefundAmount'] = round($RefundAmount/100,2);
$kk['RefundNum'] = $RefundNum;
$kk['ServiceAmount'] = round($ServiceAmount,2);
$kk['Time'] = $d;
$mess['per'][] = $kk;
//['time'=>$d,'data' => $kk];
$RechargeAmountTotal += $RechargeAmount;
$RefundAmountTotal += $RefundAmount;
$RechargeNumTotal += $RechargeNum;
$RefundNumTotal += $RefundNum;
$OrderAmountTotal += $OrderAmount;
$OrderNumTotal += $OrderNum;
$ServiceAmountTotal += $ServiceAmount;
}
$ss['RechargeAmountTotal']=round($RechargeAmountTotal/100,2);
$ss['RefundAmountTotal']=round($RefundAmountTotal/100,2);
$ss['RechargeNumTotal']=$RechargeNumTotal;
$ss['RefundNumTotal']=$RefundNumTotal;
$ss['OrderAmountTotal']=round($OrderAmountTotal,2);
$ss['OrderNumTotal']=$OrderNumTotal;
$ss['ServiceAmountTotal'] = round($ServiceAmountTotal,2);
$mess['total'] = [$ss];
return json($mess);
}
private function GetArea($area){
$pinyin = new Pinyin();
$s = $pinyin->sentence($area);
$s = strtr($s,array(' '=>''));
return $s;
}
private function getDateFromRange($startdate, $enddate): array
{
$stimestamp = strtotime($startdate);
$etimestamp = strtotime($enddate);
// 计算日期段内有多少天
$days = ($etimestamp-$stimestamp)/86400;
// 保存每天日期
$date = array();
for($i=0; $i<$days; $i++){
$date[] = date('Y-m-d', $stimestamp+(86400*$i));
}
return $date;
}
}