cqp hai 4 semanas
pai
achega
e6ae40857d

+ 3 - 3
app/Model/RevenueCost.php

@@ -25,8 +25,8 @@ class RevenueCost extends Model
     const job = 'yf_revenue_cost';
 
     public static $field = ['id','order_time','order_type','price_1','price_1_total','price_2','price_2_total','price_3','price_3_total','price_4','price_4_total','payment_amount','profit','profit_rate','employee_id_1','employee_id_1_title'];
-    public static $field_xhd = ['order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title','customer_code','customer_title','channel_finance','channel_details','product_code','product_title','product_size','unit','price_1','price_1_total','price_2','price_2_total','quantity','price_3','price_3_total','price_4','price_4_total','profit','profit_rate'];
-    public static $field_xsfp = ['order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title','customer_code','customer_title','product_code','product_title','product_size','unit','price_1','price_1_total','price_2','price_2_total','quantity','price_4','price_4_total','profit','profit_rate'];
-    public static $field_hkd_main = ['order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title'];
+    public static $field_xhd = ['id','order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title','customer_code','customer_title','channel_finance','channel_details','product_code','product_title','product_size','unit','price_1','price_1_total','price_2','price_2_total','quantity','price_3','price_3_total','price_4','price_4_total','profit','profit_rate'];
+    public static $field_xsfp = ['id','order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title','customer_code','customer_title','product_code','product_title','product_size','unit','price_1','price_1_total','price_2','price_2_total','quantity','price_4','price_4_total','profit','profit_rate'];
+    public static $field_hkd_main = ['order_id as id','order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title','payment_amount','profit','order_id'];
     public static $field_hkd_detail = ['order_type','order_number','order_time','employee_id_1','employee_id_1_title','employee_id_2_title','customer_code','customer_title','product_code','product_title','product_size','unit','price_1','price_1_total','price_2','price_2_total','quantity','price_3','price_3_total','price_4','price_4_total','profit','profit_rate','order_number_upstream','payment_amount'];
 }

+ 1 - 1
app/Model/RevenueCostTotal.php

@@ -12,5 +12,5 @@ class RevenueCostTotal extends Model
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
 
-    public static $field = ['order_type','profit','profit_rate','order_time','income','adjust','business','employee_id_1','employee_id_1_title'];
+    public static $field = ['id','order_type','profit','profit_rate','order_time','income','adjust','business','employee_id_1','employee_id_1_title'];
 }

+ 178 - 38
app/Service/ExportFileService.php

@@ -5,6 +5,8 @@ namespace App\Service;
 use App\Exports\ExportOrder;
 use App\Model\Freight;
 use App\Model\Product;
+use App\Model\RevenueCost;
+use App\Model\RevenueCostTotal;
 use Illuminate\Support\Facades\DB;
 use Maatwebsite\Excel\Facades\Excel;
 
@@ -43,10 +45,10 @@ class ExportFileService extends Service
     protected static $fuc_name = [
         self::type_one => '存货',
         self::type_two => '运费设置',
-        self::type_three => '收付款单',
-        self::type_four => '施工单',
-        self::type_five => '采购单',
-        self::type_six => '退换货单',
+        self::type_three => '收入成本统计表',
+        self::type_four => '销货单统计表',
+        self::type_five => '销售发票统计表',
+        self::type_six => '回款单统计表',
         self::type_seven => '发货单',
         self::type_eight => '进销存报表',
         self::type_nine => '虚拟采购单',
@@ -77,7 +79,8 @@ class ExportFileService extends Service
             if(empty($search['page_index'])) return [false,'请选择导出数据的开始页码'];
             if(empty($search['page_size'])) return [false,'请选择导出数据的条数'];
             if($search['page_size'] > 5000) return [false,'请选择导出数据的条数每次最多5000条'];
-            $id = $this->getListForSearch($data, $user);
+            list($status,$id) = $this->getListForSearch($data, $user);
+            if(! $status) return [false, $id];
             $data['id'] = $id;
         }
 
@@ -87,41 +90,38 @@ class ExportFileService extends Service
         return [true, $return];
     }
 
