cqpCow пре 1 година
родитељ
комит
7aead6571b
3 измењених фајлова са 67 додато и 9 уклоњено
  1. 13 0
      app/Http/Controllers/Api/ScheduleController.php
  2. 53 9
      app/Service/ScheduleService.php
  3. 1 0
      routes/api.php

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

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

+ 53 - 9
app/Service/ScheduleService.php

@@ -36,12 +36,15 @@ class ScheduleService extends Service
                 foreach ($data['day_time'] as $value){
                     for ($i=0;$i<$value['num'];$i++){
                         foreach ($data['time_range'] as $range){
+                            $date = date('Y-m-d',$range);
+                            $start_time = strtotime($date . " " .$value['start_time']);
+                            $end_time = strtotime($date . " " .$value['end_time']);
                             $insert[] = [
                                 'schedule_id' => $model->id,
                                 'crt_time' => $time,
-                                'day' => $range ?? 0,
-                                'start_time' => $value['start_time'] ?? "",
-                                'end_time' => $value['end_time'] ?? "",
+                                'day' => $range ?? 0, //0点的时间戳
+                                'start_time' => $start_time ?? 0, //加上开始时间段
+                                'end_time' => $end_time ?? 0,//加上结束时间段
                             ];
                         }
                     }
@@ -80,12 +83,15 @@ class ScheduleService extends Service
                 foreach ($data['day_time'] as $value){
                     for ($i=0;$i<$value['num'];$i++){
                         foreach ($data['time_range'] as $range){
+                            $date = date('Y-m-d',$range);
+                            $start_time = strtotime($date . " " .$value['start_time']);
+                            $end_time = strtotime($date . " " .$value['end_time']);
                             $insert[] = [
                                 'schedule_id' => $model->id,
                                 'crt_time' => $time,
-                                'day' => $range ?? 0,
-                                'start_time' => $value['start_time'] ?? "",
-                                'end_time' => $value['end_time'] ?? "",
+                                'day' => $range ?? 0, //0点的时间戳
+                                'start_time' => $start_time ?? 0, //加上开始时间段
+                                'end_time' => $end_time ?? 0,//加上结束时间段
                             ];
                         }
                     }
@@ -169,20 +175,22 @@ class ScheduleService extends Service
         $data['end_time'] = $this->changeDateToDate($data['schedule'][1]);
         $data['time_range'] = $this->getTimestampRange($data['start_time'],$data['end_time']);
         if(empty($data['day_time'])) return [false,'排班时间段不能为空'];
-        foreach ($data['day_time'] as $key => $value){
+        foreach ($data['day_time'] as $value){
             if(empty($value['start_time'])) return [false,'排班时间段开始时间不能为空'];
             if(empty($value['end_time'])) return [false,'排班时间段结束时间不能为空'];
             if(empty($value['num'])) return [false,'排班车间数量不能为空'];
         }
 
         if($is_add){
-            $bool = Schedule::where('del_time',0)
+            $model = Schedule::TopClear($user,$data);
+            $bool = $model->where('del_time',0)
                 ->where('start_time', '<=', $data['end_time'])
                 ->where('end_time', '>=', $data['start_time'])
                 ->exists();
         }else{
             if(empty($data['id'])) return [false,'ID不能为空'];
-            $bool = Schedule::where('del_time',0)
+            $model = Schedule::TopClear($user,$data);
+            $bool = $model->where('del_time',0)
                 ->where('id','<>',$data['id'])
                 ->where('start_time', '<=', $data['end_time'])
                 ->where('end_time', '>=', $data['start_time'])
@@ -215,6 +223,42 @@ class ScheduleService extends Service
         return $data;
     }
 
+    public function scheduleGetForConstruction($data,$user){
+        if(empty($data['schedule'])) return [false,'请选择日期!'];
+        $schedule = $this->changeDateToDate($data['schedule']);
+        $model = Schedule::TopClear($user,$data);
+        $schedule_id = $model->where('del_time',0)
+            ->where('start_time', '>=', $schedule)
+            ->where('end_time', '<=', $schedule)
+            ->select('id')->get()->toArray();
+        $schedule_id = array_column($schedule_id,'id');
+        if(empty($schedule_id)) return [false,'该时间排班设置不存在或已被删除!'];
+
+        $schedule_detail_list = ScheduleInfo::where('del_time',0)
+            ->whereIn('schedule_id',$schedule_id)
+            ->where('day',$schedule)
+            ->where('is_use',ScheduleInfo::not_use)
+            ->select('schedule_id','day','start_time','end_time')
+            ->get()->toArray();
+        if(empty($schedule_detail_list)) return [false,'该时间排班已满、不存在或已被删除!'];
+
+        $return = [];
+        foreach ($schedule_detail_list as $value){
+            if(isset($return[$value['start_time'] . $value['end_time']])){
+                $return[$value['start_time'] . $value['end_time']]['num'] += 1;
+            }else{
+                $tmp['num'] = 1;
+                $tmp['day'] = date('Y-m-d',$value['day']);
+                $tmp['start_time'] = date('H:i',$value['start_time']);
+                $tmp['end_time'] = date('H:i',$value['end_time']);
+                $return[$value['start_time'] . $value['end_time']] = $tmp;
+            }
+        }
+        ksort($return);
+
+        return [true, array_values($return)];
+    }
+
     public function getTimestampRange($startTimestamp, $endTimestamp){
         // 将时间戳转换为日期格式
         $startDate = date('Y-m-d', $startTimestamp);

+ 1 - 0
routes/api.php

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