Browse Source

订单明细报表优化

wufeng 2 years ago
parent
commit
762d915404
2 changed files with 81 additions and 29 deletions
  1. 5 5
      app/admin/controller/Data.php
  2. 76 24
      app/admin/controller/Report.php

+ 5 - 5
app/admin/controller/Data.php

@@ -224,14 +224,15 @@ class Data extends BaseController
 
         //招标单数(咨询单数)
         $zixun_total = Db::name('consult_info')
-            ->where('is_del', 0)
+            ->where(['is_del' => 0, 'bargain_code' => ''])
             ->count('id');
 
         //已反馈单数
-        $zixun_bids = Db::name('consult_bids')
-            ->alias('cb')
-            ->where('cb.is_del', 0)
+        $zixun_bids = Db::name('consult_info')
+            ->alias('ci')
+            ->join('consult_bids cb','cb.infoNo=ci.infoNo')
             ->join('consult_order co', 'co.zxNo = cb.zxNo ')
+            ->where(['cb.is_del'=>0,'ci.is_del'=>0,'bargain_code'=>''])
             ->where('co.endtime', '>=', date('Y-m-d H:i:s'))
             ->group('cb.infoNo')
             ->count('cb.id');
@@ -244,7 +245,6 @@ class Data extends BaseController
             ->where('is_del', 0)
             ->count('id');
 
-
         //采购单未下单数(状态为待与供应商确认)
         $purchease_wait_confirm = Db::name('purchease_order')
             ->where(['is_del' => 0, 'status' => 0])

+ 76 - 24
app/admin/controller/Report.php