+    private function fillData($data, $column, &$return){
+        foreach ($data as $value) {
+            $tmp = [];
+            foreach ($column as $c_v){
+                $tmp[$c_v] = $value[$c_v] ?? "";
+            }
+            $return[] = $tmp;
+        }
+    }
+
     public function one($ergs,$user){
         $id = $ergs['id'];
 
         // 导出数据
         $return = [];
 
+        $header_default = config("header.62") ?? [];
+        $column = array_column($header_default,'key');
+        $header = array_column($header_default,'value');
         DB::table('product')
+            ->where('del_time',0)
             ->whereIn('id', $id)
             ->select(Product::$field)
             ->orderBy('id','desc')
-            ->chunkById(500,function ($data) use(&$return){
+            ->chunkById(500,function ($data) use(&$return,$column){
                 $data = Collect($data)->map(function ($object) {
                     return (array)$object;
                 })->toArray();
 
-                foreach ($data as $value) {
-                    $return[] = [
-                        0 => $value['code'],
-                        1 => $value['title'],
-                        2 => $value['size'],
-                        3 => $value['category'],
-                        4 => $value['unit'],
-                        5 => $value['cost'],
-                        6 => $value['business_cost'],
-                        7 => $value['major_client_settlement_price'],
-                        8 => $value['write_off_price'],
-                        9 => $value['return_change_price'],
-                        10 => $value['freight_price'],
-                        11 => $value['mark'],
-                    ];
-                }
+                $this->fillData($data, $column, $return);
             });
 
-        $header = ['存货编码','存货名称','规格类型','所属类别','计量单位','成本单价','业务成本单价','大客户结算单价','核销单价','退换货损耗单价','运费单价','备注'];
-
         return $this->saveExportData($return,$header);
     }
 
@@ -131,29 +131,144 @@ class ExportFileService extends Service
         // 导出数据
         $return = [];
 
+        $header_default = config("header.66") ?? [];
+        $column = array_column($header_default,'key');
+        $header = array_column($header_default,'value');
         DB::table('freight')
+            ->where('del_time',0)
             ->whereIn('id', $id)
             ->select(Freight::$field)
             ->orderBy('id','desc')
-            ->chunkById(500,function ($data) use(&$return){
+            ->chunkById(500,function ($data) use(&$return,$column){
                 $data = Collect($data)->map(function ($object) {
                     return (array)$object;
                 })->toArray();
 
-                foreach ($data as $value) {
-                    $return[] = [
-                        0 => $value['area'],
-                        1 => $value['region'],
-                        2 => $value['kilometer'],
-                        3 => $value['min_freight_fee'],
-                        4 => $value['one_and_five'],
-                        5 => $value['greater_than_five'],
-                        6 => $value['company'],
-                    ];
-                }
+                $this->fillData($data, $column, $return);
+            });
+
+        return $this->saveExportData($return,$header);
+    }
+
+    public function three($ergs,$user){
+        $id = $ergs['id'];
+
+        // 导出数据
+        $return = [];
+        $header_default = config("header.68") ?? [];
+        $column = array_column($header_default,'key');
+        $header = array_column($header_default,'value');
+        DB::table('revenue_cost_total')
+            ->where('del_time',0)
+            ->whereIn('id', $id)
+            ->select(RevenueCostTotal::$field)
+            ->orderBy('id','desc')
+            ->chunkById(500,function ($data) use(&$return,$column){
+                $data = Collect($data)->map(function ($object) {
+                    return (array)$object;
+                })->toArray();
+                $list['data'] = $data;
+
+                //订单数据
+                $service = new StatisticsService();
+                $list = $service->statisticsRevenueCostFillData($list);
+
+                $this->fillData($list['data'], $column, $return);
+            });
+
+        return $this->saveExportData($return,$header);
+    }
+
+    public function four($ergs,$user){
+        $id = $ergs['id'];
+
+        // 导出数据
+        $return = [];
+        $header_default = config("header.69") ?? [];
+        $column = array_column($header_default,'key');
+        $header = array_column($header_default,'value');
+        DB::table('revenue_cost')
+            ->where('del_time',0)
+            ->whereIn('id', $id)
+            ->select(RevenueCost::$field_xhd)
+            ->orderBy('id','desc')
+            ->chunkById(500,function ($data) use(&$return, $column){
+                $data = Collect($data)->map(function ($object) {
+                    return (array)$object;
+                })->toArray();
+                $list['data'] = $data;
+
+                //订单数据
+                $service = new StatisticsService();
+                $list = $service->statisticsRevenueCostOneAndTwoFillData($list);
+
+                $this->fillData($list['data'], $column, $return);
             });
 
-        $header = ['所属区域','地区','公里数','最低运费','1-5吨','5吨以上','物流公司'];
+        return $this->saveExportData($return,$header);
+    }
+
+    public function five($ergs,$user){
+        $id = $ergs['id'];
+
+        // 导出数据
+        $return = [];
+        $header_default = config("header.70") ?? [];
+        $column = array_column($header_default,'key');
+        $header = array_column($header_default,'value');
+        DB::table('revenue_cost')
+            ->where('del_time',0)
+            ->whereIn('id', $id)
+            ->select(RevenueCost::$field_xsfp)
+            ->orderBy('id','desc')
+            ->chunkById(500,function ($data) use(&$return, $column){
+                $data = Collect($data)->map(function ($object) {
+                    return (array)$object;
+                })->toArray();
+                $list['data'] = $data;
+
+                //订单数据
+                $service = new StatisticsService();
+                $list = $service->statisticsRevenueCostOneAndTwoFillData($list);
+
+                $this->fillData($list['data'], $column, $return);
+            });
+
+        return $this->saveExportData($return,$header);
+    }
+
+    public function six($ergs,$user){
+        $id = $ergs['id'];
+
+        $field = RevenueCost::$field_hkd_main;
+        $field[] = DB::raw('sum(payment_amount) as payment_amount');
+        $field[] = DB::raw('sum(price_4_total) as price_4_total');
+        $field[] = DB::raw('sum(profit) as profit');
+
+        // 导出数据
+        $return = [];
+        $header_default = config("header.71") ?? [];
+        $column = array_column($header_default,'key');
+        $header = array_column($header_default,'value');
+        DB::table('revenue_cost')
+            ->where('del_time',0)
+            ->whereIn('order_id', $id)
+            ->where('order_type',RevenueCost::ORDER_THREE)
+            ->select($field)
+            ->groupby('order_id')
+            ->orderBy('id','desc')
+            ->chunkById(500,function ($data) use(&$return, $column){
+                $data = Collect($data)->map(function ($object) {
+                    return (array)$object;
+                })->toArray();
+                $list['data'] = $data;
+
+                //订单数据
+                $service = new StatisticsService();
+                $list = $service->statisticsRevenueCostThreeFillData($list);
+
+                $this->fillData($list['data'], $column, $return);
+            },'order_id');
 
         return $this->saveExportData($return,$header);
     }
@@ -171,9 +286,34 @@ class ExportFileService extends Service
             $model = $service->freightCommon($data, $user, ['id']);
             $return = $this->limitData($model,'',$data);
             $id = array_column($return,'id');
+        }elseif ($ergs['type'] == self::type_three){
+            $service = new StatisticsService();
+            list($status, $model) = $service->statisticsRevenueCostCommon($data, $user, ['id']);
+            if(! $status) return [false, $model];
+            $return = $this->limitData($model,'',$data);
+            $id = array_column($return,'id');
+        }elseif ($ergs['type'] == self::type_four || $ergs['type'] == self::type_five){
+            if(empty($data['order_type'])){
+                if($ergs['type'] == self::type_four){
+                    $data['order_type'] = RevenueCost::ORDER_ONE;
+                }else{
+                    $data['order_type'] = RevenueCost::ORDER_TWO;
+                }
+            }
+            $service = new StatisticsService();
+            list($status, $model) = $service->statisticsRevenueCostOneAndTwoCommon($data, $user, ['id']);
+            if(! $status) return [false, $model];
+            $return = $this->limitData($model,'',$data);
+            $id = array_column($return,'id');
+        }elseif ($ergs['type'] == self::type_six){
+            $service = new StatisticsService();
+            list($status, $model) = $service->statisticsRevenueCostThreeCommon($data, $user, ['order_id']);
+            if(! $status) return [false, $model];
+            $return = $this->limitData($model,'',$data);
+            $id = array_column($return,'order_id');
         }
 
-        return $id;
+        return [true, $id];
     }
 
     public function saveExportData($data, $headers, $type = 'default',$file_name = ''){

+ 5 - 4
app/Service/StatisticsService.php

@@ -107,6 +107,7 @@ class StatisticsService extends Service
             }
         }
         $model = RevenueCost::where('del_time',0)
