浏览代码

列表接口

cqp 11 月之前
父节点
当前提交
28ca1fa892
共有 3 个文件被更改,包括 354 次插入9 次删除
  1. 52 0
      app/Http/Controllers/Api/ProjectController.php
  2. 298 9
      app/Service/ProjectService.php
  3. 4 0
      routes/api.php

+ 52 - 0
app/Http/Controllers/Api/ProjectController.php

@@ -109,6 +109,19 @@ class ProjectController extends BaseController
         }
     }
 
+    public function projectStageList(Request $request)
+    {
+        $service = new ProjectService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->projectStageList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function addStageNode(Request $request){
         $service = new ProjectService();
         $user = $request->userData->toArray();
@@ -146,6 +159,19 @@ class ProjectController extends BaseController
         }
     }
 
+    public function projectStageNodeList(Request $request)
+    {
+        $service = new ProjectService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->projectStageNodeList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function addStageNodeMission(Request $request){
         $service = new ProjectService();
         $user = $request->userData->toArray();
@@ -183,6 +209,19 @@ class ProjectController extends BaseController
         }
     }
 
+    public function projectStageNodeMissionList(Request $request)
+    {
+        $service = new ProjectService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->projectStageNodeMissionList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function addStageNodeMissionDetail(Request $request){
         $service = new ProjectService();
         $user = $request->userData->toArray();
@@ -219,4 +258,17 @@ class ProjectController extends BaseController
             return $this->json_return(201,$data);
         }
     }
+
+    public function projectStageNodeMissionDetailList(Request $request)
+    {
+        $service = new ProjectService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->projectStageNodeMissionDetailList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
 }

+ 298 - 9
app/Service/ProjectService.php

@@ -150,15 +150,9 @@ class ProjectService extends Service
         $project_stage_node_mission = ProjectStageNodeMission::where('del_time',0)
             ->where('project_id',$data['id'])
             ->get()->toArray();
-        $employee_array = [];
-        $employee_id = array_column($project_stage_node_mission,'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();
+
+        //获取人员名称
+        $emp_map = $this->returnEmployeeTitle($project_stage_node_mission);
         $project_stage_node_mission_map = [];
         foreach ($project_stage_node_mission as $key => $value){
             $title = "";
@@ -412,6 +406,44 @@ class ProjectService extends Service
         return [true, ''];
     }
 
+    public function projectStageList($data,$user){
+        $model = ProjectStage::where('del_time',0)
+            ->select('id','title','project_id','plan_start_time','plan_end_time','start_time','receivable_amount','receipt_amount','crt_time')
+            ->orderBy('id','desc');
+
+        if(! empty($data['title'])) $model->where('title',$data['title']);
+        if(! empty($data['project_title'])) {
+            $project_id = $this->searchProject(['title' => $data['project_title']]);
+            $model->whereIn('project_id', $project_id);
+        }
+        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]);
+        }
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->organizationStageData($list);
+
+        return [true, $list];
+    }
+
+    public function organizationStageData($data) {
+        if (empty($data['data'])) return $data;
+
+        $project_map = $this->getProject(array_column($data['data'],'project_id'));
+        foreach ($data['data'] 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']) : '';
+            $data['data'][$key]['plan_time'] = $start_time . '——' . $end_time;
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']): '';
+            $data['data'][$key]['start_time'] = $value['start_time'] ? date("Y-m-d",$value['start_time']): '';
+            $data['data'][$key]['project_title'] = $project_map[$value['project_id']] ?? "";
+        }
+
+        return $data;
+    }
+
     public function editStageNode($data){
         list($status,$msg) = $this->stageRuleNode($data,false);
         if(! $status) return [$status,$msg];
@@ -523,6 +555,49 @@ class ProjectService extends Service
         return [true, ''];
     }
 
+    public function projectStageNodeList($data,$user){
+        $model = ProjectStageNode::where('del_time',0)
+            ->select('id','project_stage_id','project_id','plan_start_time','plan_end_time','start_time','crt_time')
+            ->orderBy('id','desc');
+
+        if(! empty($data['project_stage_title'])) {
+            $project_stage_id = $this->searchProjectStage(['title' => $data['project_stage_title']]);
+            $model->whereIn('project_stage_id', $project_stage_id);
+        }
+        if(! empty($data['project_title'])) {
+            $project_id = $this->searchProject(['title' => $data['project_title']]);
+            $model->whereIn('project_id', $project_id);
+        }
+        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]);
+        }
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->organizationStageNodeData($list);
+
+        return [true, $list];
+    }
+
+    public function organizationStageNodeData($data) {
+        if (empty($data['data'])) return $data;
+
+        $project_map = $this->getProject(array_column($data['data'],'project_id'));
+        $project_stage_map = $this->getProjectStage(array_column($data['data'],'project_stage_id'));
+        foreach ($data['data'] 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']) : '';
+            $data['data'][$key]['plan_time'] = $start_time . '——' . $end_time;
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']): '';
+            $data['data'][$key]['start_time'] = $value['start_time'] ? date("Y-m-d",$value['start_time']): '';
+            $data['data'][$key]['project_title'] = $project_map[$value['project_id']] ?? "";
+            $data['data'][$key]['project_stage_title'] = $project_stage_map[$value['project_stage_id']] ?? "";
+        }
+
+        return $data;
+    }
+
     public function editStageNodeMission($data){
         list($status,$msg) = $this->stageRuleNodeMission($data,false);
         if(! $status) return [$status,$msg];
@@ -627,6 +702,61 @@ class ProjectService extends Service
         return [true, ''];
     }
 
