cqp 5 tuntia sitten
vanhempi
sitoutus
f18f974b11

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

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

+ 70 - 0
app/Service/ItemService.php

@@ -2771,6 +2771,65 @@ class ItemService extends Service
         return [true, $customer];
     }
 
+    public function itemMissionProgressListCommon($data,$user, $field = []){
+        $item_id = $data['item_id'] ?? 0;
+        $item_node_id = $data['item_node_id'] ?? 0;
+        $item_node_mission_id = $data['item_node_mission_id'] ?? 0;
+        $employee_id = $data['employee_id'] ?? 0;
+
+        $model = ItemNodeMission::from('item_node_mission as i');
+        $model = $model->TopAndEmployeeClear($user, $data)
+            ->leftJoin('item_node_mission_content as e', 'i.id', '=', 'e.item_node_mission_id')
+            ->where('i.del_time', 0)
+            ->where('e.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);
+            })
+            ->when(! empty($item_node_mission_id),function ($query) use($item_node_mission_id){
+                return $query->where('item_node_mission_id', $item_node_mission_id);
+            })
+            ->when(! empty($employee_id),function ($query) use($employee_id){
+                return $query->where('data_id', $employee_id);
+            })
+            ->select('e.*')
+            ->orderby('e.id', 'desc');
+
+        return $model;
+    }
+
+    public function itemMissionProgressList($data, $user){
+        $model = $this->itemMissionProgressListCommon($data, $user);
+        $list = $this->limit($model,'',$data);
+        $list = $this->fillItemMissionProgressList($list, $user);
+
+        return [true, $list];
+    }
+
+    public function fillItemMissionProgressList($list, $user){
+        $emp = (new EmployeeService())->getEmployeeMap(array_unique(array_merge_recursive(array_column($list['data'],'data_id'), array_column($list['data'],'crt_id'))));
+
+        $item = $this->getItemMap(array_unique(array_column($list['data'],'item_id')));
+        $itemNode = $this->getItemNodeMap2(array_unique(array_column($list['data'],'item_node_id')));
+        $itemNodeMission = $this->getItemNodeMissionMap(array_unique(array_column($list['data'],'item_node_mission_id')));
+        foreach ($list['data'] as $key => $value){
+            $list['data'][$key]['order_time'] = $value['order_time'] ? date('Y-m-d',$value['order_time']) : '';
+            $list['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
+            $list['data'][$key]['crt_name'] = $emp[$value['crt_id']] ?? '';
+            $list['data'][$key]['data_name'] = $emp[$value['data_id']] ?? '';
+            $item_tmp = $item[$value['item_id']] ?? [];
+            $list['data'][$key]['item_title'] = $item_tmp['title'] ?? '';
+            $item_node_tmp = $itemNode[$value['item_node_id']] ?? [];
+            $list['data'][$key]['item_node_title'] = $item_node_tmp['title'] ?? '';
+            $item_node_mission_tmp = $itemNodeMission[$value['item_node_mission_id']] ?? [];
+            $list['data'][$key]['item_node_mission_title'] = $item_node_mission_tmp['title'] ?? '';
+        }
+
+        return $list;
+    }
+
     public function itemMissionProgressBoard($data = [], $user = []){
         $is_my = $data['is_my'] ?? 0;
         $my = $user['id'] ?? 0;
@@ -3169,6 +3228,17 @@ class ItemService extends Service
             ->toArray();
     }
 
+    public function getItemNodeMap2($ids){
+        $ids = array_filter((array)$ids);
+        if (empty($ids)) return [];
+
+        return ItemNode::whereIn('id', $ids)
+            ->select('id', 'title', 'code')
+            ->get()
+            ->keyBy('id')
+            ->toArray();
+    }
+
     public function checkIsDelivery($data, $tableName){
         //是否需要交付物完结
         if($data['is_delivery_required']){

+ 2 - 2
app/Service/StatisticService.php

@@ -1123,13 +1123,13 @@ class StatisticService extends StatisticCommonService
         return $list;
     }
 
+    // 取别名
     public function enterpriseRdItemStatistic($data, $user){
         // 1. 先声明表名和别名
         $model = ItemDetails::from('item_details as i');
         // 2. 再调用 TopClear
         $model = $model->TopClear($user, $data);
-        $model = $model->from('item_details as i')
-            ->where('i.del_time', 0)
+        $model = $model->where('i.del_time', 0)
             ->where('i.type', ItemDetails::type_one);
         $model = $model->leftJoin('employee as e', 'i.data_id', '=', 'e.id');
         $model = $model->leftJoin('item as it', 'it.id', '=', 'i.item_id');

+ 1 - 0
routes/api.php

@@ -133,6 +133,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('itemNodeMissionList', 'Api\ItemController@itemNodeMissionList');
     $route->any('itemGannetList', 'Api\ItemController@itemGannetList');
     $route->any('itemGannetGetSonData', 'Api\ItemController@itemGannetGetSonData');
+    $route->any('itemMissionProgressList', 'Api\ItemController@itemMissionProgressList');
 
     //外部获取进展
     $route->any('itemMissionProgressBoard', 'Api\ItemController@itemMissionProgressBoard');