+            ->where('order_type',$data['order_type'])
             ->select($field)
             ->orderby('id', 'desc');
         if(! empty($data['order_time'])){
@@ -126,12 +127,12 @@ class StatisticsService extends Service
         list($status, $model) = $this->statisticsRevenueCostOneAndTwoCommon($data, $user);
         if(! $status) return [false, $model];
         $list = $this->limit($model,'',$data);
-        $list = $this->statisticsRevenueCostOneAndTwoFillData($list,$user,$data);
+        $list = $this->statisticsRevenueCostOneAndTwoFillData($list);
 
         return [true, $list];
     }
 
-    public function statisticsRevenueCostOneAndTwoFillData($data, $user, $ergs){
+    public function statisticsRevenueCostOneAndTwoFillData($data){
         if(empty($data['data'])) return $data;
 
         foreach ($data['data'] as $key => $value){
@@ -171,12 +172,12 @@ class StatisticsService extends Service
         list($status, $model) = $this->statisticsRevenueCostThreeCommon($data, $user);
         if(! $status) return [false, $model];
         $list = $this->limit($model,'',$data);
-        $list = $this->statisticsRevenueCostThreeFillData($list,$user,$data);
+        $list = $this->statisticsRevenueCostThreeFillData($list);
 
         return [true, $list];
     }
 
-    public function statisticsRevenueCostThreeFillData($data, $user, $ergs){
+    public function statisticsRevenueCostThreeFillData($data){
         if(empty($data['data'])) return $data;
 
         foreach ($data['data'] as $key => $value){

+ 1 - 1
config/header/68.php

@@ -16,7 +16,7 @@ return [
     ],
     [
         'key' =>'order_time',
-        'value' => '单据年月',
+        'value' => '统计年月',
     ],
     [
         'key' =>'income',