Savadatas.php 10.0 KB
<?php

namespace app\api\controller;

use app\common\controller\Api;

use think\Db;
use think\Request;


class Savadatas extends Api
{
    protected $noNeedLogin = ['*'];

    /**
     * PHP端-接收go推过来的安全事件水锤数据接口
     *
     */
    public function eventData(Request $request)
    {
        // 获取JSON数据
        $jsonData = $request->getContent();

        // 执行 SQL 插入语句
//        $testData['names'] = '安全事件数据';
//        $testData['info'] = ($jsonData);
//        $testData['create_time'] = date('Y-m-d H:i:s');
//        Db::table('wrp_tests_data')->insert($testData);
        $jsonData = json_decode($jsonData,true)['data'];
        // 检查必要字段是否为空
        if (empty($jsonData['id']) || empty($jsonData['collectionId']) || empty($jsonData['deviceId'])) {
            // 如果必要字段为空,直接返回失败
            $this->error('数据格式有误,请重试');
        }

        // 构造查询条件
        $condition = [
            'securityId' => $jsonData['id'],
            'collectionId' => $jsonData['collectionId'],
            'deviceId' => $jsonData['deviceId'],
        ];
        // 查询是否已存在相同条件的记录
        $exist = Db::table('wrp_security_incident_data')
            ->where($condition)
            ->find();

        if ($exist) {
            // 如果记录已存在,则返回提示信息
            $this->error('记录已存在,无需重复添加');
        } else {
            // 构造要插入的数据数组
            $postData = [
                'securityId' => $jsonData['id'],
                'collectionId' => $jsonData['collectionId'],
                'type' => isset($jsonData['type']) ? $jsonData['type'] : null,
                'name' => isset($jsonData['name']) ? $jsonData['name'] : null,
                'deviceId' => $jsonData['deviceId'],
                'siteId' => isset($jsonData['siteId']) ? $jsonData['siteId'] : null,
                'startTime' => isset($jsonData['startTime']) ? $jsonData['startTime'] : null,
                'endTime' => isset($jsonData['endTime']) ? $jsonData['endTime'] : null,
                'maximum' => isset($jsonData['maximum']) ? $jsonData['maximum'] : null,
                'minimum' => isset($jsonData['minimum']) ? $jsonData['minimum'] : null,
                'maxAmplitude' => isset($jsonData['maxAmplitude']) ? $jsonData['maxAmplitude'] : null,
                'step' => isset($jsonData['step']) ? $jsonData['step'] : null,
                'originalValue' => isset($jsonData['originalValue']) ? json_encode($jsonData['originalValue']) : null
            ];

            // 执行 SQL 插入语句
            $result = Db::table('wrp_security_incident_data')->insert($postData);

            if ($result) {
                // 插入成功
                $this->success('插入成功', $postData);
            } else {
                // 插入失败
                $this->error('插入失败', $postData);
            }
        }
    }


    /**
     * PHP端-接收go推过来的空气阀状态数据
     *
     */
    public function valueStatuData(Request $request)
    {
        // 获取JSON数据
        $jsonData = $request->getContent();

        // 执行 SQL 插入语句
        $testData['names'] = '空气阀状态数据';
        $testData['info'] = ($jsonData);
        $testData['create_time'] = date('Y-m-d H:i:s');
        Db::table('wrp_tests_data')->insert($testData);
        $jsonData = json_decode($jsonData,true)['data'];
        // 检查必要字段是否为空
        if (empty($jsonData['id']) || empty($jsonData['collectionId']) || empty($jsonData['deviceId'])) {
            // 如果必要字段为空,直接返回失败
            $this->error('数据格式有误,请重试');
        }

        // 构造查询条件
        $condition = [
            'middleId' => $jsonData['id'],
            'collectionId' => $jsonData['collectionId'],
            'deviceId' => $jsonData['deviceId'],
        ];
        // 查询是否已存在相同条件的记录
        $exist = Db::table('wrp_pipes_value_statu_data')
            ->where($condition)
            ->find();

        if ($exist) {
            // 如果记录已存在,则返回提示信息
            $this->error('记录已存在,无需重复添加');
        } else {
            // 构造要插入的数据数组
            $postData = [
                'middleId' => $jsonData['id'],
                'collectionId' => $jsonData['collectionId'],
                'deviceId' => $jsonData['deviceId'],
                'type' => isset($jsonData['type']) ? $jsonData['type'] : null,
                'status' => isset($jsonData['status']) ? $jsonData['status'] : null,
                'maximum' => isset($jsonData['maximum']) ? $jsonData['maximum'] : null,
                'minimum' => isset($jsonData['minimum']) ? $jsonData['minimum'] : null,
                'startTime' => isset($jsonData['startTime']) ? $jsonData['startTime'] : null,
                'endTime' => isset($jsonData['endTime']) ? $jsonData['endTime'] : null,
                'step' => isset($jsonData['step']) ? $jsonData['step'] : null,
                'value' => isset($jsonData['value']) ? $jsonData['value'] : null,
                'extraInfo' => isset($jsonData['extraInfo']) ? $jsonData['extraInfo'] : null,
                'siteId' => isset($jsonData['siteId']) ? $jsonData['siteId'] : null,
                'name' => isset($jsonData['name']) ? $jsonData['name'] : null,
            ];
            // 执行 SQL 插入语句
            $testData['names'] = '空气阀状态数据99999';
            $testData['info'] = json_encode($postData);
            $testData['create_time'] = date('Y-m-d H:i:s');
            Db::table('wrp_tests_data')->insert($testData);
            // 执行 SQL 插入语句
            $result = Db::table('wrp_pipes_value_statu_data')->insert($postData);
            if ($result) {
                // 插入成功
                $this->success('插入成功', $postData);
            } else {
                // 插入失败
                $this->error('插入失败', $postData);
            }
        }
    }


