ソースを参照

数据看板-8完成率

wufeng 2 年 前
コミット
ea2e7456a7
2 ファイル変更37 行追加4 行削除
  1. 36 4
      app/admin/controller/Data.php
  2. 1 0
      app/admin/route/app.php

+ 36 - 4
app/admin/controller/Data.php

@@ -260,12 +260,11 @@ class Data extends BaseController
     //6.未发货
     public function waitSendTotal()
     {
-
         $rs = Db::name('sale')
             ->field('count(id) order_num,sum(wsend_num) wsend_num')
-            ->where(['is_del'=>0,'status'=>1])//status==1 待发货
+            ->where(['is_del' => 0, 'status' => 1])//status==1 待发货
             ->find();
-        return app_show(0,'请求成功',$rs);
+        return app_show(0, '请求成功', $rs);
     }
 
     //7.今日订单
@@ -294,9 +293,42 @@ class Data extends BaseController
 
     }
 
-    //8.本月完成率(数据在结算库里)
+    //8.本月完成率(数据在结算库里,部门完成率=部门净销售额 / 部门销售指标)
     public function monthFinishRate()
     {
+        //部门净销售额
+        $sales_volume = Db::name('sale')
+            ->alias('s')
+            ->leftJoin('depart_user u', 'u.uid=s.apply_id AND u.is_del=0')
+            ->leftJoin('company_item c', 'c.id=u.itemid AND c.is_del=0')
+            ->group('u.itemid')
+            ->column('(sum(s.total_price) - sum(s.th_fee)) sales_volume,u.itemid,c.name', 'c.name');
+
+        //部门销售指标
+        //数据在结算库invoice,连接配置信息待更新
+        $sale_indicators = Db::connect('mysql3')
+            ->table('cfp_depart_tips')
+            ->field('id,total_tips,department')
+            ->where(['year' => date('Y年'), 'month' => date('n月')])
+            ->select()
+            ->toArray();
+
+        //计算完成率
+        foreach ($sale_indicators as &$value) {
+            $temp = isset($sales_volume[$value['department']]['sales_volume']) ? $sales_volume[$value['department']]['sales_volume'] : 0;
+            $value['finish_rate'] = round(($temp / $value['total_tips']) * 100, 5);
+        }
+
+        //按照完成率排序
+        usort($sale_indicators, function ($left, $right) {
+            return ($left['finish_rate'] > $right['finish_rate']) ? -1 : 1;
+        });
+
+        //计算汇总完成率
+        $total_finish_rate = round((array_sum(array_column($sales_volume, 'sales_volume')) / array_sum(array_column($sale_indicators, 'total_tips'))) * 100, 2);
+
+        return app_show(0, '请求成功', ['list' => $sale_indicators, 'total_finish_rate' => $total_finish_rate]);
+
     }
 
     //9.转单率-今日

+ 1 - 0
app/admin/route/app.php

@@ -495,6 +495,7 @@ Route::rule('datatodaypurchase','admin/Data/todayPurchase');//3.今日采购
 Route::rule('datatotalzixunpurchease','admin/Data/totalZixunPurchease');//5.竞价单和采购单
 Route::rule('datawaitsendtotal','admin/Data/waitSendTotal');//6.未发货
 Route::rule('datatodaysale','admin/Data/todaySale');//7.今日订单
+Route::rule('datamonthfinishrate','admin/Data/monthFinishRate');//8.本月完成率
 Route::rule('datatordertransferratetoday','admin/Data/orderTransferRateToday');//9.转单率,今日
 Route::rule('datatordertransferratemonth','admin/Data/orderTransferRateMonth');//9.转单率,本月
 Route::rule('datatordertransferrateyear','admin/Data/orderTransferRateYear');//9.转单率,本年