Shjdata0511.php 5.9 KB
<?php
/**
 * Created by PhpStorm.
 * User: Shjdata0511
 * 山海经数据接口
 * @auth pcl
 * Date: 2022/5/11
 * Time: 10:29
 */

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;

/**
 * 验证接口
 */
class Shjdata0511 extends Api
{
    protected $noNeedLogin = '*';
    protected $layout = '';
    protected $error = null;
    protected $rlist;

    public function _initialize()
    {
        parent::_initialize();
        $this->rlist = '(4,6,9)';
    }

    /**
     *预警统计
     */
    public function warningCt()
    {
        $typecat = $this->request->param('type', 1);
        //入侵
        $data = [];
        $data2 = [];
        $data3 = [];
        $data4 = [];
        $type1 = Db::name('reservoir_hkws_alarm_monitoring')
            ->where('reservoir_list_id in' . $this->rlist . '')
            ->where(['status' => 0])
            ->count();
        $data['value'] = $type1;
        //渗压
        $type2 = Db::name('reservoir_warning_isotonic')
            ->where('reservoir_id in' . $this->rlist . '')
            ->count();
        $data2['value'] = $type2;
        //水位
        $type3 = Db::name('reservoir_warning_waterlevel')
            ->where('reservoir_id in' . $this->rlist . '')
            ->count();
        $data3['value'] = $type3;
        //降雨
        $type4 = Db::name('reservoir_warning_rainfall')
            ->where('reservoir_id in' . $this->rlist . '')
            ->count();
        $data4['value'] = $type4;
        if ($typecat == 1) {
            return json_encode($data);
        }
        if ($typecat == 2) {
            return json_encode($data2);
        }
        if ($typecat == 3) {
            return json_encode($data3);
        }
        if ($typecat == 4) {
            return json_encode($data4);
        }
    }

    /**
     * 入侵统计
     *
     */
    public function hkwaringList()
    {
        //今天
        $nowday = time();
        //获得前7天的日期列表
        $daylist = $this->get_weeks($nowday);
        $daylist = array_values($daylist);
        krsort($daylist);
        $data = [];
        foreach ($daylist as $k => $v) {
            //时间处理
            $cunchu_data = [];
            $starttime = strtotime(date('Y-m-d 00:00:00', strtotime($v)));
            $endtime = strtotime(date('Y-m-d 23:59:59', strtotime($v)));
            $cunchu_data[] = date('m/d', strtotime($v));
            $ctall = Db::name('reservoir_hkws_alarm_monitoring')
                ->where('reservoir_list_id in' . $this->rlist . '')
                ->where('createtime', 'between time', [$starttime, $endtime])
                ->where(['status' => 0])
                ->count();
            $cunchu_data[] = $ctall;
            $data[] = $cunchu_data;
        }
        return json_encode($data);
    }

    /**
     *水库位移预警统计
     */
    public function rwarCt()
    {
        $list = [4, 6, 9];
        $data = [];
        foreach ($list as $v) {
            $data2 = [];
            $rinfo = Db::name('reservoir_list')
                ->where(['id' => $v])
                ->field('id,name')
                ->find();
            $data2[] = $rinfo['name'];
            //统计位移预警
            $ctall = Db::name('reservoir_warning_displacement')
                ->where(['reservoir_id' => $v])
                ->count();
            $data2[] = $ctall;
            $data[] = $data2;
        }
        return json_encode($data);
    }

    /***
     * 右2区,渗压监测
     *
     */
    public function damisotList()
    {
        $list = [];
        $row = Db::name('reservoir_dam_isotonic')
            ->alias('d')
            ->join('reservoir_equipment q', 'd.equipment_id=q.deviceId')
            ->join('reservoir_list r', 'd.reservoir_id=r.id')
            ->where('d.reservoir_id in' . $this->rlist . '')
            ->order('d.id', 'desc')
            ->field('d.id,r.name,d.value,d.createtime,q.name as qname')
            ->limit(216)
            ->select();
        foreach ($row as $v) {
            $data = [];
            $data[] = date('H:i', $v['createtime']);
            $data[] = $v['name'];
            $data[] = $v['qname'];
            $data[] = $v['value'];
            $list[] = $data;
        }
        return json_encode($list);
    }

    /***
     * 位移监测
     *
     */
    public function damplaceList()
    {
        $list = [4, 6, 9];
        $data = [];
        foreach ($list as $v) {
            $data2 = [];
            $rinfo = Db::name('reservoir_list')
                ->where(['id' => $v])
                ->field('id,name')
                ->find();
            $data2[] = $rinfo['name'];
            //统计位移预警
            $row = Db::name('reservoir_dam_displacement')
                ->where(['reservoir_id' => $v])
                ->order('id', 'desc')
                ->find();
            $data2[] = $row['horizontal'];
            $data2[] = $row['horizontalY'];
            $data2[] = $row['vertical'];
            $data[] = $data2;
        }
        return json_encode($data);
    }

    /***
     * 大坝类型统计
     *
     */
    public function resvCatCt()
    {
        $arr = ['小(1)型水库', '小(2)型水库', '中型水库', '大型水库'];
        $data = [];
        foreach ($arr as $v) {
            $date2 = [];
            $list = Db::name('reservoir_list')
                ->where(['reservoir_level' => $v])
                ->count();
            $date2[] = $v;
            $date2[] = $list;
            $data[] = $date2;
        }
        return json_encode($data);
    }

    /**
     * 获取最近七天所有日期
     */
    function get_weeks($time = '', $format = 'Ymd')
    {
        $time = $time != '' ? $time : time();
        //组合数据
        $date = [];
        for ($i = 1; $i <= 7; $i++) {
            $date[$i] = date($format, strtotime('+' . $i - 7 . ' days', $time));
        }
        return $date;
    }


}