فهرست منبع

风险作业导出

任敬轩 6 ماه پیش
والد
کامیت
3bdd85e000
1فایلهای تغییر یافته به همراه86 افزوده شده و 1 حذف شده
  1. 86 1
      Modules/Camera/Http/Controllers/Api/CameraApiController.php

+ 86 - 1
Modules/Camera/Http/Controllers/Api/CameraApiController.php

@@ -3590,7 +3590,7 @@ class CameraApiController extends BaseController
         return $result;
     }
 
-    //导出完成情况表委外列
+    //导出盯控次数统计
     public function export4(Request $request){
         $params = $request->all();
 
@@ -3599,6 +3599,91 @@ class CameraApiController extends BaseController
         }else{
             $date = date('Y-m-d');
         }
+
+        $result = [];
+        $index = 0;
+
+        $risk_data = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment as t')
+            ->select('t.*','t2.title as area','t1.title','t1.sort')
+            ->leftJoin('uf_xx_coal_washery as t1', 't.coal_washery_id', '=', 't1.id')
+            ->leftJoin('uf_xx_area as t2', 't1.area_id', '=', 't2.id')
+            ->whereDate('t.create_time', $date)
+            ->where('t.is_delete',0)
+            ->where('t.delete_type',0)
+            ->whereNotNull('t.flow_id')
+            ->orderBy('t1.sort')
+            ->get();
+
+        if(count($risk_data) > 0){
+            for($i=0;$i<count($risk_data);$i++){
+                $people = explode('、',$risk_data[$i]->work_people);
+                if(count($people) > 1){//多人
+                    for($j=0;$j<count($people);$j++){
+                        $result[$index]['area'] = $risk_data[$i]->area;
+                        $result[$index]['unit'] = $risk_data[$i]->title;
+                        $work_num  = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time',$date)->where('is_delete',0)->where('delete_type',0)->whereNotNull('flow_id')->where('coal_washery_id',$risk_data[$i]->coal_washery_id)->count();
+                        $result[$index]['work_num'] = $work_num;
+                        $result[$index]['work_people'] = $people[$j];
+                        $result[$index]['control_num'] = 1;
+                        $result[$index]['account'] = 0;
+                        $result[$index]['sort'] = $risk_data[$i]->sort;
+                        $index++;
+                    }
+                }else{//单人
+                    $result[$index]['area'] = $risk_data[$i]->area;
+                    $result[$index]['unit'] = $risk_data[$i]->title;
+                    $work_num  = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time',$date)->where('is_delete',0)->where('delete_type',0)->whereNotNull('flow_id')->where('coal_washery_id',$risk_data[$i]->coal_washery_id)->count();
+                    $result[$index]['work_num'] = $work_num;
+                    $result[$index]['work_people'] = $risk_data[$i]->work_people;
+                    $result[$index]['control_num'] = 1;
+                    $result[$index]['account'] = 0;
+                    $result[$index]['sort'] = $risk_data[$i]->sort;
+                    $index++;
+                }
+            }
+        }
+
+        if(count($result) > 0){
+            $workPeopleValues = array_column($result, 'work_people');
+            $counts = array_count_values($workPeopleValues);
+            for($i=0;$i<count($result);$i++){
+                $result[$i]['control_num'] = $counts[$result[$i]['work_people']];
+            }
+            for($i=0;$i<count($result);$i++){
+                $num = $result[$i]['control_num']/$result[$i]['work_num'];
+                $num = number_format($num, 2)*100;
+                $result[$i]['account'] = $num;
+            }
+
+            usort($result, function ($a, $b) {
+                return $b['account'] <=> $a['account'];
+            });
+
+            $rank = 1;
+            for ($i = 0; $i < count($result); $i++) {
+                // 对于同一个 control_num 赋予相同的排名
+                if ($i > 0 && $result[$i]['account'] == $result[$i - 1]['account']) {
+                    $result[$i]['rank'] = $result[$i - 1]['rank'];  // 保持相同排名
+                } else {
+                    $result[$i]['rank'] = $rank++;  // 否则递增排名
+                }
+            }
+
+            usort($result, function ($a, $b) {
+                return $a['sort'] <=> $b['sort'];
+            });
+
+            $result = array_map(function ($item) {
+                unset($item['sort']);
+                return $item;
+            }, $result);
+
+            for ($i = 0; $i < count($result); $i++) {
+                $result[$i]['account'] = $result[$i]['account'].'%';
+            }
+        }
+
+        return $result;
     }
 
     //图片上传