wugg 2 years ago
parent
commit
2983168b69
1 changed files with 106 additions and 17 deletions
  1. 106 17
      app/admin/controller/Stat.php

+ 106 - 17
app/admin/controller/Stat.php

@@ -186,6 +186,9 @@ FROM
         $temp = ["p" => "总计", 'item' => "-", "thtotal" => 0, "total" => 0, "mthfee" => 0, "wtotal" => 0, "wthfee" => 0, "dtotal" => 0, "thfee" => 0, "tips" => 0, "rate" => 0, "thrate" => 0];
         $tips = Db::name("depart_tips")->field("depart_id ,total_tips")->where("year=YEAR('{$dtae}') and month=month('{$dtae}')")->select();
         $kdata = [];
+        try{
+        $wlb =$this->innterOrder($endtime);
+        if(!empty($wlb)) $data=array_merge($data,$wlb);
         foreach ($data as $key => $value) {
             $value['tips'] = 0;
             foreach ($tips as $val) {
@@ -237,6 +240,9 @@ FROM
         array_multisort($sort, SORT_ASC, $list);
         array_push($list, $temp);
         $list = array_reverse($list);
+        }catch (\Exception $e){
+            return error_show(1004, $e->getFile()."|".$e->getLine()."|".$e->getMessage());
+        }
         return app_show(0, "获取成功", $list);
 
     }
@@ -245,8 +251,13 @@ FROM
     {
         $list = [];
         foreach ($data as $key => $value) {
-
-            isset($list[$value['depar_id']]) ? "" : $list[$value['depar_id']] = ['total' => 0, 'mthfee' => 0, 'tips' => 0, 'wtotal' => 0, 'wthfee' => 0, 'dtotal' => 0,
+            $temp['total'] += $value['total'];
+            $temp['mthfee'] += $value['mthfee'];
+            $temp['wtotal'] += $value['wtotal'];
+            $temp['wthfee'] += $value['wthfee'];
+            $temp['thfee'] += $value['thfee'];
+            $temp['dtotal'] += $value['dtotal'];
+            isset($list[$value['depar_id']]) ? "" : $list[$value['depar_id']] = ['total' => 0, 'mthfee' => 0, 'tips' => $value['tips'], 'wtotal' => 0, 'wthfee' => 0, 'dtotal' => 0,
                 'child' => [], 'depart' => '', 'thfee' => 0, 'thtotal' => 0];
             $list[$value['depar_id']]['total'] += $value['total'];
             $list[$value['depar_id']]['mthfee'] += $value['mthfee'];
@@ -255,21 +266,7 @@ FROM
             $list[$value['depar_id']]['dtotal'] += $value['dtotal'];
             $list[$value['depar_id']]['thfee'] += $value['thfee'];
             $list[$value['depar_id']]['thtotal'] += $value['thtotal'];
-            $list[$value['depar_id']]['tips'] += is_null($value['tips']) || $value['tips'] == 0 ? 0 : $value['tips'];
-
-            $temp['total'] += $value['total'];
-            $temp['mthfee'] += $value['mthfee'];
-            $temp['wtotal'] += $value['wtotal'];
-            $temp['wthfee'] += $value['wthfee'];
-            $temp['thfee'] += $value['thfee'];
-            $temp['dtotal'] += $value['dtotal'];
-            $temp['tips'] += is_null($value['tips']) || $value['tips'] == 0 ? 0 : $value['tips'];
-            $temp['thtotal'] += $value['thtotal'];
-            if (is_null($value['tips']) || $value['tips'] == 0) {
-                $value['tips'] = "-";
-            } else {
-                $value['tips'] = sprintf("%.2f", $value['tips']);
-            }
+            $value['tips']="-";
             $value['total'] = sprintf("%.2f", $value['total']);
             $value['mthfee'] = sprintf("%.2f", $value['mthfee']);
             $value['wtotal'] = sprintf("%.2f", $value['wtotal']);
@@ -281,6 +278,98 @@ FROM
             $list[$value['depar_id']]['depart'] = $value['depart'];
 
         }
+        $temp['tips'] = array_sum(array_column($list,'tips'));
+        return $list;
+    }
+
+
+    public function innterOrder($endtime)
+    {
+        $db =Db::connect("mysql3");
+        $list = $db->query("SELECT
+	a.suppitem as p,
+	       a.depart,
+       43 as  depar_id,
+	m,
+	a.sale_total AS total,
+	`a`.`th_total` AS `mthfee`,
+	IFNULL(w,WEEK('{$endtime}',1)) as w,
+	IFNULL(b.sale_total,0) AS wtotal,
+	ifnull( `b`.`th_total`, 0 ) AS `wthfee`,
+	IFNULL(c.d,date_format('{$endtime}', '%Y-%m-%d' )) as d,
+	IFNULL(c.sale_total,0) AS dtotal,
+	ifnull( `c`.`th_total`, 0 ) AS `thfee` 
+FROM
+	(
+	SELECT MONTH
+		( ordertime ) AS m,
+		sum( sale_total ) AS sale_total,
+		suppitem,
+        depart,
+		(
+		SELECT
+			ifnull( sum( t.th_qrd_fee ), 0 ) 
+		FROM
+					cfp_th_source t LEFT JOIN source_all l on 	l.productNo = t.th_qrdcpNo
+		WHERE
+		 t.th_qrdcpNo <> ''  and l.depart=k.depart and l.suppitem=k.suppitem and t.th_status<>3
+			AND DATE_FORMAT ( t.createtime,'%Y-%m' )  = DATE_FORMAT ( '{$endtime}' ,'%Y-%m') 
+		) AS th_total
+
+	FROM
+		source_all k
+	WHERE
+			DATE_FORMAT(ordertime,'%Y-%m') = DATE_FORMAT('{$endtime}','%Y-%m')
+	GROUP BY
+		suppitem,depart,
+		m 
+	) AS a
+	LEFT JOIN (
+	SELECT WEEK
+		( ordertime, 1 ) AS w,
+		sum( sale_total ) AS sale_total,
+		suppitem,
+        depart,
+	(
+		SELECT
+			ifnull( sum( t.th_qrd_fee ), 0 ) 
+		FROM
+					cfp_th_source t LEFT JOIN source_all l on 	l.productNo = t.th_qrdcpNo
+		WHERE
+		 t.th_qrdcpNo <> ''  and l.depart=k.depart and l.suppitem=k.suppitem and t.th_status<>3
+			AND week ( t.createtime,1 ) = WEEK ( '{$endtime}', 1 ) and DATE_FORMAT ( t.createtime,'%Y' )  = DATE_FORMAT ( '{$endtime}' ,'%Y') 
+		) AS th_total 
+	FROM
+		source_all k
+	WHERE
+		WEEK ( ordertime, 1 ) = WEEK ( '{$endtime}', 1 )  and DATE_FORMAT ( ordertime,'%Y' )  = DATE_FORMAT ( '{$endtime}' ,'%Y') 
+	GROUP BY
+		suppitem,depart,
+		w 
+	) AS b ON a.suppitem = b.suppitem  and a.depart=b.depart
+	LEFT JOIN (
+	SELECT
+		date_format( ordertime, '%Y-%m-%d' ) AS d,
+		sum( sale_total ) AS sale_total,
+		suppitem,depart,
+		(
+
+		SELECT
+			ifnull( sum( t.th_qrd_fee ), 0 ) 
+		FROM
+					cfp_th_source t LEFT JOIN source_all l on 	l.productNo = t.th_qrdcpNo
+		WHERE
+		 t.th_qrdcpNo <> ''  and l.depart=k.depart and l.suppitem=k.suppitem and t.th_status<>3
+			AND date_format ( t.createtime,'%Y-%m-%d') = date_format ( '{$endtime}', '%Y-%m-%d' )
+		) AS th_total 	FROM
+		source_all k
+	WHERE
+		date_format( ordertime, '%Y-%m-%d' ) = date_format( '{$endtime}', '%Y-%m-%d' ) 
+	GROUP BY
+		suppitem,depart,
+	d 
+	) AS c ON a.suppitem = c.suppitem  and a.depart=c.depart
+");
         return $list;
     }
 }