|
@@ -573,4 +573,112 @@ 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();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 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;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|