Browse Source

中央水泵接口

秦锐 3 năm trước cách đây
mục cha
commit
a73b8a6c6b

+ 158 - 58
Modules/OpcData/Http/Controllers/Api/OpcDataController.php

@@ -11,6 +11,16 @@ use Modules\OpcData\Entities\OpcDataDict;
 
 
 class OpcDataController extends Controller
 class OpcDataController extends Controller
 {
 {
+    protected $opcDB;
+    // private $opcDictArr = array();
+    protected $opcConnectName   = 'mysql_opc_jinjiaqu';
+    // private $dictTableName      = 'tb_fan_dict_list';
+    // private $dataTableName      = 'equipment';
+    
+    public function __construct() {
+        $this->opcDB =  DB::connection($this->opcConnectName);
+    }
+
     /**
     /**
      * Display a listing of the resource.
      * Display a listing of the resource.
      * @return Renderable
      * @return Renderable
@@ -80,77 +90,167 @@ class OpcDataController extends Controller
         //
         //
     }
     }
 
 
-    private $opcDictArr = array();
-    private $dictTableName = 'tb_fan_dict_list';
-    private $dataTableName = 'equipment';
-
     public function getData(Request $request)
     public function getData(Request $request)
     {
     {
         $getDataType = $request->system_type;   // 获取需要的数据
         $getDataType = $request->system_type;   // 获取需要的数据
         $dataArr = array();                     // 返回数据数组
         $dataArr = array();                     // 返回数据数组
-        $db = DB::connection('mysql_opc_jinjiaqu');
+        $result;
+        if ($getDataType == 'ventilation_zb'){
+            // 中部风机
+            $groupId = 1;
+            $result = $this->getFanData($groupId);
+        } else if ($getDataType == 'ventilation_bb') {
+            // 北部风机
+            $groupId = 2;
+            $result = $this->getFanData($groupId);
+        } else if ($getDataType == 'pump_zy') {
+            // 水泵风机
+            $groupId = 3;
+            $result = $this->getPumpData($groupId);
+        } else {
+            return;
+        }
+        return response()->json($result);
+    }
+
+    // 水泵
+    public function getFanData($groupId) {
+
+        $sqlStr = "
+        select t1.fan_type_id,
+                t1.fan_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
+        from equipment t
+        join tb_fan_dict_list t1 on t.selItem = t1.selItem
+        where t1.group_id = ".$groupId."
+        and t1.is_show = 1
+        order by t1.fan_type_id, t1.row_number, t1.device_num
+        ";
         
         
-        if ($getDataType == 'ventilation_zb' or $getDataType == 'ventilation_bb' ) {
-            
-            $groupId = 1;    // 设备分组ID
-            if ($getDataType == 'ventilation_zb'){
-                $groupId = 1;
-            } else if ($getDataType == 'ventilation_bb') {
-                $groupId = 2;
+        $dbResult = $this->opcDB->select($sqlStr);
+        // dd($dbResult);
+        foreach ($dbResult as $key => $val) {
+            $fanNum     = $val->fan_type_id - 1;        // 风机号
+            $label      = $val->device_name;            // 设备名
+            $devVal     = $val->val;                    // 数值
+            $jsonKey   = $val->json_key;               // json键值
+            $unit       = $val->unit;                   // 单位
+            $dataArr[$fanNum]['title'] = $val->fan_type_name; // 风机名
+            $valArr = [
+                'label' => $label,      // 标题
+                'unit'  => $unit        // 单位
+            ];
+            // 状态与value
+            if($jsonKey == 'state_list') {
+                $valArr['state'] = $devVal;
             } else {
             } else {
-                return;
+                $valArr['value'] = $devVal;
             }
             }
-
-            $sqlStr = "
-            select t1.fan_type_id,
-                    t1.fan_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
-            from equipment t
-            join tb_fan_dict_list t1 on t.selItem = t1.selItem
-            where t1.group_id = ".$groupId."
-            and t1.is_show = 1
-            order by t1.fan_type_id, t1.row_number, t1.device_num
-            ";
+            // 根据风量判断风机开关
+            if($label == '风量') {
+                if ($devVal <= 0 ) {
+                    $dataArr[$fanNum]['state'] = 2;
+                } else {
+                    $dataArr[$fanNum]['state'] = 1;
+                }
+            }
+            $dataArr[$fanNum][$jsonKey][] = $valArr;
             
             
-            $dbResult = $db->select($sqlStr);
-            foreach ($dbResult as $key => $val) {
-                $fanNum     = $val->fan_type_id - 1;        // 风机号
-                $label      = $val->device_name;            // 设备名
-                $devVal     = $val->val;                    // 数值
-                $jsonKey   = $val->json_key;               // json键值
-                $unit       = $val->unit;                   // 单位
-                $dataArr[$fanNum]['title'] = $val->fan_type_name; // 风机名
+        }
+        return $dataArr;
+    }
+
+
+    public function getPumpData($groupId) {
+
+        $sqlStr = "
+        select t1.fan_type_id,
+                t1.fan_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
+        from equipment t
+        join tb_fan_dict_list t1 on t.selItem = t1.selItem
+        where t1.group_id = ".$groupId."
+        and t1.is_show = 1
+        order by t1.fan_type_id, t1.row_number, t1.device_num
+        ";
+        
+        $dbResult = $this->opcDB->select($sqlStr);
+        $timeArr = array();     // 用于拼接时分秒
+        $timeJsonKey;           // 记录time字段key名
+        foreach ($dbResult as $key => $val) {
+            $fanName    = $val->fan_type_name;          // 泵名
+            $rowNumber  = $val->row_number;             // 排序
+            $jsonKey    = $val->json_key;               // json键值
+            $label      = $val->device_name;            // 设备名
+            $devNum     = $val->fan_type_id - 1;        // 设备号
+            $unit       = $val->unit;                   // 单位
+            $devVal     = $val->val;                    // 数值
+
+            if ($rowNumber <= 4) {
+
                 $valArr = [
                 $valArr = [
                     'label' => $label,      // 标题
                     'label' => $label,      // 标题
+                    'value' => $devVal,     // 值
                     'unit'  => $unit        // 单位
                     '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;
-                
+                $dataArr[$jsonKey][] = $valArr;
+
+            } else if ($rowNumber == 5) {
+
+                $valArr = [
+                    'label' => $label,      // 标题
+                    'state' => $devVal      // 值
+                ];
+                $dataArr[$jsonKey][] = $valArr;
+
+            } else if ($rowNumber == 10 or $rowNumber == 11) {
+
+                $timeArr[$label][$devNum][$unit] = $devVal;
+                $timeJsonKey = $jsonKey;
+
+            } else if ($rowNumber > 5) {
+
+                $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++) {
+                $timeFormatStr = $value[$i]['HH'].'时'.$value[$i]['MM'].'分'.$value[$i]['SS'].'秒';
+                $valArr = [
+                    'label' => $key,                // 标题
+                    'value' => $timeFormatStr,      // 值
+                    'unit'  => null                 // 单位
+                ];
+                $dataArr['water_pump'][$i][$timeJsonKey][] = $valArr;
             }
             }
         }
         }
-        return response()->json($dataArr);
+        return $dataArr;
     }
     }
 }
 }