+    public function projectStageNodeMissionList($data,$user){
+        $model = ProjectStageNodeMission::where('del_time',0)
+            ->select('id','project_stage_id','project_id','project_stage_node_id','title','content','employee_id','crt_time')
+            ->orderBy('id','desc');
+
+        if(! empty($data['project_stage_title'])) {
+            $project_stage_id = $this->searchProjectStage(['title' => $data['project_stage_title']]);
+            $model->whereIn('project_stage_id', $project_stage_id);
+        }
+        if(! empty($data['project_title'])) {
+            $project_id = $this->searchProject(['title' => $data['project_title']]);
+            $model->whereIn('project_id', $project_id);
+        }
+        if(! empty($data['project_stage_node_title'])) {
+            $project_stage_node_id = $this->searchProjectStageNode(['title' => $data['project_stage_node_title']]);
+            $model->whereIn('project_stage_node_id', $project_stage_node_id);
+        }
+        if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
+        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]);
+        }
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->organizationStageNodeMissionData($list);
+
+        return [true, $list];
+    }
+
+    public function organizationStageNodeMissionData($data) {
+        if (empty($data['data'])) return $data;
+
+        $emp_map = $this->returnEmployeeTitle($data['data']);
+        $project_map = $this->getProject(array_column($data['data'],'project_id'));
+        $project_stage_map = $this->getProjectStage(array_column($data['data'],'project_stage_id'));
+        $project_stage_node_map = $this->getProjectStageNode(array_column($data['data'],'project_stage_node_id'));
+        foreach ($data['data'] as $key => $value){
+            $title = "";
+            $tmp = explode(',', $value['employee_id']);
+            foreach ($tmp as $val){
+                $title_tmp = $emp_map[$val] ?? "";
+                if($title_tmp) $title .= $title_tmp . ",";
+            }
+            $data['data'][$key]['employee_title'] = rtrim($title,',');
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']): '';
+            $data['data'][$key]['start_time'] = $value['start_time'] ? date("Y-m-d",$value['start_time']): '';
+            $data['data'][$key]['project_title'] = $project_map[$value['project_id']] ?? "";
+            $data['data'][$key]['project_stage_title'] = $project_stage_map[$value['project_stage_id']] ?? "";
+            $data['data'][$key]['project_stage_node_title'] = $project_stage_node_map[$value['project_stage_node_id']] ?? "";
+        }
+
+        return $data;
+    }
+
     public function editStageNodeMissionDetail($data){
         list($status,$msg) = $this->stageRuleNodeMissionDetail($data,false);
         if(! $status) return [$status,$msg];
@@ -728,4 +858,163 @@ class ProjectService extends Service
 
         return [true, ''];
     }
