cqpCow 1 yıl önce
ebeveyn
işleme
939171e658

+ 13 - 0
app/Http/Controllers/Api/ScheduleController.php

@@ -87,4 +87,17 @@ class ScheduleController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function getScheduleSetting(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getScheduleSetting($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 13 - 0
app/Model/ScheduleDetail.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class ScheduleDetail extends Model
+{
+    protected $table = "schedule_detail"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 15 - 2
app/Service/CustomerService.php

@@ -485,7 +485,7 @@ class CustomerService extends Service
         }
 
         $list = $this->limit($model,'',$data);
-        $list = $this->fillData($list);
+        $list = $this->fillData($list,$data);
 
         return [true, $list];
     }
@@ -541,7 +541,7 @@ class CustomerService extends Service
      * @param $data
      * @return array
      */
-    public function fillData($data){
+    public function fillData($data,$ergs){
         if(empty($data['data'])) return $data;
 
         $array = array_unique(array_merge_recursive(array_column($data['data'],'customer_intention'),array_column($data['data'],'customer_from'),array_column($data['data'],'customer_type'),array_column($data['data'],'car_type'),array_column($data['data'],'progress_stage'),array_column($data['data'],'state_type'),array_column($data['data'],'customer_state')));
@@ -558,6 +558,18 @@ class CustomerService extends Service
             ->pluck('title','id')
             ->toArray();
 
+        $customer_info_map = [];
+        if(! empty($ergs['customer_detail'])){
+            $customer_info = CustomerInfo::where('del_time',0)
+                ->where('customer_id',array_column($data['data'],'customer_id'))
+                ->where('contact_type','contact_info','customer_id')
+                ->get()->toArray();
+            $basic_maps = BasicType::where('id',array_unique(array_column($customer_info,'contact_type')))->pluck('title','id')->toArray();
+            foreach ($customer_info as $key=>$value){
+                $value['contact_type_title'] = $basic_maps[$value['contact_type']] ?? "";
+                $customer_info_map[$value['customer_id']][] = $value;
+            }
+        }
         foreach ($data['data'] as $key => $value){
             $address = '';
             if(! empty($value['address1'])) {
@@ -578,6 +590,7 @@ class CustomerService extends Service
             $data['data'][$key]['depart_title'] = $depart_title[$value['depart_id']] ?? '';
             $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
+            $data['data'][$key]['customer_detail'] = $customer_info_map[$value['id']] ?? [];
         }
 
         return $data;

+ 85 - 3
app/Service/ScheduleService.php

@@ -9,6 +9,7 @@ use App\Model\Product;
 use App\Model\ProductActivity;
 use App\Model\ProductActivityPrice;
 use App\Model\Schedule;
+use App\Model\ScheduleDetail;
 use App\Model\ScheduleInfo;
 use Illuminate\Support\Facades\DB;
 
@@ -28,13 +29,24 @@ class ScheduleService extends Service
             $model->save();
 
             $time = time();
+            ScheduleDetail::where('schedule_id',$data['id'])
+                ->where('del_time',0)
+                ->update(['del_time' => $time]);
             ScheduleInfo::where('schedule_id',$data['id'])
                 ->where('del_time',0)
                 ->update(['del_time' => $time]);
 
             if(! empty($data['day_time'])){
-                $insert = [];
+                $insert_detail = $insert = [];
                 foreach ($data['day_time'] as $value){
+                    $insert_detail[] = [
+                        'schedule_id' => $model->id,
+                        'crt_time' => $time,
+                        'start_time' => $value['start_time'] ?? "",
+                        'end_time' => $value['end_time'] ?? "",
+                        'num' => $value['num'] ?? 0,
+                    ];
+
                     for ($i=0;$i<$value['num'];$i++){
                         foreach ($data['time_range'] as $range){
                             $date = date('Y-m-d',$range);
@@ -50,6 +62,7 @@ class ScheduleService extends Service
                         }
                     }
                 }
+                ScheduleDetail::insert($insert_detail);
                 ScheduleInfo::insert($insert);
             }
 
@@ -80,8 +93,16 @@ class ScheduleService extends Service
 
             $time = time();
             if(! empty($data['day_time'])){
-                $insert = [];
+                $insert_detail = $insert = [];
                 foreach ($data['day_time'] as $value){
+                    $insert_detail[] = [
+                        'schedule_id' => $model->id,
+                        'crt_time' => $time,
+                        'start_time' => $value['start_time'] ?? "",
+                        'end_time' => $value['end_time'] ?? "",
+                        'num' => $value['num'] ?? 0,
+                    ];
+
                     for ($i=0;$i<$value['num'];$i++){
                         foreach ($data['time_range'] as $range){
                             $date = date('Y-m-d',$range);
@@ -123,6 +144,10 @@ class ScheduleService extends Service
 
             Schedule::where('id',$data['id'])->update(['del_time' => $time]);
 
+            ScheduleDetail::where('schedule_id',$data['id'])
+                ->where('del_time',0)
+                ->update(['del_time' => $time]);
+
             ScheduleInfo::where('schedule_id',$data['id'])
                 ->where('del_time',0)
                 ->update(['del_time' => $time]);
@@ -144,6 +169,31 @@ class ScheduleService extends Service
         if(empty($schedule)) return [false,'排班设置不存在或已被删除'];
         $schedule = $schedule->toArray();
 
+        $info = ScheduleDetail::where('del_time',0)
+            ->where('schedule_id',$data['id'])
+            ->select('start_time','end_time','num')
+            ->get()->toArray();
+        foreach ($info as $key => $value){
+            $info[$key]['choose'] = 1;
+        }
+
+        $schedule['detail'] = array_values($info);
+
+        $schedule['crt_name'] = Employee::where('id',$schedule['crt_id'])->value('emp_name');
+        $schedule['crt_time'] = $schedule['crt_time'] ? date("Y-m-d H:i:s",$schedule['crt_time']): '';
+
+        return [true, $schedule];
+    }
+
+    //暂时不用
+    public function detail2($data,$user){
+        if($this->isEmpty($data,'id')) return [false,'请选择数据!'];
+        $schedule = Schedule::where('del_time',0)
+            ->where('id',$data['id'])
+            ->first();
+        if(empty($schedule)) return [false,'排班设置不存在或已被删除'];
+        $schedule = $schedule->toArray();
+
         $date1 = date("Y-m-d", $schedule['start_time']);
         $date2 = date("Y-m-d", $schedule['end_time']);
         $datetime1 = new \DateTime($date1);
@@ -153,7 +203,7 @@ class ScheduleService extends Service
 
         $info = ScheduleInfo::where('del_time',0)
             ->where('schedule_id',$data['id'])
-            ->select('start_time','end_time')
+            ->select('start_time','end_time','num')
             ->get()->toArray();
         $infos = [];
         foreach ($info as $value){
@@ -166,6 +216,7 @@ class ScheduleService extends Service
                     'start_time' => $start_time,
                     'end_time' => $end_time,
                     'num' => 1,
+                    'choose' => 1,
                 ];
             }
         }
@@ -327,4 +378,35 @@ class ScheduleService extends Service
 
         return $zeroTimestamps;
     }
+
+    public function getScheduleSetting($data,$user){
+        if(empty($data['schedule'])) return [true,''];
+        // 获取指定年月的开始日期时间戳
+        $startTimestamp = strtotime($data['schedule'] . "-01");
+        // 获取下个月的开始日期时间戳,然后减去一秒得到本月的结束日期时间戳
+        $endTimestamp = strtotime("+1 month", $startTimestamp) - 1;
+
+        $model = Schedule::TopClear($user,$data);
+        $schedule = $model->where('del_time',0)
+            ->where('start_time', '>=', $startTimestamp)
+            ->where('end_time', '<=', $endTimestamp)
+            ->get()->toArray();
+        if(empty($schedule)) return [true,''];
+
+        $schedule_detail_list = ScheduleDetail::where('del_time',0)
+            ->whereIn('schedule_id',array_column($schedule,'id'))
+            ->select('schedule_id','num','start_time','end_time')
+            ->get()->toArray();
+        if(empty($schedule_detail_list)) return [true,''];
+        $schedule_detail_list_map = [];
+        foreach ($schedule_detail_list as $key => $value){
+            $schedule_detail_list_map[$value['schedule_id']][] = $value;
+        }
+
+        foreach ($schedule as $key => $value){
+            $schedule[$key]['detail'] = $schedule_detail_list_map[$value['id']] ?? [];
+        }
+
+        return [true, $schedule];
+    }
 }

+ 1 - 0
routes/api.php

@@ -235,6 +235,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('scheduleAdd', 'Api\ScheduleController@add');
     $route->any('scheduleDel', 'Api\ScheduleController@del');
     $route->any('scheduleGetForConstruction', 'Api\ScheduleController@scheduleGetForConstruction');
+    $route->any('getScheduleSetting', 'Api\ScheduleController@getScheduleSetting');
 
     //现存量
     $route->any('productInventoryList', 'Api\ProductInventoryController@productInventoryList');

+ 1 - 0
routes/wx.php

@@ -75,6 +75,7 @@ Route::group(['middleware'=> ['checkWx']],function ($route){
     $route->any('scheduleAdd', 'Api\ScheduleController@add');
     $route->any('scheduleDel', 'Api\ScheduleController@del');
     $route->any('scheduleGetForConstruction', 'Api\ScheduleController@scheduleGetForConstruction');
+    $route->any('getScheduleSetting', 'Api\ScheduleController@getScheduleSetting');
     //排期
     $route->any('pq','Api\DeleteController@pq');
 });