Browse Source

feat(ApiController):learningEffectCheck

Xu·LinPeng 3 months ago
parent
commit
e1c23c95a9
2 changed files with 113 additions and 1 deletions
  1. 109 1
      Modules/Admin/Http/Controllers/Api/ApiController.php
  2. 4 0
      Modules/Admin/Routes/api.php

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

@@ -573,4 +573,112 @@ class ApiController extends BaseController
 
         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();
+
+
+        // 1. 提取所有单位id值
+        $tmp = array_column($evaluate_data, 'unitId');
+        // 2. 去重并重置索引
+        $unitId_List = array_values(array_unique($tmp));
+
+        // 根据去重后的单位id给$evaluate_data中的数据分组
+        $grouped = [];
+        foreach ($evaluate_data as $item) {
+            $unitId = $item['unitId'];
+            $grouped[$unitId][] = $item; // 按unitId值分组
+        }
+        $var1 = [];
+        $result = [];
+        foreach ($unitId_List as $unitIdVar) {
+            if (isset($grouped[$unitIdVar])) {
+                $var1 = $grouped[$unitIdVar]; // 按uniqueBms顺序提取分组
+                $result[] += $this->dataProcessing($var1);
+            }
+        }
+
+        // 最后结果需要有个排名
+
+        return self::successResponse($result);
+
+    }
+
+    // 对每组数据进行统计处理
+    public function dataProcessing ($data = []): array
+    {
+        // 单位名称
+        $unitName = '';
+        // 检查人次
+        $checkPeopleNum = count($data);
+        // 事故原因
+        $accidentCause = 0;
+        // 事故后果
+        $accidentConsequence = 0;
+        // 事故处理结果
+        $resultOfAccidentTreatment = 0;
+        // 吸取教训/防范措施
+        $preventiveMeasures = 0;
+        // 最高分
+        $theHighestScore = 0;
+        // 最低分
+        $theLowestScore = 0;
+        // 平均分
+        $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 = $accidentCause / $checkPeopleNum;
+        $accidentConsequence = $accidentConsequence / $checkPeopleNum;
+        $resultOfAccidentTreatment = $resultOfAccidentTreatment / $checkPeopleNum;
+        $preventiveMeasures = $preventiveMeasures / $checkPeopleNum;
+        $averageScore = $averageScore / $checkPeopleNum;
+        $res = [
+            'dwmc' => $unitName,
+            'jcrc' => $checkPeopleNum,
+            'sgyy' => $accidentCause,
+            'sghg' => $accidentConsequence,
+            'sgcljg' => $resultOfAccidentTreatment,
+            'jxjxjffcs' => $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('report/learning_effect_check','ApiController@learningEffectCheck');
 });