+
+    public function projectStageNodeMissionDetailList($data,$user){
+        $model = ProjectStageNodeMissionDetail::where('del_time',0)
+            ->select('id','project_stage_id','project_id','project_stage_node_id','project_stage_node_mission_id','content','start_time','crt_time','end_time','completion_degree','crt_id')
+            ->orderBy('id','desc');
+
+        if(! empty($data['project_stage_title'])) {
+            $project_stage_id = $this->searchProjectStage(['title' => $data['project_stage_title']]);
+            $model->whereIn('project_stage_id', $project_stage_id);
+        }
+        if(! empty($data['project_title'])) {
+            $project_id = $this->searchProject(['title' => $data['project_title']]);
+            $model->whereIn('project_id', $project_id);
+        }
+        if(! empty($data['project_stage_node_title'])) {
+            $project_stage_node_id = $this->searchProjectStageNode(['title' => $data['project_stage_node_title']]);
+            $model->whereIn('project_stage_node_id', $project_stage_node_id);
+        }
+        if(! empty($data['project_stage_node_mission_title'])) {
+            $project_stage_node_mission_id = $this->searchProjectStageNodeMission(['title' => $data['project_stage_node_mission_title']]);
+            $model->whereIn('project_stage_node_mission_title', $project_stage_node_mission_id);
+        }
+        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]);
+        }
+
+        $list = $this->limit($model,'',$data);
+        $list = $this->organizationStageNodeMissionDetailData($list);
+
+        return [true, $list];
+    }
+
+    public function organizationStageNodeMissionDetailData($data) {
+        if (empty($data['data'])) return $data;
+
+        $project_map = $this->getProject(array_column($data['data'],'project_id'));
+        $project_stage_map = $this->getProjectStage(array_column($data['data'],'project_stage_id'));
+        $project_stage_node_map = $this->getProjectStageNode(array_column($data['data'],'project_stage_node_id'));
+        $project_stage_node_mission_map = $this->getProjectStageNodeMission(array_column($data['data'],'project_stage_node_mission_id'));
+        foreach ($data['data'] as $key => $value){
+            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d H:i:s",$value['crt_time']): '';
+            $data['data'][$key]['start_time'] = $value['start_time'] ? date("Y-m-d",$value['start_time']): '';
+            $data['data'][$key]['end_time'] = $value['end_time'] ? date("Y-m-d",$value['end_time']): '';
+            $data['data'][$key]['project_title'] = $project_map[$value['project_id']] ?? "";
+            $data['data'][$key]['project_stage_title'] = $project_stage_map[$value['project_stage_id']] ?? "";
+            $data['data'][$key]['project_stage_node_title'] = $project_stage_node_map[$value['project_stage_node_id']] ?? "";
+            $data['data'][$key]['project_stage_node_mission_title'] = $project_stage_node_mission_map[$value['project_stage_node_mission_id']] ?? "";
+        }
+
+        return $data;
+    }
+
+    public function searchProject($data){
+        $model = new Project();
+        $model->where('del_time',0);
+
+        if(empty($data['title'])){
+            $model->where('title', 'LIKE', '%'.$data['title'].'%');
+            $id = $model->select('id')->get()->toArray();
+            return array_column($id,'id');
+        }
+
+        return [];
+    }
+
+    public function getProject($project_id = []){
+        if(empty($project_id)) return [];
+
+        $map = Project::whereIn('id', $project_id)
+            ->pluck('title','id')
+            ->toArray();
+
+        return $map;
+    }
+
+    public function searchProjectStage($data){
+        $model = new ProjectStage();
+        $model->where('del_time',0);
+
+        if(empty($data['title'])){
+            $model->where('title', 'LIKE', '%'.$data['title'].'%');
+            $id = $model->select('id')->get()->toArray();
+            return array_column($id,'id');
+        }
+
+        return [];
+    }
+
+    public function getProjectStage($project_stage_id = []){
+        if(empty($project_stage_id)) return [];
+
+        $map = ProjectStage::whereIn('id', $project_stage_id)
+            ->pluck('title','id')
+            ->toArray();
+
+        return $map;
+    }
+
+    public function searchProjectStageNode($data){
+        $model = new ProjectStageNode();
+        $model->where('del_time',0);
+
+        if(empty($data['title'])){
+            $model->where('title', 'LIKE', '%'.$data['title'].'%');
+            $id = $model->select('id')->get()->toArray();
+            return array_column($id,'id');
+        }
+
+        return [];
+    }
+
+    public function getProjectStageNode($project_stage_node_id = []){
+        if(empty($project_stage_node_id)) return [];
+
+        $map = ProjectStageNode::whereIn('id', $project_stage_node_id)
+            ->pluck('title','id')
+            ->toArray();
+
+        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);
+
+        if(empty($data['title'])){
+            $model->where('title', 'LIKE', '%'.$data['title'].'%');
+            $id = $model->select('id')->get()->toArray();
+            return array_column($id,'id');
+        }
+
+        return [];
+    }
+
+    public function getProjectStageNodeMission($project_stage_node_mission_id = []){
+        if(empty($project_stage_node_mission_id)) return [];
+
+        $map = ProjectStageNodeMission::whereIn('id', $project_stage_node_mission_id)
+            ->pluck('title','id')
+            ->toArray();
+
+        return $map;
+    }
 }

+ 4 - 0
routes/api.php

@@ -90,15 +90,19 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('projectAddStage', 'Api\ProjectController@addStage');
     $route->any('projectEditStage', 'Api\ProjectController@editStage');
     $route->any('projectDelStage', 'Api\ProjectController@delStage');
+    $route->any('projectStageList', 'Api\ProjectController@projectStageList');
     $route->any('projectAddStageNode', 'Api\ProjectController@addStageNode');
     $route->any('projectEditStageNode', 'Api\ProjectController@editStageNode');
     $route->any('projectDelStageNode', 'Api\ProjectController@delStageNode');
+    $route->any('projectStageNodeList', 'Api\ProjectController@projectStageNodeList');
     $route->any('projectAddStageNodeMission', 'Api\ProjectController@addStageNodeMission');
     $route->any('projectEditStageNodeMission', 'Api\ProjectController@editStageNodeMission');
     $route->any('projectDelStageNodeMission', 'Api\ProjectController@delStageNodeMission');
+    $route->any('projectStageNodeMissionList', 'Api\ProjectController@projectStageNodeMissionList');
     $route->any('projectAddStageNodeMissionDetail', 'Api\ProjectController@addStageNodeMissionDetail');
     $route->any('projectEditStageNodeMissionDetail', 'Api\ProjectController@editStageNodeMissionDetail');
     $route->any('projectDelStageNodeMissionDetail', 'Api\ProjectController@delStageNodeMissionDetail');
+    $route->any('projectStageNodeMissionDetailList', 'Api\ProjectController@projectStageNodeMissionDetailList');
 
     //获取考勤的图片
     $route->get('/kq/image/{filename}', function ($filename) {