cqp 11 ماه پیش
والد
کامیت
1247758ce9
1فایلهای تغییر یافته به همراه51 افزوده شده و 23 حذف شده
  1. 51 23
      app/Service/ProjectService.php

+ 51 - 23
app/Service/ProjectService.php

@@ -1083,15 +1083,30 @@ class ProjectService extends Service
             if(empty($main)) return [false, '项目不存在或已删除'];
             $main = $main->toArray();
 
+            //项目成员
+            $return = $this->getProjectEmployee($main, ProjectEmployee::type_one);
+            $main['employee_title'] = $return['name'] ?? "";
+            $main['employee_id'] = $return['name_id'] ?? "";
+
             //阶段
             $project_stage = ProjectStage::where('del_time',0)
                 ->where('project_id',$id)
                 ->get()->toArray();
+            $map = [];
+            $project_stage_id = array_column($project_stage, 'id');
+            foreach ($project_stage_id as $value){
+                //阶段成员
+                $return = $this->getProjectEmployee(['id' => $value], ProjectEmployee::type_two);
+                $map[$value] = $return;
+            }
             foreach ($project_stage as $key => $value){
                 $start_time = $value['plan_start_time'] ? date("Y-m-d H:i",$value['plan_start_time']) : '';
                 $end_time = $value['plan_end_time'] ? date("Y-m-d H:i",$value['plan_end_time']) : '';
                 $project_stage[$key]['plan_time'] = $start_time . '——' . $end_time;
                 $project_stage[$key]['start_time'] = $value['start_time'] ? date("Y-m-d",$value['start_time']): '';
+                $tmp = $map[$value['id']] ?? [];
+                $project_stage[$key]['employee_title'] = $tmp['name'] ?? "";
+                $project_stage[$key]['employee_id'] = $tmp['name_id'] ?? "";
             }
 
             $main['children'] = $project_stage;
@@ -1104,15 +1119,31 @@ class ProjectService extends Service
             if(empty($main)) return [false, '项目的阶段不存在或已删除'];
             $main = $main->toArray();
 
+            //阶段成员
+            $return = $this->getProjectEmployee($main, ProjectEmployee::type_two);
+            $main['employee_title'] = $return['name'] ?? "";
+            $main['employee_id'] = $return['name_id'] ?? "";
+
             //节点
             $project_stage_node = ProjectStageNode::where('del_time',0)
                 ->where('project_stage_id',$id)
                 ->get()->toArray();
+            $map = [];
+            $project_stage_node_id = array_column($project_stage_node, 'id');
+            foreach ($project_stage_node_id as $value){
+                //节点成员
+                $return = $this->getProjectEmployee(['id' => $value], ProjectEmployee::type_three);
+                $map[$value] = $return;
+            }
             foreach ($project_stage_node as $key => $value){
                 $start_time = $value['plan_start_time'] ? date("Y-m-d H:i",$value['plan_start_time']) : '';
                 $end_time = $value['plan_end_time'] ? date("Y-m-d H:i",$value['plan_end_time']) : '';
                 $project_stage_node[$key]['plan_time'] = $start_time . '——' . $end_time;
                 $project_stage_node[$key]['start_time'] = $value['start_time'] ? date("Y-m-d",$value['start_time']): '';
+
+                $tmp = $map[$value['id']] ?? [];
+                $project_stage_node[$key]['employee_title'] = $tmp['name'] ?? "";
+                $project_stage_node[$key]['employee_id'] = $tmp['name_id'] ?? "";
             }
             $main['children'] = $project_stage_node;
 
@@ -1124,21 +1155,27 @@ class ProjectService extends Service
             if(empty($main)) return [false, '项目阶段节点不存在或已删除'];
             $main = $main->toArray();
 
+            //节点成员
+            $return = $this->getProjectEmployee($main, ProjectEmployee::type_three);
+            $main['employee_title'] = $return['name'] ?? "";
+            $main['employee_id'] = $return['name_id'] ?? "";
+
             //任务
             $project_stage_node_mission = ProjectStageNodeMission::where('del_time',0)
                 ->where('project_stage_node_id',$id)
                 ->get()->toArray();
 
-            //获取人员名称
-            $emp_map = $this->returnEmployeeTitle($project_stage_node_mission);
+            $map = [];
+            $project_stage_node_mission_id = array_column($project_stage_node_mission, 'id');
+            foreach ($project_stage_node_mission_id as $value){
+                //任务成员
+                $return = $this->getProjectEmployee(['id' => $value], ProjectEmployee::type_four);
+                $map[$value] = $return;
+            }
             foreach ($project_stage_node_mission as $key => $value){
-                $title = "";
-                $tmp = explode(',', $value['employee_id']);
-                foreach ($tmp as $val){
-                    $title_tmp = $emp_map[$val] ?? "";
-                    if($title_tmp) $title .= $title_tmp . ",";
-                }
-                $project_stage_node_mission[$key]['employee_title'] = rtrim($title,',');
+                $tmp = $map[$value['id']] ?? [];
+                $project_stage_node_mission[$key]['employee_title'] = $tmp['name'] ?? "";
+                $project_stage_node_mission[$key]['employee_id'] = $tmp['name_id'] ?? "";
             }
             $main['children'] = $project_stage_node_mission;
 
@@ -1150,6 +1187,11 @@ class ProjectService extends Service
             if(empty($main)) return [false, '项目阶段节点下该任务不存在或已删除'];
             $main = $main->toArray();
 
+            //任务成员
+            $return = $this->getProjectEmployee($main, ProjectEmployee::type_four);
+            $main['employee_title'] = $return['name'] ?? "";
+            $main['employee_id'] = $return['name_id'] ?? "";
+
             //任务报告
             $project_stage_node_mission_detail = ProjectStageNodeMissionDetail::where('del_time',0)
                 ->where('project_stage_node_mission_id',$data['id'])
@@ -1239,20 +1281,6 @@ class ProjectService extends Service
         return $map;
     }
 
-    public function returnEmployeeTitle($data){
-        $employee_array = [];
-        $employee_id = array_column($data,'employee_id');
-        foreach ($employee_id as $emp){
-            $tmp = explode(',',$emp);
-            foreach ($tmp as $val){
-                if(! in_array($val, $employee_array)) $employee_array[] = $val;
-            }
-        }
-        $emp_map = Employee::whereIn('id',$employee_array)->pluck('emp_name','id')->toArray();
-
-        return $emp_map;
-    }
-
     public function searchProjectStageNodeMission($data){
         $model = new ProjectStageNodeMission();
         $model->where('del_time',0);