1, 'ventilation_bb' => 2, 'pump_zy' => 3, 'pump_690' => 4, 'compressed_air' => 5, 'belt_13' => 6, 'hoist' => 7 ]; protected $localConf = [ 'jinjiaqu' => [ 'ventilation_zb' => 1, // 中部通风 'ventilation_bb' => 2, // 北部通风 'pump_zy' => 3, // 中央水泵房 'pump_690' => 4, // 690水泵 'compressed_air' => 5, // 空压机 'belt_13' => 6, // 13采区运输机 'hoist' => 7, // 中部副立井提升机 'hoist_1' => 8, // 13采区提升机 'hoist_2' => 9, // 北部副斜井 'belt_2' => 10, // 主斜井胶带运输机 'boiler' => 11, // 锅炉烟气 'mancar' => 12, // 13采区架空人车 ], 'shicaocun' => [ 'fan_1' => 1, // 1号回风(主通风) 'fan_2' => 2, // 2号回风 'pump_1' => 3, // 主泵房(900) 'pump_2' => 4, // 715水泵 'pump_3' => 5, // 630水泵 'compressed_air' => 6, // 空压 'nitrogen' => 7, // 制氮 'belt_1' => 8, // 22采区 'belt_2' => 9, // 西翼巷 'belt_3' => 10, // 集中巷 ], 'renjiazhuang' => [ 'fan_1' => 1, // 主通风 'belt_1' => 2, // 主井皮带 'compressed_air' => 3, // 压风 'pump_1' => 5, // 850水泵 'pump_2' => 6, // 650水泵 'life_water_1' => 7, // 矿区生活水 'life_water_2' => 8, // 副立井生活水 'hoist' => 9, // 副立井提升机 ], 'qingshuiying' => [ 'fan_1' => 1, // 主通风 'nitrogen' => 2, // 制氮 'compressed_air' => 3, // 压风 'pump_1' => 4, // 主泵房(768) 'pump_2' => 5, // 11采区水泵房 'compressed_air_1' => 6, // 副立井压风 'belt_1' => 7, // 主运输1号皮带 ], ]; public function getData(Request $request) { $getDataType = isset($request->system_type) ? $request->system_type : null; // 获取需要的数据 $getMineCode = isset($request->mine_code) ? $request->mine_code : null; // 矿分类 $dataArr = array(); // 返回数据数组 if (isset($this->localConf[$getMineCode][$getDataType])) { $opcConnectName = 'mysql_opc_'.$getMineCode; $groupId = $this->localConf[$getMineCode][$getDataType]; $sqlStr = " select t1.dev_type_id, t1.dev_type_name, t1.device_num, t1.device_name, case t.val when 'True' then 1 when 'False' then 2 else t.val end val, t1.json_key, t1.row_number, t1.unit, t1.group_name from equipment t join tb_dev_dict_list t1 on t.selItem = t1.selItem where t1.group_id = ".$groupId." and t1.is_show = 1 order by t1.dev_type_id, t1.row_number, t1.device_num, t1.device_name "; // echo($sqlStr); try{ $opcDB = DB::connection($opcConnectName); $dbResult = $opcDB->select($sqlStr); } catch (\Exception $e) { return $this->error(-1, '数据库配置错误'); } // echo($sqlStr); switch($getDataType) { case 'compressed_air': case 'compressed_air_1': // 压风 $result = $this->getCompressedAirData($dbResult, $getMineCode); break; case 'nitrogen': // 制氮 $result = $this->getNitrogenData($dbResult, $getMineCode); break; case 'belt_13': case 'belt_1': case 'belt_2': case 'belt_3': // 运输机系统 $result = $this->getBeltData($dbResult); break; case 'hoist': case 'hoist_1': case 'hoist_2': // 提升机 $result = $this->getHoistData($dbResult); break; // 金家渠风机 case 'ventilation_zb': case 'ventilation_bb': // 中部风机、北部风机 case 'fan_1': case 'fan_2': // 通用风机1、2 $result = $this->getFanData($dbResult); break; // 金家渠水泵 case 'pump_zy': case 'pump_690': // 中央水泵、609水泵 case 'pump_1': case 'pump_2': case 'pump_3': // 通用水泵1、2、3 $result = $this->getPumpData($dbResult); break; case 'mancar': // 人车 $result = $this->getMancarData($dbResult); break; case 'boiler': // 锅炉 $result = $this->getBoilerData($dbResult); break; case 'life_water_1'; case 'life_water_2'; $result = $this->getLieWaterData($dbResult); break; } if (isset($result)) { return response()->json($result); } } return $this->error(-1, '未找到数据');; } // 风机 public function getFanData($dbResult) { $dataArr = array(); foreach ($dbResult as $key => $val) { $fanNum = $val->dev_type_id - 1; // 风机号 $label = $val->device_name; // 设备名 $devVal = $val->val; // 数值 $jsonKey = $val->json_key; // json键值 $unit = $val->unit; // 单位 $dataArr[$fanNum]['title'] = $val->dev_type_name; // 风机名 $valArr = [ 'label' => $label, // 标题 'unit' => $unit // 单位 ]; // 状态与value if($jsonKey == 'state_list') { $valArr['state'] = $devVal; } else { $valArr['value'] = $devVal; } // 根据风量判断风机开关 if($label == '风量') { if ($devVal <= 0 ) { $dataArr[$fanNum]['state'] = 2; } else { $dataArr[$fanNum]['state'] = 1; } } $dataArr[$fanNum][$jsonKey][] = $valArr; } return $dataArr; } // 水泵 public function getPumpData($dbResult) { $dataArr = array(); $timeArr = array(); // 用于拼接时分秒 $timeJsonKey; // 记录time字段key名 // dd($dbResult); foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devNum = $val->dev_type_id - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 if ($jsonKey == 'common') { // 公共数据 $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][] = $valArr; } else if ($jsonKey == 'water_pump') { // 水泵、状态 $dataArr[$jsonKey][$devNum]['label'] = $devName; if (isset($dataArr[$jsonKey][$devNum]['state'])) { $state = $dataArr[$jsonKey][$devNum]['state']; $dataArr[$jsonKey][$devNum]['state'] = max($devVal, $state); } else { $dataArr[$jsonKey][$devNum]['state'] = $devVal; } // dd($dataArr); } else if ($jsonKey == 'parameter' && ($unit == 'DD' || $unit == 'HH' || $unit == 'MM' || $unit == 'SS')) { // 处理时长 $timeArr[$label][$devNum][$unit] = $devVal; $timeJsonKey = $jsonKey; } else { // 水泵参数 $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['water_pump'][$devNum][$jsonKey][] = $valArr; } } foreach ($timeArr as $key => $value) { for ($i=0; $i < count($value); $i++) { $day = isset($value[$i]['DD']) ? isset($value[$i]['DD']).'天' : ''; $hour = isset($value[$i]['HH']) ? isset($value[$i]['HH']).'时' : ''; $minute = isset($value[$i]['MM']) ? isset($value[$i]['MM']).'分' : ''; $second = isset($value[$i]['SS']) ? isset($value[$i]['SS']).'秒' : ''; $timeFormatStr = $day.$hour.$minute.$second; // $timeFormatStr = isset($value[$i]['DD']).'天'.$value[$i]['HH'].'时'.$value[$i]['MM'].'分'.isset($value[$i]['SS']).'秒'; $valArr = [ 'label' => $key, // 标题 'value' => $timeFormatStr, // 值 'unit' => '' // 单位 ]; $dataArr['water_pump'][$i][$timeJsonKey][] = $valArr; } } // dd($timeArr); return $dataArr; } // 压风 public function getCompressedAirData($dbResult, $getMineCode) { $dataArr = array(); $timeArr = array(); // 用于拼接时分秒 $timeJsonKey; // 记录time字段key名 // dd($dbResult); foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devNum = $val->dev_type_id - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 // $valArr[$jsonKey] = $devVal; if ($jsonKey == 'state') { $dataArr['compressed_air'][$devNum]['name'] = $devName; $dataArr['compressed_air'][$devNum]['state'] = $devVal; } else if ($jsonKey == 'run_parameter') { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 'unit' => $unit // 单位 // ,'json' => $jsonKey ]; $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr; } else if ($jsonKey == 'common') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][] = $valArr; } else if ($jsonKey == 'drain_value_state') { // 开关状态单独处理 $dataArr['compressed_air'][$devNum][$jsonKey] = $devVal; if (array_key_exists($jsonKey, $dataArr['compressed_air'][$devNum])) { $state = $dataArr['compressed_air'][$devNum][$jsonKey]; $dataArr['compressed_air'][$devNum][$jsonKey] = max($devVal, $state); } else { $dataArr['compressed_air'][$devNum][$jsonKey] = $devVal; } } else if ($jsonKey == 'compressed_air') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr; } else if ($jsonKey == 'warn_state') { if ($getMineCode == 'qingshuiying' && mb_substr($label, -1) == '阀') { $valArr = [ 'label' => $label, // 标题 'state' => $devVal > 15 ? 1 : 2, // 值 'unit' => $unit // 单位 ]; $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr; } else { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['compressed_air'][$devNum][$jsonKey][] = $valArr; } } } if (isset($dataArr)) { return $dataArr; } } public function getBeltData($dbResult) { // dd($dbResult); $dataArr = array(); $valDict = array(); foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devTypeNum = $val->dev_type_id - 1; // 设备号 $devNum = $val->device_num - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 // $valArr[$jsonKey] = $devVal; if ($jsonKey == 'common') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][] = $valArr; } else if ($jsonKey == 'state') { $dataArr['state'] = $devVal; $dataArr['name'] = $label; } else if ($jsonKey == 'electric_parameter' or $jsonKey == 'converter_parameter') { $valArr = [ // 'devNum' => $devNum, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 // ,'label' => $label // 单位 ]; $valDict[$jsonKey][$label][] = $valArr; } else { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 // 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][] = $valArr; } } foreach ($valDict as $key => $val) { $i = 0; foreach ($val as $valKey => $valVal) { $dataArr[$key][$i]['label'] = $valKey; $dataArr[$key][$i]['value_list'] = $valVal; $i++; } } // dd($dataArr); return $dataArr; } public function getHoistData($dbResult) { $dataArr = array(); $valDict = array(); $state = 2; $dataArr['hoist'][0]['state'] = $state; // dd($dbResult); foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devTypeNum = $val->dev_type_id-1; // 设备号 $devNum = $val->device_num - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 $group_name = $val->group_name; // 设备名 $valArr = array(); if ($jsonKey == 'state') { $dataArr['hoist'][0]['state'] = $state; } else if ($jsonKey == 'position') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['common'][$jsonKey][] = $valArr; } else if ($jsonKey == 'direction') { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 ]; $dataArr['common'][$jsonKey][] = $valArr; if ($devVal == 1) { $state = 1; } } else if ($jsonKey == 'run_parameter') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['hoist'][$devTypeNum][$jsonKey][] = $valArr; $dataArr['hoist'][$devTypeNum]['name'] = $group_name; // $dataArr['common']['direction'] } else { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['hoist'][$devTypeNum][$jsonKey][] = $valArr; } } return $dataArr; } // 制氮 public function getNitrogenData($dbResult, $getMineCode) { $dataArr = array(); $valDict = array(); $state = 2; // dd($dbResult); foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 设备名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devTypeNum = $val->dev_type_id - 1; // 设备号 $devNum = $val->device_num - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 if ($jsonKey == 'state') { if($getMineCode == 'qingshuiying') { if(isset($dataArr[$devTypeNum]['state'])) { $dataArr[$devTypeNum]['state'] = min($dataArr[$devTypeNum]['state'], $devVal); $dataArr[$devTypeNum]['name'] = $devName; } else { $dataArr[$devTypeNum]['state'] = 2; $dataArr[$devTypeNum]['name'] = $devName; } } else { $dataArr[$devNum]['state'] = $devVal; $dataArr[$devNum]['name'] = $devName; } } else if ($jsonKey == 'run_parameter' || $jsonKey == 'cold_dryer') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$devNum][$jsonKey][] = $valArr; } else if ($jsonKey == 'tap_state') { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 ]; $dataArr[$devNum][$jsonKey][] = $valArr; } } return $dataArr; } // 人车 public function getMancarData($dbResult) { $dataArr = array(); $valDict = array(); $state = 2; foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devTypeNum = $val->dev_type_id; // 设备号 $devNum = $val->device_num - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 $group_name = $val->group_name; // 设备名 if ($jsonKey == 'common') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][] = $valArr; $dataArr['hoist']['name'] = $group_name; $dataArr['hoist']['state'] = 1; } if ($jsonKey == 'run_state' || $jsonKey == 'protect_state') { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 ]; $dataArr['hoist'][$jsonKey][] = $valArr; } else { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr['hoist'][$jsonKey][] = $valArr; } } return $dataArr; } public function getBoilerData($dbResult) { $dataArr = array(); $valDict = array(); $state = 2; foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devTypeNum = $val->dev_type_id; // 设备号 $devNum = $val->device_num - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 $group_name = $val->group_name; // 设备名 $dataArr['name'] = $group_name; $dataArr['state'] = 1; if ($jsonKey == 'parameter') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][$rowNumber]['name'] = $devName; $dataArr[$jsonKey][$rowNumber]['data'][] = $valArr; } } return $dataArr; } // 矿区生活水 public function getLieWaterData($dbResult) { $dataArr = array(); $valDict = array(); $state = 2; // dd($dbResult); foreach ($dbResult as $key => $val) { $devName = $val->dev_type_name; // 泵名 $rowNumber = $val->row_number; // 排序 $jsonKey = $val->json_key; // json键值 $label = $val->device_name; // 设备名 $devTypeNum = $val->dev_type_id - 1; // 设备号 $devNum = $val->device_num - 1; // 设备号 $unit = $val->unit; // 单位 $devVal = $val->val; // 数值 $group_name = $val->group_name; // 设备名 $valArr = array(); if ($jsonKey == 'trans_box') { $dataArr['cabinet'][$devTypeNum]['title'] = $devName; $dataArr['cabinet'][$devTypeNum]['data'][$devNum]['name'] = ($devNum + 1).'号供水泵'; $valArr = [ 'name' => $label, // 标题 'state' => $devVal, // 值 ]; $dataArr['cabinet'][$devTypeNum]['data'][$devNum]['state_list'][] = $valArr; } else if ($jsonKey == 'trans_box_state') { $dataArr['cabinet'][$devTypeNum]['state'] = $devVal; } else if ($jsonKey == 'state_list') { $valArr = [ 'label' => $label, // 标题 'state' => $devVal, // 值 ]; $dataArr[$jsonKey][] = $valArr; } else if ($jsonKey == 'parameter') { $valArr = [ 'label' => $label, // 标题 'value' => $devVal, // 值 'unit' => $unit // 单位 ]; $dataArr[$jsonKey][] = $valArr; } } return $dataArr; } }