Browse Source

Merge branch 'master' of http://git.jieweizhineng.com/ushio/video_system into master

任敬轩 3 months ago
parent
commit
b804a95ae0
2 changed files with 146 additions and 1 deletions
  1. 142 1
      Modules/Admin/Http/Controllers/Api/ApiController.php
  2. 4 0
      Modules/Admin/Routes/api.php

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

@@ -573,4 +573,145 @@ class ApiController extends BaseController
 
 
         return self::successResponse($result);
         return self::successResponse($result);
     }
     }
-}
+
+
+    //教育学习(洗选中的教育学习应用)
+    // 学习效果检查统计表
+    public function learningEffectCheck(Request $request)
+    {
+        $params = $request->all();
+
+        if(isset($params['start_time']) && isset($params['end_time'])){
+            $start_time = $params['start_time'];
+            $end_time = $params['end_time'];
+        }else{
+            $start_time = date('Y-m-d 00:00:00');
+            $end_time = date('Y-m-d 00:00:00', strtotime('+1 day'));
+        }
+
+        // 自评表数据
+        $evaluate_data = DB::connection('mysql_fwe10')->table('uf_xx_zpb as t')
+            ->select('t.dwmc as unitId','t.sgyy','t.sghg','t.sgcljg','t.xqjxjffcs','t.df','t1.dwmc')
+            ->leftJoin('uf_xx_gxmcdw as t1', 't.dwmc', '=', 't1.id')
+            ->whereBetween('t.create_time', [$start_time, $end_time])
+            ->where('t.is_delete',0)
+            ->where('t.delete_type',0)
+            ->get();
+
+        // 数据库查出来的数据进行处理
+        $process_data = [];
+        // 1. 提取所有单位id值
+        $tmp = [];
+        $index = 0;
+
+
+        if(count($evaluate_data) > 0){
+            for ($i = 0; $i < count($evaluate_data); $i++) {
+                $process_data[$index]['unitId'] = $evaluate_data[$i]->unitId;
+                $process_data[$index]['sgyy'] = $evaluate_data[$i]->sgyy;
+                $process_data[$index]['sghg'] = $evaluate_data[$i]->sghg;
+                $process_data[$index]['sgcljg'] = $evaluate_data[$i]->sgcljg;
+                $process_data[$index]['xqjxjffcs'] = $evaluate_data[$i]->xqjxjffcs;
+                $process_data[$index]['df'] = $evaluate_data[$i]->df;
+                $process_data[$index]['dwmc'] = $evaluate_data[$i]->dwmc;
+                $index++;
+
+                $tmp[] = $evaluate_data[$i]->unitId;
+            }
+        }
+
+
+
+        // 2. 去重并重置索引
+        $unitId_List = array_values(array_unique($tmp));
+
+        // 根据去重后的单位id给$evaluate_data中的数据分组
+        $grouped = [];
+        foreach ($process_data as $item) {
+            $unitId = $item['unitId'];
+            $grouped[$unitId][] = $item; // 按unitId值分组
+        }
+        $result = [];
+        foreach ($unitId_List as $unitIdVar) {
+            if (isset($grouped[$unitIdVar])) {
+                $var1 = $grouped[$unitIdVar]; // 按uniqueBms顺序提取分组
+                $result[] = $this->dataProcessing($var1);
+            }
+        }
+
+        // 最后结果需要有个排名
+        usort($result, function ($a, $b) {
+            return $b['pjf'] <=> $a['pjf'];
+        });
+
+        $rank = 1;
+        for ($i = 0; $i < count($result); $i++) {
+            // 对于同一个 control_num 赋予相同的排名
+            if ($i > 0 && $result[$i]['pjf'] == $result[$i - 1]['pjf']) {
+                $result[$i]['rank'] = $result[$i - 1]['rank'];  // 保持相同排名
+            } else {
+                $result[$i]['rank'] = $rank++;  // 否则递增排名
+            }
+        }
+
+        return self::successResponse($result);
+
+    }
+
+    // 对每组数据进行统计处理
+    public function dataProcessing ($data = []): array
+    {
+        // 单位名称
+        $unitName = '';
+        // 检查人次
+        $checkPeopleNum = count($data);
+        // 事故原因
+        $accidentCause = 0;
+        // 事故后果
+        $accidentConsequence = 0;
+        // 事故处理结果
+        $resultOfAccidentTreatment = 0;
+        // 吸取教训/防范措施
+        $preventiveMeasures = 0;
+        // 最高分
+        $theHighestScore = 0;
+        // 最低分
+        $theLowestScore = 100;
+        // 平均分
+        $averageScore = 0;
+
+        foreach ($data as $item) {
+            $accidentCause += $item['sgyy'];
+            $accidentConsequence += $item['sghg'];
+            $resultOfAccidentTreatment += $item['sgcljg'];
+            $preventiveMeasures += $item['xqjxjffcs'];
+            if ($theHighestScore < $item['df']) {
+                $theHighestScore = $item['df'];
+            }
+            if ($theLowestScore > $item['df']) {
+                 $theLowestScore = $item['df'];
+            }
+            $averageScore += $item['df'];
+        }
+        $unitName = reset($data)['dwmc'];
+        $accidentCause = round($accidentCause / $checkPeopleNum,2);
+        $accidentConsequence = round($accidentConsequence / $checkPeopleNum,2);
+        $resultOfAccidentTreatment = round($resultOfAccidentTreatment / $checkPeopleNum,2);
+        $preventiveMeasures = round($preventiveMeasures / $checkPeopleNum,2);
+        $averageScore = round($averageScore / $checkPeopleNum,2);
+        $res = [
+            'dwmc' => $unitName,
+            'jcrc' => $checkPeopleNum,
+            'sgyy' => $accidentCause,
+            'sghg' => $accidentConsequence,
+            'sgcljg' => $resultOfAccidentTreatment,
+            'xqjxjffcs' => $preventiveMeasures,
+            'zgf' => $theHighestScore,
+            'zdf' => $theLowestScore,
+            'pjf' => $averageScore
+        ];
+        return $res;
+
+    }
+
+}

+ 4 - 0
Modules/Admin/Routes/api.php

@@ -66,4 +66,8 @@ Route::namespace('Api')->group(function () {
 
 
     //短信发送
     //短信发送
     Route::post('sms/send_meeting_sms', 'SmsController@sendMeetingSms');
     Route::post('sms/send_meeting_sms', 'SmsController@sendMeetingSms');
+
+    //教育学习(洗选中的教育学习应用)
+    // 学习效果检查统计表
+    Route::post('report/learning_effect_check','ApiController@learningEffectCheck');
 });
 });