@@ -384,7 +384,7 @@ class Report extends Base
         $param = $this->request->only([
             'token',
             'zxNo' => [],
-            'start_date' =>'',
+            'start_date' => '',
             'end_date' => '',
             'page' => 1,
             'size' => 15,
@@ -403,13 +403,13 @@ class Report extends Base
             ->alias('cb')
             ->where('cb.is_del', 0);
 
-        if ($param['start_date']!='' && $param['end_date']!='') $rs->whereBetween('cb.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']);
+        if ($param['start_date'] != '' && $param['end_date'] != '') $rs->whereBetween('cb.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']);
         if (!empty($param['zxNo'])) $rs->whereIn('cb.zxNo', $param['zxNo']);
 
         if ($param['is_export'] == 1) {
             $data = $rs
                 ->field('ci.addtime as 咨询时间,cb.bidNo as 采购单反馈单号,cb.zxNo as 咨询订单号,cb.addtime as 回复时间,cb.good_name as 产品名称,s.name as 供应商名称,cb.total_fee 成本合计,cb.delivery_day 物流时间,cb.work_day 产品工期,cb.expire_day 信息有效期,cb.creater 采购员,ci.num 需求数量,ci.arrival_time 要求到货日期,co.salesman 业务人员,csi.companyName 客户名称')
-                ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
+                ->leftJoin('consult_info ci', 'ci.infoNo=cb.infoNo AND ci.is_del=0')
                 ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo AND co.is_del=0')
                 ->leftJoin('supplier s', 's.code=cb.supplierNo AND s.is_del=0')
                 ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo AND csi.is_del=0')
@@ -428,7 +428,7 @@ class Report extends Base
 
             $data = $rs
                 ->field('cb.id,ci.addtime,cb.bidNo,cb.zxNo,cb.addtime cbaddtime,cb.good_name,s.name supplier,cb.total_fee,cb.delivery_day,cb.work_day,cb.expire_day,cb.creater,ci.num,ci.arrival_time,co.salesman,csi.companyName')
-                ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
+                ->leftJoin('consult_info ci', 'ci.infoNo=cb.infoNo AND ci.is_del=0')
                 ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo AND co.is_del=0')
                 ->leftJoin('supplier s', 's.code=cb.supplierNo AND s.is_del=0')
                 ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo AND csi.is_del=0')
@@ -465,7 +465,7 @@ class Report extends Base
 
         $rs = Db::name('consult_bids')
             ->alias('cb')
-            ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
+            ->leftJoin('consult_info ci', 'ci.infoNo=cb.infoNo AND ci.is_del=0')
             ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo AND co.is_del=0')
             ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo AND csi.is_del=0')
             ->where('cb.is_del', 0)
@@ -531,36 +531,88 @@ class Report extends Base
         if ($param['status'] != '') $rs->where('po.status', '=', $param['status']);
 
         $all_status = ['待与供应商确认', '待入库', '部分入库', '入库完成', '已取消订单'];
+        $all_send_status = [1 => '未发货', 2 => '部分发货', 3 => '已发货'];
 
         if ($param['is_export'] == 1) {
-            $data = $rs
-                ->field('po.cgdNo 采购单编号,po.addtime 创建时间,po.supplierNo 供应商编号,po.supplier_name 供应商名称,po.good_name 产品名称,po.good_num 购买数量,po.nake_fee 裸价,po.total_fee 成本合计,po.status 单据状态,po.wsend_num 未发货数量,"" 创建人,b.company 客户名称,po.cgder 采购员,"" 发货时间')
-                ->withAttr('单据状态', function ($val) use ($all_status) {
-                    return isset($all_status[$val]) ? $all_status[$val] : '';
-                })
-                ->select()
-                ->toArray();
+            $data = Db::name('purchease_order')
+                ->alias('po')
+                ->field('po.cgdNo 采购单编号,po.addtime 创建时间,po.supplierNo 供应商编号,po.supplier_name 供应商名称,po.good_name 产品名称,po.good_num 购买数量,po.nake_fee 裸价,po.total_fee 成本合计,po.status 单据状态,po.send_status 发货状态,po.wsend_num 未发货数量,"" 创建人,b.company 客户名称,po.cgder 采购员,"" 发货时间,on.orderCode,po.order_type,po.bkcode,po.spuCode')
+                ->leftJoin('business b', 'b.companyNo=po.companyNo AND b.is_del=0')
+                ->leftJoin('order_num on', 'on.cgdNo=po.cgdNo')
+                ->cursor();
 
-            if (empty($data)) return error_show(1005, '没有可供导出的数据');
+            $list = [];
+
+            foreach ($data as $v) {
+
+                //单据状态
+                $v['单据状态'] = isset($all_status[$v['单据状态']]) ? $all_status[$v['单据状态']] : '';
+
+                //发货状态
+                $v['发货状态'] = isset($all_send_status[$v['发货状态']]) ? $all_send_status[$v['发货状态']] : '';
+
+                //创建人//order_type==1备库单
+                if ($v['order_type'] == 1) $v['创建人'] = Db::name('purchease')->where(['bk_code' => $v['bkcode'], 'spuCode' => $v['spuCode'], 'is_del' => 0])->value('apply_name', '');
+                else $v['创建人'] = Db::name('sale')->where(['orderCode' => $v['orderCode'], 'is_del' => 0])->value('apply_name', '');
+
+                //创建时间
+                $v['发货时间'] = Db::name('order_out')
+                    ->where(['orderCode' => $v['orderCode']])
+                    ->order('addtime', 'desc')
+                    ->value('addtime');
+
+                unset($v['orderCode']);
+                unset($v['order_type']);
+                unset($v['bkcode']);
+                unset($v['spuCode']);
+
+                $list[] = $v;
+            }
+
+            if (empty($list)) return error_show(1005, '没有可供导出的数据');
             else {
-                $headerArr = array_keys($data[0]);
-                excelSave('订单明细报表' . date('YmdHis'), $headerArr, $data);
+                $headerArr = array_keys($list[0]);
+                excelSave('订单明细报表' . date('YmdHis'), $headerArr, $list);
             }
 
         } else {
 
-            $total = $rs->count('po.id');
+            $total = Db::name('purchease_order')
+                ->alias('po')
+                ->leftJoin('business b', 'b.companyNo=po.companyNo AND b.is_del=0')
+                ->count('po.id');
 
-            $data = $rs
-                ->field('po.cgdNo,po.addtime,po.supplierNo,po.supplier_name,po.good_name,po.good_num,po.nake_fee,po.total_fee,po.status,po.wsend_num,"" 创建人,b.company,po.cgder,"" 发货时间')
-                ->withAttr('status', function ($val) use ($all_status) {
-                    return isset($all_status[$val]) ? $all_status[$val] : '';
-                })
+            $data = Db::name('purchease_order')
+                ->alias('po')
+                ->field('po.cgdNo,po.addtime,po.supplierNo,po.supplier_name,po.good_name,po.good_num,po.nake_fee,po.total_fee,po.status,po.send_status,po.wsend_num,"" creater,b.company,po.cgder,"" send_time,on.orderCode,po.order_type,po.bkcode,po.spuCode')
+                ->leftJoin('business b', 'b.companyNo=po.companyNo AND b.is_del=0')
+                ->leftJoin('order_num on', 'on.cgdNo=po.cgdNo')
                 ->page($param['page'], $param['size'])
-                ->select()
-                ->toArray();
+                ->cursor();
 
-            return app_show(0, '请求成功', ['list' => $data, 'total' => $total]);
+            $list = [];
+            foreach ($data as $v) {
+
+                //单据状态
+                $v['status'] = isset($all_status[$v['status']]) ? $all_status[$v['status']] : '';
+
+                //发货状态
+                $v['send_status'] = isset($all_send_status[$v['send_status']]) ? $all_send_status[$v['send_status']] : '';
+
+                //创建人//order_type==1备库单
+                if ($v['order_type'] == 1) $v['creater'] = Db::name('purchease')->where(['bk_code' => $v['bkcode'], 'spuCode' => $v['spuCode'], 'is_del' => 0])->value('apply_name', '');
+                else $v['creater'] = Db::name('sale')->where(['orderCode' => $v['orderCode'], 'is_del' => 0])->value('apply_name', '');
+
+                //创建时间
+                $v['send_time'] = Db::name('order_out')
+                    ->where(['orderCode' => $v['orderCode']])
+                    ->order('addtime', 'desc')
+                    ->value('addtime');
+
+                $list[] = $v;
+            }
+
+            return app_show(0, '请求成功', ['list' => $list, 'total' => $total]);
 
         }