Jelajahi Sumber

风险作业总表接口

qr 7 bulan lalu
induk
melakukan
19ce1435b5
1 mengubah file dengan 129 tambahan dan 93 penghapusan
  1. 129 93
      Modules/Camera/Http/Controllers/Api/CameraApiController.php

+ 129 - 93
Modules/Camera/Http/Controllers/Api/CameraApiController.php

@@ -2884,7 +2884,7 @@ class CameraApiController extends BaseController
         if (!isset($params['area_id'])) {
             return self::errorResponse(ApiEnum::STATUS_CODE_EMPTY);
         }
- 
+
         $coal_washery_id_list = DB::connection('mysql_fwe10')->table('uf_xx_coal_washery')->where('area_id',$params['area_id'])->where('is_delete',0)->pluck('id');
         $result = [];
         $start_date = $params['start_date'];
@@ -2907,113 +2907,149 @@ class CameraApiController extends BaseController
     //导出总表
     public function export1(Request $request){
         $params = $request->all();
-        $result = [];
-        $classes = ['早班','中班','夜班'];
-        $risk_level = ['高','中','低'];
-        $risk_desc = ['高风险','中风险','低风险'];
-
         if(isset($params['date'])){
             $date = $params['date'];
         }else{
             $date = date('Y-m-d');
         }
 
-        $result['num'] = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time', $date)->where('is_delete',0)->count();
-
-        $result['gao'] = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time', $date)->where('risk_level',0)->where('is_delete',0)->count();
-        $result['zhong'] = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time', $date)->where('risk_level',1)->where('is_delete',0)->count();
-        $result['di'] = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time', $date)->where('risk_level',2)->where('is_delete',0)->count();
-        $result['ziying'] = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')
-            ->leftJoin('uf_xx_coal_washery', 'uf_xx_risk_assignment.coal_washery_id', '=', 'uf_xx_coal_washery.id')
-            ->whereDate('uf_xx_risk_assignment.create_time', $date)
-            ->where('uf_xx_coal_washery.obj_type', 0)
-            ->where('uf_xx_risk_assignment.IS_DELETE', 0)
-            ->count();
-        $result['waiwei'] = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')
-            ->leftJoin('uf_xx_coal_washery', 'uf_xx_risk_assignment.coal_washery_id', '=', 'uf_xx_coal_washery.id')
-            ->whereDate('uf_xx_risk_assignment.create_time', $date)
-            ->where('uf_xx_coal_washery.obj_type', 1)
-            ->where('uf_xx_risk_assignment.IS_DELETE', 0)
-            ->count();
-
-        $list = [];
+        $classes = ['早班','中班','夜班'];
+        $risk_desc = ['高风险','中风险','低风险'];
+        // 风险类型
+        $risk_type = DB::connection('mysql_fwe10')->table('field_option')->where('field_id', '1055270106096394246')->get();
+        $risk_type_dict = [];
+        foreach ($risk_type as $key=>$value) {
+            $risk_type_key = $value->value_key;
+            $risk_type_name = $value->NAME;
+            $risk_type_dict[$risk_type_key] = $risk_type_name;
+        }
+
+        // 风险数据
+        $risk_list = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time', $date)->where('is_delete',0)->get();
+        // 洗煤厂数据
+        $coal_washery_list = DB::connection('mysql_fwe10')->table('uf_xx_coal_washery')->where('is_delete',0)->orderBy('sort')->get();
+        $col_washery_dict = [];
+        foreach ($coal_washery_list as $key=>$value) {
+            $col_washery_dict[$value->ID] = $value;
+        }
+
+        $res = [
+            "num"       => 0,
+            "gao"       => 0,
+            "zhong"     => 0,
+            "di"        => 0,
+            "ziying"    => 0,
+            "waiwei"    => 0,
+            "risk_info" => "",
+            "table_list" => [],
+        ];
+        $risk_zhong_con = [];
+        $coal_washery_risk_list = [];
+
+        foreach ($risk_list as $key=>$value) {
+            // 风险数量统计
+            $risk_level = $value->risk_level;
+            $risk_type = $risk_type_dict[$value->risk_type] ?? 2;
+            if($risk_level == 0) {
+                $res['gao']++;
+            } else if($risk_level == 1) {
+                $res['zhong']++;
+                if (!isset($risk_zhong_con[$risk_type])) {
+                    $risk_zhong_con[$risk_type] = 1;
+                } else {
+                    $risk_zhong_con[$risk_type] ++;
+                };
+            } else {
+                $res['di']++;
+            }
+
+            // 洗煤厂类型统计
+            $col_washery_id = $value->coal_washery_id;
+            $col_washery_type = $col_washery_dict[$col_washery_id]->obj_type;
+            if($col_washery_type == 0) {
+                $res['ziying']++;
+            } else if ($col_washery_type == 1) {
+                $res['waiwei']++;
+            }
+            // 煤矿风险列表
+            $coal_washery_risk_list[$col_washery_id][] = $value;
+        }
+
+        $res['num'] = count($risk_list);
+
+        $coal_list = [];
         $index = 0;
-
-        $coal_list = DB::connection('mysql_fwe10')->table('uf_xx_coal_washery')->where('is_delete',0)->orderBy('sort')->get();
-
-        if(count($coal_list) > 0){
-            for($i=0;$i<count($coal_list);$i++){
-                $risk_list = DB::connection('mysql_fwe10')->table('uf_xx_risk_assignment')->whereDate('create_time', $date)->where('IS_DELETE', 0)->where('coal_washery_id',$coal_list[$i]->ID)->orderBy('create_time')->get();
-                if(count($risk_list) > 0){
-                    $index++;
-                    $people = 0;//计划人数
-                    $gao = 0;
-                    $zhong = 0;
-                    $di = 0;
-                    $content = '';//工作内容
-                    $place = '';//作业地点
-                    $leader = '';//负责人
-                    $reviewer = [];//审核人
-
-                    for($j=0;$j<count($risk_list);$j++){
-                        $people = $people + $risk_list[$j]->work_num;
-
-                        if($risk_list[$j]->risk_level == 0){
-                            $gao = $gao + 1;
-                        }
-                        if($risk_list[$j]->risk_level == 1){
-                            $zhong = $zhong + 1;
-                        }
-                        if($risk_list[$j]->risk_level == 2){
-                            $di = $di + 1;
-                        }
-
-                        $content = $content . ($j+1) . '.' . $risk_list[$j]->risk_name.'('.$risk_desc[$risk_list[$j]->risk_level].');';
-
-                        $place = $place . ($j+1) . '.' . $risk_list[$j]->risk_location.';';
-
-                        $leader = $leader . ($j+1) . '.' . $risk_list[$j]->work_people.';';
-
-                        if($risk_list[$j]->shr != null){
-                            $reviewer[] = $risk_list[$j]->shr;
-                        }
+        foreach ($col_washery_dict as $key => $value) {
+            $id = $value->ID;
+            if (isset($coal_washery_risk_list[$id])) {
+                $index++;
+                $people = 0;//计划人数
+                $gao = 0;
+                $zhong = 0;
+                $di = 0;
+                $content = '';//工作内容
+                $place = '';//作业地点
+                $leader = '';//负责人
+                $reviewer = [];//审核人
+                $coal_washery_risk_info_arr = $coal_washery_risk_list[$id];
+
+                $risk_index = 0;
+                foreach ($coal_washery_risk_info_arr as $k => $v) {
+                    $people += $v->work_num;
+                    if ($v->risk_level == 0) {
+                        $gao++;
+                    } else if ($v->risk_level == 1) {
+                        $zhong++;
+                    } else {
+                        $di++;
                     }
 
-                    $reviewer = array_unique($reviewer);
-                    $reviewer = implode(',',$reviewer);
+                    $content .= ++$risk_index.".".$v->risk_name.'('.$risk_desc[$v->risk_level].');';
+                    $place .= $risk_index.".".$v->risk_location;
+                    $leader .= $risk_index.".".$v->work_people;
 
-                    $level_total = '';
-                    if($gao > 0){
-                        $level_total = $level_total . '高风险'.$gao.'项,';
-                    }
-                    if($zhong > 0){
-                        $level_total = $level_total . '中风险'.$zhong.'项,';
-                    }
-                    if($di > 0){
-                        $level_total = $level_total . '低风险'.$di.'项';
+                    $reviewer = array_unique($reviewer);
+                    if (isset($v->shr) && !empty($v->shr)) {
+                        $reviewer[] = $v->shr;
                     }
-                    $level_total =  rtrim($level_total, ",");
-
-                    array_push($list,[
-                        'index'        => $index,
-                        'unit'         => $risk_list[0]->unit,
-                        'coal_washery' => $coal_list[$i]->title,
-                        'classes'      => $classes[$risk_list[0]->classes],
-                        'work_num'     => $people,
-                        'level'        => $level_total,
-                        'content'      => $content,
-                        'place'        => $place,
-                        'leader'       => $leader,
-                        'risk_describe'=> $risk_list[0]->risk_describe,
-                        'reviewer'     => $reviewer
-                    ]);
                 }
+                $level_total = '';
+                if ($gao > 0) $level_total .= '高风险'.$gao.'项 ';
+                if ($zhong > 0) $level_total .= '中风险'.$zhong.'项 ';
+                if ($di > 0) $level_total .= '低风险'.$di.'项 ';
+
+                $coal_list[] = [
+                    'index' => $index,
+                    'unit' => $v->unit,
+                    'coal_washery' => $value->title,
+                    'classes' => $classes[$v->classes],
+                    'work_num' => $people,
+                    'level' => $level_total,
+                    'content' => $content,
+                    'place' => $place,
+                    'leader' => $leader,
+                    'risk_dexcribe' => $v->risk_describe,
+                    'reviewer' => implode(',', $reviewer),
+                    'id' => $value->ID,
+                ];
+            }
+        }
+        $res['table_list'] = $coal_list;
+
+        if ($res['zhong'] > 0) {
+            $risk_zhong_info = '(其中:';
+            foreach ($risk_zhong_con as $key => $value) {
+                $risk_zhong_info .= $key.$value.'项,';
             }
+            $risk_zhong_info = substr($risk_zhong_info, 0, -3);
+            $risk_zhong_info .= ');';
+        } else {
+            $risk_zhong_info = ";";
         }
 
-        $result['table_list'] = $list;
+        $res['risk_info'] = "总作业项:".$res['num']."项;高风险:".$res['gao']."项;中风险:".$res['zhong']."项".$risk_zhong_info."低风险:".$res['di']."项。";
 
-        return $result;
+        return $res;
     }
 
     //导出分类表
@@ -3417,4 +3453,4 @@ class CameraApiController extends BaseController
 
         return $this->success($result);
     }
-}
+}