| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- <?php
- namespace Modules\OpcData\Http\Controllers\Api;
- use Illuminate\Contracts\Support\Renderable;
- use Illuminate\Http\Request;
- use Illuminate\Http\Response;
- use Illuminate\Routing\Controller;
- use Illuminate\Support\Facades\DB;
- use Modules\OpcData\Entities\OpcDataDict;
- class OpcDataController extends Controller
- {
- protected $opcConf = [
- 'ventilation_zb' => 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, // 集中巷
- ],
- ];
-
- public function getData(Request $request)
- {
- $getDataType = $request->system_type; // 获取需要的数据
- $getMineCode = $request->mine_code; // 矿分类
- $dataArr = array(); // 返回数据数组
- $opcConnectName = 'mysql_opc_'.$getMineCode;
- $opcDB = DB::connection($opcConnectName);
-
- if (isset($this->localConf[$getMineCode][$getDataType])) {
- $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
- ";
- $dbResult = $opcDB->select($sqlStr);
- // echo($sqlStr);
- switch($getDataType) {
- case 'compressed_air':
- // 压风
- $result = $this->getCompressedAirData($dbResult);
- break;
- case 'nitrogen':
- // 制氮
- $result = $this->getNitrogenData($dbResult);
- 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;
- }
- if (isset($result)) {
- return response()->json($result);
- }
- }
- return;
- }
- // 风机
- 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;
- }
- }
- return $dataArr;
- }
- // 压风
- public function getCompressedAirData($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; // 数值
- // $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') {
- $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;
- // 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; // 设备号
- $devNum = $val->device_num - 1; // 设备号
- $unit = $val->unit; // 单位
- $devVal = $val->val; // 数值
- $group_name = $val->group_name; // 设备名
- 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) {
-
- $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; // 数值
- if ($jsonKey == 'state') {
- $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;
- }
- }
|