Jelajahi Sumber

添加网格化接口

qiuzijian 1 tahun lalu
induk
melakukan
8e02ee6398

+ 8 - 1
Modules/Admin/Http/Controllers/Api/ApiController.php

@@ -75,7 +75,14 @@ class ApiController extends BaseController
     //网格化巡检记录列表
     public function getResultList()
     {
-
+        $person_id = Input::get('person_id', '');
+        $depart = Input::get('depart', 'all');
+        $date_type = Input::get('date_type', 'week');
+        if (!$person_id) {
+            return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
+        }
+        $result = ApiService::getResultList($person_id, $depart, $date_type);
+        return self::successResponse($result);
     }
 
     //网格化巡检记录列表

+ 110 - 11
Modules/Admin/Services/ApiService.php

@@ -179,10 +179,11 @@ class ApiService{
             $query = $query->where(DB::raw('WEEK(lrsj)'), DB::raw('WEEK(CURDATE())'));
         }
 
-        $query = $query->groupBy('lrdate', 'lrr', 'dwmc')
+        $query = $query->groupBy('lrdate', 'xjdw', 'lrr', 'dwmc')
                    ->select(
                        [
                            DB::raw('DATE(lrsj) as lrdate'),
+                           'xjdw',
                            'lrr',
                            'dwmc'
                        ]
@@ -193,22 +194,22 @@ class ApiService{
         $pie  = [];
         foreach ($query as $key => $val) {
             if ($depart == 'all') {
-                $wghgl = DB::connection('mysql_fwview')->table('uf_wghgl_new')
-                           ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
-                           ->where('lrr', $val->lrr)
-                           ->groupBy('xjdw')
-                           ->select('xjdw')
-                           ->get();
+//                $wghgl = DB::connection('mysql_fwview')->table('uf_wghgl_new')
+//                           ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
+//                           ->where('lrr', $val->lrr)
+//                           ->groupBy('xjdw')
+//                           ->select('xjdw')
+//                           ->get();
 
                 $lastname = DB::connection('mysql_fwview')->table('hrmresource')
                               ->where('id', $val->lrr)->value('lastname');
 
-                foreach ($wghgl as $k => $v) {
+//                foreach ($wghgl as $k => $v) {
                     $allcount = DB::connection('mysql_fwview')->table('formtable_main_974')
-                                  ->where('szxmc', $v->xjdw)->count();
+                                  ->where('szxmc', $val->xjdw)->count();
 
                     $detail = DB::connection('mysql_fwview')->table('uf_wghgl_new')
-                                ->where('xjdw', $v->xjdw)
+                                ->where('xjdw', $val->xjdw)
                                 ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
                                 ->where('lrr', $val->lrr)->count();
 
@@ -216,6 +217,7 @@ class ApiService{
                         $data[$val->lrr] = [
                             'department' => $val->dwmc,
                             'lastname'   => $lastname,
+                            'person_id'  => $val->lrr,
                             'count'      => isset($data[$val->lrr]['count']) ? $data[$val->lrr]['count'] + 1 : 1,
                         ];
                         $pie[$val->lrr] = [
@@ -225,7 +227,7 @@ class ApiService{
                     } else {
                         continue;
                     }
-                }
+//                }
             } else {
                 $allcount = DB::connection('mysql_fwview')->table('formtable_main_974')
                               ->where('szxmc', $depart)->count();
@@ -242,6 +244,7 @@ class ApiService{
                     $data[$val->lrr] = [
                         'department' => $val->dwmc,
                         'lastname'   => $lastname,
+                        'person_id'  => $val->lrr,
                         'count'      => isset($data[$val->lrr]['count']) ? $data[$val->lrr]['count'] + 1 : 1,
                     ];
                     $pie[$val->lrr] = [
@@ -265,4 +268,100 @@ class ApiService{
 
         return $result;
     }
+
+    //网格化巡检记录查询
+    public static function getResultList($person_id, $depart = 'all', $date_type = 'week')
+    {
+        $result['status'] = true;
+        $result['msg']    = ApiEnum::RETURN_SUCCESS;
+        $result['data']   = [];
+
+        $query = DB::connection('mysql_fwview')->table('uf_wghgl_new')->where('lrr', $person_id);
+
+        if ($depart != 'all') {
+            $query = $query->where('xjdw', $depart);
+        }
+
+        if ($date_type == 'month') {
+            $query = $query->where(DB::raw('MONTH(lrsj)'), DB::raw('MONTH(CURDATE())'));
+        } else if ($date_type = 'quarter') {
+            $query = $query->where(DB::raw('QUARTER(lrsj)'), DB::raw('QUARTER(CURDATE())'));
+        } else {
+            $query = $query->where(DB::raw('WEEK(lrsj)'), DB::raw('WEEK(CURDATE())'));
+        }
+
+        $query = $query->groupBy('lrdate', 'xjdw')
+                       ->select(
+                           [
+                               'xjdw',
+                               DB::raw('DATE(lrsj) as lrdate'),
+                           ]
+                       )
+                       ->get();
+
+        $data = [];
+        foreach ($query as $key => $val) {
+            if ($depart == 'all') {
+                $wghgl = DB::connection('mysql_fwview')->table('uf_wghgl_new')
+                           ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
+                           ->where('lrr', $person_id)
+                           ->groupBy('xjdw')
+                           ->select('xjdw')
+                           ->get();
+
+                $lastname = DB::connection('mysql_fwview')->table('hrmresource')
+                              ->where('id', $person_id)->value('lastname');
+
+                foreach ($wghgl as $k => $v) {
+                    $allcount = DB::connection('mysql_fwview')->table('formtable_main_974')
+                                  ->where('szxmc', $v->xjdw)->count();
+
+                    $detail = DB::connection('mysql_fwview')->table('uf_wghgl_new')
+                                ->where('xjdw', $v->xjdw)
+                                ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
+                                ->where('lrr', $val->lrr)->count();
+
+                    if ($detail >= $allcount) {
+                        $data[$val->lrr] = [
+                            'department' => $val->dwmc,
+                            'lastname'   => $lastname,
+                            'person_id'  => $val->lrr,
+                            'count'      => isset($data[$val->lrr]['count']) ? $data[$val->lrr]['count'] + 1 : 1,
+                        ];
+                    } else {
+                        continue;
+                    }
+                }
+            } else {
+                $allcount = DB::connection('mysql_fwview')->table('formtable_main_974')
+                              ->where('szxmc', $depart)->count();
+
+                $detail = DB::connection('mysql_fwview')->table('uf_wghgl_new')
+                            ->where('xjdw', $depart)
+                            ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
+                            ->where('lrr', $val->lrr)->count();
+
+                if ($detail >= $allcount) {
+                    $lastname = DB::connection('mysql_fwview')->table('hrmresource')
+                                  ->where('id', $val->lrr)->value('lastname');
+
+                    $data[$val->lrr] = [
+                        'department' => $val->dwmc,
+                        'lastname'   => $lastname,
+                        'person_id'  => $val->lrr,
+                        'count'      => isset($data[$val->lrr]['count']) ? $data[$val->lrr]['count'] + 1 : 1,
+                    ];
+                } else {
+                    continue;
+                }
+            }
+        }
+
+        $data_arr = array_column($data, 'count');
+        array_multisort($data_arr, SORT_DESC, $data);
+
+        $result['data']['list'] = $data;
+
+        return $result;
+    }
 }