chenqp 7 miesięcy temu
rodzic
commit
c1c0f9f883

+ 2 - 2
app/Model/InOutRecord.php

@@ -5,7 +5,7 @@ namespace App\Model;
 class InOutRecord extends UseScopeBaseModel
 {
     protected $table = "in_out_record"; //指定表
-    const CREATED_AT = 'crt_time';
-    const UPDATED_AT = 'upd_time';
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
     protected $dateFormat = 'U';
 }

+ 90 - 34
app/Service/StatisticsService.php

@@ -16,6 +16,7 @@ use App\Model\ReturnExchangeOrder;
 use App\Model\ReturnExchangeOrderProductInfo;
 use App\Model\SalesOrder;
 use App\Model\SalesOrderProductInfo;
+use App\Model\Setting;
 use Illuminate\Support\Facades\DB;
 
 class StatisticsService extends Service
@@ -24,10 +25,8 @@ class StatisticsService extends Service
     public function statisticsBt($data,$user){
         if(empty($data['crt_time'][0]) || empty($data['crt_time'][1])) return [false, '请选择销售订单时间区间'];
 
-        $model = SalesOrder::Clear($user,$data);
-        $model = $model->where('del_time',0)
-            ->select('model_type',DB::raw("sum(contract_fee) as total"))
-            ->groupBy('model_type');
+        $model = SalesOrder::where('del_time',0)
+            ->select('model_type','contract_fee as total','top_depart_id');
 
         if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
             $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
@@ -44,11 +43,36 @@ class StatisticsService extends Service
     public function fillStatisticsBt($data){
         if(empty($data)) return $data;
 
-        foreach ($data as $key => $value){
-            $data[$key]['model_type_title'] = SalesOrder::$model_type_title[$value['model_type']] ?? "";
+        $setting = Setting::where('setting_name','bt_top_depart_id')->first();
+        $bt_top_depart_id = $setting['setting_value'] ?? [];
+        $bt_top_depart_id = json_decode($bt_top_depart_id,true);
+
+        $return = [];
+        foreach ($data as $value){
+            $model_type_title = SalesOrder::$model_type_title[$value['model_type']] ?? "";
+            if($value['model_type'] != SalesOrder::Model_type_two){
+                if(in_array($value['top_depart_id'], $bt_top_depart_id)){
+                    $this->makeThis($return,$value,$model_type_title);
+                }
+            }else{
+                $this->makeThis($return,$value,$model_type_title);
+            }
         }
 
-        return $data;
+        return array_values($return);
+    }
+
+    public function makeThis(&$return,$value,$model_type_title){
+        if(isset($return[$value['model_type']])){
+            $total = bcadd($value['total'], $return[$value['model_type']]['total'],2);
+            $return[$value['model_type']]['total'] = $total;
+        }else{
+            $return[$value['model_type']] = [
+                'model_type' => $value['model_type'],
+                'model_type_title' => $model_type_title,
+                'total' => $value['total'],
+            ];
+        }
     }
 
     //省 订单类型细分统计
@@ -98,26 +122,34 @@ class StatisticsService extends Service
             $final_address_map[] = $tmp;
         }
 
-        $model = SalesOrder::Clear($user,$data);
-        $sale_order = $model->where("del_time",0)
+        //特殊的门店
+        $setting = Setting::where('setting_name','bt_top_depart_id')->first();
+        $bt_top_depart_id = $setting['setting_value'] ?? [];
+        $bt_top_depart_id = json_decode($bt_top_depart_id,true);
+
+        $sale_order = SalesOrder::where("del_time",0)
             ->where('crt_time','>=',$return[0])
             ->where('crt_time','<=',$return[1])
             ->when(! empty($model_type), function ($query) use ($model_type) {
                 return $query->where('model_type',$model_type);
             })
-            ->select('id','top_depart_id','contract_fee')
+            ->select('id','top_depart_id','contract_fee','model_type')
             ->get()->toArray();
 
         //合同
-        $purchase_map = [];
+        $purchase_map = $sale_order_id = [];
         foreach ($sale_order as $value){
             $area = $depart_map[$value['top_depart_id']] ?? 0;
             if(! $area) continue;
-            if(isset($purchase_map[$area])){
-                $total = bcadd($purchase_map[$area], $value['contract_fee'],2);
-                $purchase_map[$area] = $total;
+
+            if($value['model_type'] != SalesOrder::Model_type_two){
+                if(in_array($value['top_depart_id'], $bt_top_depart_id)){
+                    $sale_order_id[] = $value['id'];
+                    $this->makeData($purchase_map,$value,$area);
+                }
             }else{
-                $purchase_map[$area] = $value['contract_fee'];
+                $sale_order_id[] = $value['id'];
+                $this->makeData($purchase_map,$value,$area);
             }
         }
 
@@ -125,7 +157,7 @@ class StatisticsService extends Service
         $returnExchange_map = [];
         $returnExchange = ReturnExchangeOrder::where('del_time',0)
             ->where('type',ReturnExchangeOrder::Order_type)
-            ->whereIn('data_id',array_column($sale_order,'id'))
+             ->whereIn('data_id',array_unique($sale_order_id))
             ->select('top_depart_id','difference_amount')
             ->get()->toArray();
         foreach ($returnExchange as $value){
@@ -152,6 +184,15 @@ class StatisticsService extends Service
         return [true, $final_address_map];
     }
 
+    public function makeData(&$purchase_map, $value,$area){
+        if(isset($purchase_map[$area])){
+            $total = bcadd($purchase_map[$area], $value['contract_fee'],2);
+            $purchase_map[$area] = $total;
+        }else{
+            $purchase_map[$area] = $value['contract_fee'];
+        }
+    }
+
     //大区 订单类型细分统计
     public function statisticsArea($data,$user){
         if(empty($data['crt_time'][0]) || empty($data['crt_time'][1])) return [false, '请选择时间区间'];
@@ -197,26 +238,33 @@ class StatisticsService extends Service
             $area_map[] = $tmp;
         }
 
-        //合同
-        $model = SalesOrder::Clear($user,$data);
-        $sale_order = $model->where("del_time",0)
+        //特殊的门店
+        $setting = Setting::where('setting_name','bt_top_depart_id')->first();
+        $bt_top_depart_id = $setting['setting_value'] ?? [];
+        $bt_top_depart_id = json_decode($bt_top_depart_id,true);
+
+        $sale_order = SalesOrder::where("del_time",0)
             ->where('crt_time','>=',$return[0])
             ->where('crt_time','<=',$return[1])
             ->when(! empty($model_type), function ($query) use ($model_type) {
                 return $query->where('model_type',$model_type);
             })
-            ->select('top_depart_id','contract_fee')
+            ->select('top_depart_id','contract_fee','model_type','id')
             ->get()->toArray();
 
-        $purchase_map = [];
+        $purchase_map = $sale_order_id = [];
         foreach ($sale_order as $value){
             $area = $depart_map[$value['top_depart_id']] ?? 0;
             if(! $area) continue;
-            if(isset($purchase_map[$area])){
-                $total = bcadd($purchase_map[$area], $value['contract_fee'],2);
-                $purchase_map[$area] = $total;
+
+            if($value['model_type'] != SalesOrder::Model_type_two){
+                if(in_array($value['top_depart_id'], $bt_top_depart_id)){
+                    $sale_order_id[] = $value['id'];
+                    $this->makeData($purchase_map,$value,$area);
+                }
             }else{
-                $purchase_map[$area] = $value['contract_fee'];
+                $sale_order_id[] = $value['id'];
+                $this->makeData($purchase_map,$value,$area);
             }
         }
 
@@ -224,7 +272,7 @@ class StatisticsService extends Service
         $returnExchange_map = [];
         $returnExchange = ReturnExchangeOrder::where('del_time',0)
             ->where('type',ReturnExchangeOrder::Order_type)
-            ->whereIn('data_id',array_column($sale_order,'id'))
+             ->whereIn('data_id',array_unique($sale_order_id))
             ->select('top_depart_id','difference_amount')
             ->get()->toArray();
         foreach ($returnExchange as $value){
@@ -291,6 +339,11 @@ class StatisticsService extends Service
             ->pluck('param_one','top_depart_id')
             ->toArray();
 
+        //特殊的门店
+        $setting = Setting::where('setting_name','bt_top_depart_id')->first();
+        $bt_top_depart_id = $setting['setting_value'] ?? [];
+        $bt_top_depart_id = json_decode($bt_top_depart_id,true);
+
         //合同
         $sale_order = SalesOrder::where("del_time",0)
             ->where('crt_time','>=',$return[0])
@@ -298,16 +351,19 @@ class StatisticsService extends Service
             ->when(! empty($model_type), function ($query) use ($model_type) {
                 return $query->where('model_type',$model_type);
             })
-            ->select('top_depart_id','contract_fee')
+            ->select('top_depart_id','contract_fee','id','model_type')
             ->get()->toArray();
         //向总社采购的钱
-        $purchase_map = [];
+        $purchase_map = $sale_order_id = [];
         foreach ($sale_order as $value){
-            if(isset($purchase_map[$value['top_depart_id']])){
-                $total = bcadd($purchase_map[$value['top_depart_id']], $value['contract_fee'],2);
-                $purchase_map[$value['top_depart_id']] = $total;
+            if($value['model_type'] != SalesOrder::Model_type_two){
+                if(in_array($value['top_depart_id'], $bt_top_depart_id)){
+                    $sale_order_id[] = $value['id'];
+                    $this->makeData($purchase_map,$value,$value['top_depart_id']);
+                }
             }else{
-                $purchase_map[$value['top_depart_id']] = $value['contract_fee'];
+                $sale_order_id[] = $value['id'];
+                $this->makeData($purchase_map,$value,$value['top_depart_id']);
             }
         }
 
@@ -316,7 +372,7 @@ class StatisticsService extends Service
         $returnExchange = ReturnExchangeOrder::where('del_time',0)
             ->whereIn('top_depart_id',array_column($depart,'id'))
             ->where('type',ReturnExchangeOrder::Order_type)
-            ->whereIn('data_id',array_column($sale_order,'id'))
+             ->whereIn('data_id',array_unique($sale_order_id))
             ->select('top_depart_id','difference_amount')
             ->get()->toArray();
         foreach ($returnExchange as $value){
@@ -495,7 +551,7 @@ class StatisticsService extends Service
         $returnExchange_map = $returnExchange_map_2 = [];
         $returnExchange = ReturnExchangeOrder::where('del_time',0)
             ->where('type',ReturnExchangeOrder::Order_type)
-            ->whereIn('data_id',$sale_order_id)
+            ->whereIn('data_id', $sale_order_id)
             ->select('id')
             ->get()->toArray();
         $returnExchange_product = ReturnExchangeOrderProductInfo::where("del_time",0)

+ 1 - 1
app/Service/U8ServerService.php

@@ -611,7 +611,7 @@ class U8ServerService extends Service
             }elseif ($value['model_type'] == SalesOrder::Model_type_two){
                 $main[$key]['jobnumber'] = "T90022";
             }elseif ($value['model_type'] == SalesOrder::Model_type_four){
-                $main[$key]['jobnumber'] = "T90044";
+                $main[$key]['jobnumber'] = "T90043";
             }else{
                 $main[$key]['jobnumber'] = "T90000";
             }