Browse Source

数据看板优化

wufeng 2 years ago
parent
commit
aa65f4efa3
1 changed files with 274 additions and 97 deletions
  1. 274 97
      app/admin/controller/Data.php

+ 274 - 97
app/admin/controller/Data.php

@@ -2,141 +2,318 @@
 
 namespace app\admin\controller;
 
+use app\BaseController;
 use think\App;
 use think\facade\Db;
 
-//数据统计类
-class Data extends Base
+//数据统计类(数据看板,获取相关统计数据)
+class Data extends BaseController
 
 {
-    //数据看板,获取相关统计数据
-    public function index()
+
+    /**
+     * public function index()
+     * {
+     * $data = [];
+     *
+     * //        //1.今日销量(单数、金额)
+     * //        $today_sales_volume = Db::name('sale')
+     * //            ->field('count(id) orders_number,sum(total_price) money')
+     * //            ->where('is_del',0)
+     * //            ->whereDay('addtime','today')
+     * //            ->find();
+     * //
+     * //        $data['today_sales_volume'] = [
+     * //            'orders_number' => isset($today_sales_volume['orders_number'])?$today_sales_volume['orders_number']:0,
+     * //            'money' =>  isset($today_sales_volume['money'])?$today_sales_volume['money']:0,
+     * //        ];
+     *
+     * //2.今日销冠(部门、姓名、单数、金额)
+     * $temp = Db::name('sale')
+     * ->field('count(id) orders,sum(total_price) money,apply_id')
+     * ->where('is_del', 0)
+     * ->whereDay('addtime', 'today')
+     * ->group('apply_id')
+     * ->order('money', 'desc')
+     * ->limit(1)
+     * ->buildSql();
+     *
+     * $data['today_sales_champion'] = Db::table($temp)
+     * ->alias('t')
+     * ->field('t.apply_id,t.orders,t.money,u.itemid company_id,    c.`name` company,    u.nickname')
+     * ->leftJoin('depart_user u', 'u.uid=t.apply_id AND u.is_del=0')
+     * ->leftJoin('company_item c', 'c.id=u.itemid AND c.is_del=0')
+     * ->select()
+     * ->toArray();
+     *
+     * //3.今日采购(采购订单数量、商品数量、竞价单数、反馈商品数)
+     * $data['today_purchase'] = [
+     * 'orders' => '0',
+     * 'goods' => '0',
+     * 'bidding_orders' => '0',
+     * 'feedback_goods' => '0'
+     * ];
+     *
+     * //4.今日订单列表(按照完成率排序,前三名的部门、单数、金额)
+     * $data['today_order'] = [
+     * ['company' => 'xxx部', 'orders' => '30', 'money' => '300'],
+     * ['company' => 'xx部', 'orders' => '20', 'money' => '200'],
+     * ['company' => 'x部', 'orders' => '10', 'money' => '100'],
+     * ];
+     *
+     * //5.本月完成率列表(按照完成率排序,前三名的部门、完成单数和完成率,区分今日、本周、本月和毛利率状态:2达标、1最低、0不达标等情况)
+     * $data['month_completion_rate'] = [
+     * 'today' => [
+     * ['company' => 'xxx部', 'completion' => 10, 'completion_rate' => '30%', 'type' => '2'],
+     * ['company' => 'xx部', 'completion' => 10, 'completion_rate' => '20%', 'type' => '1'],
+     * ['company' => 'x部', 'completion' => 10, 'completion_rate' => '10%', 'type' => '0'],
+     * ],
+     * 'week' => [
+     * ['company' => 'xxx部', 'completion' => 10, 'completion_rate' => '30%', 'type' => '2'],
+     * ['company' => 'xx部', 'completion' => 10, 'completion_rate' => '20%', 'type' => '1'],
+     * ['company' => 'x部', 'completion' => 10, 'completion_rate' => '10%', 'type' => '0'],
+     * ],
+     * 'month' => [
+     * ['company' => 'xxx部', 'completion' => 10, 'completion_rate' => '30%', 'type' => '2'],
+     * ['company' => 'xx部', 'completion' => 10, 'completion_rate' => '20%', 'type' => '1'],
+     * ['company' => 'x部', 'completion' => 10, 'completion_rate' => '10%', 'type' => '0'],
+     * ],
+     * ];
+     *
+     * //6.待开票(单数、金额)
+     * $data['wait_invoice'] = [
+     * 'orders' => '10',
+     * 'money' => '34.45'
+     * ];
+     *
+     * //7.待回款(单数、金额)
+     * $data['wait_return'] = [
+     * 'orders' => '100',
+     * 'money' => '3.45'
+     * ];
+     *
+     * //8.待回票(单数、金额)
+     * $data['wait_ticket'] = [
+     * 'orders' => '8',
+     * 'money' => '38.5'
+     * ];
+     *
+     * //9.待付款(单数、金额)
+     * $data['wait_payment'] = [
+     * 'orders' => '34',
+     * 'money' => '5338.58'
+     * ];
+     *
+     *
+     * //10.竞价(招标单数、未竞标单数)
+     * $data['bidding'] = [
+     * 'bidding_orders' => '10',
+     * 'no_bidding_orders' => '2'
+     * ];
+     *
+     * //11.采购单(采购单数、未下单数)
+     * $data['purchase'] = [
+     * 'purchase_orders' => '10',
+     * 'no_purchase_orders' => '2'
+     * ];
+     *
+     * //12.采购单(采购下单数、未生产单数)
+     * $data['purchase_2'] = [
+     * 'orders' => '10',
+     * 'no_orders' => '2'
+     * ];
+     *
+     * //13.未发货(单数、商品数)
+     * $data['no_deliver'] = [
+     * 'orders' => '10',
+     * 'goods' => '2'
+     * ];
+     *
+     * //14.转单率(部门名称、今日转单率、本月转单率,今年转单率,按照年度转单率排序)
+     * $data['transfer_order_rate'] = [
+     * ['company' => 'xxx部', 'today_tor' => '34%', 'month_tor' => '68%', 'year_tor' => '45%'],
+     * ['company' => 'xx部', 'today_tor' => '34%', 'month_tor' => '68%', 'year_tor' => '40%'],
+     * ['company' => 'x部', 'today_tor' => '34%', 'month_tor' => '68%', 'year_tor' => '6%'],
+     * ];
+     *
+     * return app_show(0, '请求成功', $data);
+     *
+     * }
+     **/
+
+    //1.今日销量
+    public function todaySalesVolume()
     {
-        $data = [];
 
-        //1.今日销量(单数、金额)
-        $today_sales_volume = Db::name('sale')
+        $rs = Db::name('sale')
             ->field('count(id) orders_number,sum(total_price) money')
-            ->where('is_del',0)
-            ->whereDay('addtime','today')
+            ->where('is_del', 0)
+            ->whereDay('addtime', 'today')
             ->find();
 
-        $data['today_sales_volume'] = [
-            'orders_number' => isset($today_sales_volume['orders_number'])?$today_sales_volume['orders_number']:0,
-            'money' =>  isset($today_sales_volume['money'])?$today_sales_volume['money']:0,
+        $temp = [
+            'orders_number' => isset($rs['orders_number']) ? $rs['orders_number'] : 0,
+            'money' => isset($rs['money']) ? $rs['money'] : 0,
         ];
 
-        //2.今日销冠(部门、姓名、单数、金额)
+        return app_show(0, '请求成功', $temp);
+
+    }
+
+    //2.今日销冠
+    public function todaySalesChampion()
+    {
+
         $temp = Db::name('sale')
             ->field('count(id) orders,sum(total_price) money,apply_id')
-            ->where('is_del',0)
-            ->whereDay('addtime','today')
+            ->where('is_del', 0)
+            ->whereDay('addtime', 'today')
             ->group('apply_id')
-            ->order('money','desc')
+            ->order('money', 'desc')
             ->limit(1)
             ->buildSql();
 
-        $data['today_sales_champion'] = Db::table($temp)
+        $rs = Db::table($temp)
             ->alias('t')
             ->field('t.apply_id,t.orders,t.money,u.itemid company_id,	c.`name` company,	u.nickname')
-            ->leftJoin('depart_user u','u.uid=t.apply_id AND u.is_del=0')
-            ->leftJoin('company_item c','c.id=u.itemid AND c.is_del=0')
+            ->leftJoin('depart_user u', 'u.uid=t.apply_id AND u.is_del=0')
+            ->leftJoin('company_item c', 'c.id=u.itemid AND c.is_del=0')
             ->select()
             ->toArray();
 
-        //3.今日采购(采购订单数量、商品数量、竞价单数、反馈商品数)
-        $data['today_purchase'] = [
-            'orders' => '0',
-            'goods' => '0',
-            'bidding_orders' => '0',
-            'feedback_goods' => '0'
-        ];
+        return app_show(0, '请求成功', empty($rs[0]) ? [] : $rs[0]);
 
-        //4.今日订单列表(按照完成率排序,前三名的部门、单数、金额)
-        $data['today_order'] = [
-            ['company' => 'xxx部', 'orders' => '30', 'money' => '300'],
-            ['company' => 'xx部', 'orders' => '20', 'money' => '200'],
-            ['company' => 'x部', 'orders' => '10', 'money' => '100'],
-        ];
+    }
 
-        //5.本月完成率列表(按照完成率排序,前三名的部门、完成单数和完成率,区分今日、本周、本月和毛利率状态:2达标、1最低、0不达标等情况)
-        $data['month_completion_rate'] = [
-            'today' => [
-                ['company' => 'xxx部', 'completion' => 10, 'completion_rate' => '30%', 'type' => '2'],
-                ['company' => 'xx部', 'completion' => 10, 'completion_rate' => '20%', 'type' => '1'],
-                ['company' => 'x部', 'completion' => 10, 'completion_rate' => '10%', 'type' => '0'],
-            ],
-            'week' => [
-                ['company' => 'xxx部', 'completion' => 10, 'completion_rate' => '30%', 'type' => '2'],
-                ['company' => 'xx部', 'completion' => 10, 'completion_rate' => '20%', 'type' => '1'],
-                ['company' => 'x部', 'completion' => 10, 'completion_rate' => '10%', 'type' => '0'],
-            ],
-            'month' => [
-                ['company' => 'xxx部', 'completion' => 10, 'completion_rate' => '30%', 'type' => '2'],
-                ['company' => 'xx部', 'completion' => 10, 'completion_rate' => '20%', 'type' => '1'],
-                ['company' => 'x部', 'completion' => 10, 'completion_rate' => '10%', 'type' => '0'],
-            ],
-        ];
+    //3.今日采购
+    public function todayPurchase()
+    {
 
-        //6.待开票(单数、金额)
-        $data['wait_invoice'] = [
-            'orders' => '10',
-            'money' => '34.45'
-        ];
+        $rs = Db::name('purchease_order')
+            ->field('count(id) orders_number,sum(good_num) good_num')
+            ->where('is_del', 0)
+            ->whereDay('addtime', 'today')
+            ->find();
 
-        //7.待回款(单数、金额)
-        $data['wait_return'] = [
-            'orders' => '100',
-            'money' => '3.45'
-        ];
+        $consult_info_total = Db::name('consult_info')
+            ->where('is_del', 0)
+            ->whereDay('addtime', 'today')
+            ->count('id');
 
-        //8.待回票(单数、金额)
-        $data['wait_ticket'] = [
-            'orders' => '8',
-            'money' => '38.5'
-        ];
+        $consult_bids_total = Db::name('consult_bids')
+            ->where('is_del', 0)
+            ->whereDay('addtime', 'today')
+            ->count('id');
 
-        //9.待付款(单数、金额)
-        $data['wait_payment'] = [
-            'orders' => '34',
-            'money' => '5338.58'
+        $data = [
+            'orders_number' => isset($rs['orders_number']) ? $rs['orders_number'] : 0,
+            'good_num' => isset($rs['good_num']) ? $rs['good_num'] : 0,
+            'consult_info_total' => $consult_info_total,
+            'consult_bids_total' => $consult_bids_total,
         ];
 
+        return app_show(0, '请求成功', $data);
 
+    }
 
-        //10.竞价(招标单数、未竞标单数)
-        $data['bidding'] = [
-            'bidding_orders' => '10',
-            'no_bidding_orders' => '2'
-        ];
+    //4.票(相关,暂不做)
 
-        //11.采购单(采购单数、未下单数)
-        $data['purchase'] = [
-            'purchase_orders' => '10',
-            'no_purchase_orders' => '2'
-        ];
+    //5.竞价单和采购单
+    public function totalZixunPurchease()
+    {
 
-        //12.采购单(采购下单数、未生产单数)
-        $data['purchase_2'] = [
-            'orders' => '10',
-            'no_orders' => '2'
-        ];
+        //招标单数(咨询单数)
+        $zixun_total = Db::name('consult_info')
+            ->where('is_del', 0)
+            ->count('id');
 
-        //13.未发货(单数、商品数)
-        $data['no_deliver'] = [
-            'orders' => '10',
-            'goods' => '2'
-        ];
 
-        //14.转单率(部门名称、今日转单率、本月转单率,今年转单率,按照年度转单率排序)
-        $data['transfer_order_rate'] = [
-            ['company' => 'xxx部', 'today_tor' => '34%', 'month_tor' => '68%', 'year_tor' => '45%'],
-            ['company' => 'xx部', 'today_tor' => '34%', 'month_tor' => '68%', 'year_tor' => '40%'],
-            ['company' => 'x部', 'today_tor' => '34%', 'month_tor' => '68%', 'year_tor' => '6%'],
-        ];
+        //已反馈单数
+        $zixun_bids = Db::name('consult_bids')
+            ->where('is_del', 0)
+            ->count('id');
+
+        //未竞价单数(未反馈单数)
+        $not_feedback = $zixun_total - $zixun_bids;
+
+        //采购单数
+        $purchease_total = Db::name('purchease_order')
+            ->where('is_del', 0)
+            ->count('id');
+
+
+        //采购单未下单数(状态为待与供应商确认)
+        $purchease_wait_confirm = Db::name('purchease_order')
+            ->where(['is_del' => 0, 'status' => 0])
+            ->count('id');
+
+        return app_show(0, '请求成功', [
+            'zixun_total' => $zixun_total,
+            'not_feedback' => $not_feedback,
+            'purchease_total' => $purchease_total,
+            'purchease_wait_confirm' => $purchease_wait_confirm,
+        ]);
 
-        return app_show(0, '请求成功', $data);
 
     }
 
-}
+    //6.未发货
+    public function waitSendTotal()
+    {
+        return 123;
+    }
+
+    //7.今日订单
+    public function todaySale()
+    {
+
+        $temp = Db::name('sale')
+            ->alias('s')
+            ->field('s.id,s.apply_id,s.total_price,u.nickname,u.itemid')
+            ->leftJoin('depart_user u', 'u.uid=s.apply_id AND u.is_del=0')
+            ->where('s.is_del', 0)
+            ->whereDay('s.addtime', 'today')
+            ->buildSql();
+
+        $rs = Db::table($temp)
+            ->alias('t')
+            ->field('itemid companyId,c.`name` companyName,SUM(t.total_price) total_price,COUNT(t.id) total_order')
+            ->leftJoin('company_item c', 'c.id=t.itemid')
+            ->group('t.itemid')
+            ->order('total_price', 'desc')
+            ->limit(3)
+            ->select()
+            ->toArray();
+
+        return app_show(0, '请求成功', $rs);
+
+    }
+
+    //8.本月完成率(数据在结算库里)
+    public function monthFinishRate()
+    {
+    }
+
+    //9.转单率-今日
+    public function orderTransferRateToday(){
+
+//        sale  order_type==2   咨询生成订单数
+
+
+
+    }
+
+    //9.转单率-本月
+    public function orderTransferRateMonth(){
+
+    }
+
+    //9.转单率-今年
+    public function orderTransferRateYear(){
+
+
+
+    }
+
+
+}