cqp 3 týždňov pred
rodič
commit
257f8d092c

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

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

+ 3 - 0
app/Model/ItemNodeEmployee.php

@@ -9,4 +9,7 @@ class ItemNodeEmployee extends DataScopeBaseModel
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
+
+    const type_zero = 0; // 节点负责人
+    const type_one = 1; // 项目负责人
 }

+ 4 - 0
app/Model/ItemNodeMissionEmployee.php

@@ -9,4 +9,8 @@ class ItemNodeMissionEmployee extends DataScopeBaseModel
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';
     protected $dateFormat = 'U';
+
+    const type_zero = 0; // 任务负责人
+    const type_one = 1; // 项目负责人
+    const type_two = 2; // 节点负责人
 }

+ 107 - 0
app/Service/ItemService.php

@@ -26,6 +26,56 @@ use Illuminate\Support\Facades\DB;
 
 class ItemService extends Service
 {
+    public function itemGannetCommon($data,$user, $field = []){
+        if(empty($data['time'][0]) || empty($data['time'][1])) return [false, '请选择开始与结束时间'];
+        $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+        $start = $return[0];
+        $end = $return[1];
+        $oneYearLater = strtotime('+1 year', $start);
+        if ($end > $oneYearLater) return [false, '查询范围不能超过一年'];
+        $type = [
+            'item' => Item::class,
+            'item_node' => ItemNode::class,
+            'item_node_mission' => ItemNodeMission::class,
+        ];
+        if (empty($data['type']) && ! isset($type[$data['type']])) return [false , '类型错误'];
+        $class = $type[$data['type']];
+        $model = $class::TopAndEmployeeClear($user,$data);
+
+        $model = ItemNodeMission::TopAndEmployeeClear($user,$data);
+        $model = $model->where('del_time',0)
+//            ->when(! empty($item_id),function ($query) use($item_id){
+//                return $query->where('item_id', $item_id);
+//            })
+//            ->when(! empty($item_node_id),function ($query) use($item_node_id){
+//                return $query->where('item_node_id', $item_node_id);
+//            })
+            ->select($field)
+            ->orderby('id', 'desc');
+
+
+        if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
+        if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
+        if(! empty($data['id'])) $model->whereIn('id', $data['id']);
+        if(isset($data['state'])) $model->where('state', $data['state']);
+        if(isset($data['approval_state'])) $model->where('approval_state', $data['approval_state']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<=',$return[1]);
+        }
+
+        return $model;
+    }
+
+    public function itemGannetCommon1($data,$user){
+        $model = $this->itemNodeMissionCommon($data, $user);
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillNodeMissionData($list);
+
+        return [true, $list];
+    }
+
     public function itemFileUpLoad($data,$user){
         // 1. 基础校验
         $from = $data['from'] ?? null;
@@ -475,6 +525,7 @@ class ItemService extends Service
 
     private function saveEmployee($id, $time, $data, $user, $old_employee_id = 0){
         if($old_employee_id != $data['charge_id']){
+            //项目负责人更新
             ItemEmployee::where('del_time',0)
                 ->where('item_id', $id)
                 ->where('data_id', $old_employee_id)
@@ -486,6 +537,42 @@ class ItemService extends Service
                 'top_depart_id' => $user['top_depart_id'],
                 'crt_time' => $time
             ]);
+
+            // 项目下的节点 如果有数据也要更新
+            $item_node = ItemNodeEmployee::where('item_id', $data['id'])
+                ->where('type', ItemNodeEmployee::type_one)
+                ->where('data_id', $old_employee_id)
+                ->select('item_id', 'item_node_id', 'top_depart_id')
+                ->get()->toArray();
+            ItemNodeEmployee::where('item_id', $data['id'])
+                ->where('type', ItemNodeEmployee::type_one)
+                ->where('data_id', $old_employee_id)
+                ->delete();
+            if(! empty($item_node)){
+                foreach ($item_node as $key => $value){
+                    $item_node[$key]['data_id'] = $data['charge_id'];
+                    $item_node[$key]['crt_time'] = $time;
+                }
+                ItemNodeEmployee::insert($item_node);
+            }
+
+            // 项目下的节点的任务 如果有数据也要更新
+            $item_node_mission = ItemNodeMissionEmployee::where('item_id', $data['id'])
+                ->where('type', ItemNodeMissionEmployee::type_one)
+                ->where('data_id', $old_employee_id)
+                ->select('item_id', 'item_node_id', 'item_node_mission_id', 'top_depart_id')
+                ->get()->toArray();
+            ItemNodeMissionEmployee::where('item_id', $data['id'])
+                ->where('type', ItemNodeMissionEmployee::type_one)
+                ->where('data_id', $old_employee_id)
+                ->delete();
+            if(! empty($item_node_mission)){
+                foreach ($item_node_mission as $key => $value){
+                    $item_node_mission[$key]['data_id'] = $data['charge_id'];
+                    $item_node_mission[$key]['crt_time'] = $time;
+                }
+                ItemNodeMissionEmployee::insert($item_node_mission);
+            }
         }
     }
 
@@ -1226,10 +1313,12 @@ class ItemService extends Service
     }
 
     private function saveNodeEmployee($id, $time, $data, $user, $old_employee_id = 0){
+        //负责人更换
         if($old_employee_id != $data['charge_id']){
             ItemNodeEmployee::where('del_time',0)
                 ->where('item_node_id', $id)
                 ->where('data_id', $old_employee_id)
+                ->where('type', 0)
                 ->delete();
 
             ItemNodeEmployee::insert([
@@ -1239,6 +1328,24 @@ class ItemService extends Service
                 'top_depart_id' => $user['top_depart_id'],
                 'crt_time' => $time
             ]);
+
+            //如果任务有数据 也需要更新
+            $item_node_mission = ItemNodeMissionEmployee::where('item_node_id', $data['id'])
+                ->where('type', ItemNodeMissionEmployee::type_two)
+                ->where('data_id', $old_employee_id)
+                ->select('item_id', 'item_node_id', 'item_node_mission_id', 'top_depart_id')
+                ->get()->toArray();
+            ItemNodeMissionEmployee::where('item_id', $data['id'])
+                ->where('type', ItemNodeMissionEmployee::type_two)
+                ->where('data_id', $old_employee_id)
+                ->delete();
+            if(! empty($item_node_mission)){
+                foreach ($item_node_mission as $key => $value){
+                    $item_node_mission[$key]['data_id'] = $data['charge_id'];
+                    $item_node_mission[$key]['crt_time'] = $time;
+                }
+                ItemNodeMissionEmployee::insert($item_node_mission);
+            }
         }
     }
 

+ 1 - 0
routes/api.php

@@ -124,6 +124,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('itemNodeMissionUpdateProgressContent', 'Api\ItemController@itemNodeMissionUpdateProgressContent'); // 更新任务进展人员日报
     $route->any('itemNodeMissionUpdateState', 'Api\ItemController@itemNodeMissionUpdateState'); // 拖拽更新任务状态
     $route->any('itemNodeMissionList', 'Api\ItemController@itemNodeMissionList');
+    $route->any('itemGannetList', 'Api\ItemController@itemGannetList');
 
     //标签管理
     $route->any('tagList', 'Api\TagController@tagList');