    /**
     * PHP端-接收go推过来的告警数据
     *
     */
    public function deviceAlarmData(Request $request)
    {
        // 获取JSON数据
        $jsonData = $request->getContent();

        // 执行 SQL 插入语句
        $testData['names'] = '告警数据';
        $testData['info'] = ($jsonData);
        $testData['create_time'] = date('Y-m-d H:i:s');
        Db::table('wrp_tests_data')->insert($testData);
        $jsonData = json_decode($jsonData,true)['data'];
        // 检查必要字段是否为空
        if (empty($jsonData['id']) || empty($jsonData['itemId'])) {
            // 如果必要字段为空,直接返回失败
            $this->error('数据格式有误,请重试');
        }

        // 构造查询条件
        $condition = [
            'middleId' => $jsonData['id'],
            'itemId' => $jsonData['itemId'],
        ];
        // 查询是否已存在相同条件的记录
        $exist = Db::table('wrp_pipes_device_alarm_data')
            ->where($condition)
            ->find();

        if ($exist) {
            // 如果记录已存在,则返回提示信息
            $this->error('记录已存在,无需重复添加');
        } else {
            $deviceId = Db::table('wrp_pipes_site_device_gatherer_data')
                ->where('collectionId', '=', $jsonData['itemId'])
                ->value('deviceId');
            $deviceType = Db::table('wrp_pipes_site_device')
                ->where('deviceId', '=', $deviceId)
                ->value('deviceType');
            // 构造要插入的数据数组
            $postData = [
                'middleId' => $jsonData['id'],
                'aId' => $jsonData['aid'],
                'itemId' => $jsonData['itemId'],
                'siteId' => $jsonData['siteId'],
                'deviceId' => $deviceId,
                'deviceType' => $deviceType,
                'itemName' => isset($jsonData['itemName']) ? $jsonData['itemName'] : null,
                'netElement' => isset($jsonData['netElement']) ? $jsonData['netElement'] : null,
                'alarmType' => isset($jsonData['alarmType']) ? $jsonData['alarmType'] : null,
                'level' => isset($jsonData['level']) ? $jsonData['level'] : null,
                'alarmDetails' => isset($jsonData['alarmDetails']) ? $jsonData['alarmDetails'] : null,
                'status' => isset($jsonData['status']) ? $jsonData['status'] : null,
                'normalMonitorValue' => isset($jsonData['normalMonitorValue']) ? $jsonData['normalMonitorValue'] : null,
                'initialMonitorValue' => isset($jsonData['initialMonitorValue']) ? $jsonData['initialMonitorValue'] : null,
                'currentMonitorValue' => isset($jsonData['currentMonitorValue']) ? $jsonData['currentMonitorValue'] : null,
                'occurredTime' => isset($jsonData['occurredTime']) ? $jsonData['occurredTime'] : null,
                'recoveryTime' => isset($jsonData['recoveryTime']) ? $jsonData['recoveryTime'] : null,
                'recoveryValue' => isset($jsonData['recoveryValue']) ? $jsonData['recoveryValue'] : null,
                'startTime' => isset($jsonData['startTime']) ? $jsonData['startTime'] : null,
                'endTime' => isset($jsonData['endTime']) ? $jsonData['endTime'] : null,
                'alarmCode' => isset($jsonData['alarmCode']) ? $jsonData['alarmCode'] : null,
                'createdAt' => $jsonData['createdAt'],
                'updatedAt' => $jsonData['updatedAt'],
                'deletedAt' => $jsonData['deletedAt'],
            ];

            // 执行 SQL 插入语句
            $result = Db::table('wrp_pipes_device_alarm_data')->insert($postData);

            if ($result) {
                // 插入成功
                $this->success('插入成功', $postData);
            } else {
                // 插入失败
                $this->error('插入失败', $postData);
            }
        }
    }
}