Displacement.php 4.2 KB
<?php

namespace app\api\controller\cloudapi;

use app\admin\model\reservoir\Equipment;
use app\admin\model\reservoir\ReservoirEquipment;
use app\admin\model\reservoir\ReservoirList;
use think\Db;
use think\Loader;

/**
 * 坝体位移
 * Class Displacement
 * @package app\api\controller\cloudapi
 */
class Displacement extends Base
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    //定义验证器类
    protected $validateClass = 'app\api\validate\cloudapi\Displacement';

    /**
     * 获取位移计数据
     */
    public function query(){
        $params = $this->request->param();
        //参数验证
        $validate = Loader::validate($this->validateClass);
        if(!$validate->scene('query')->check($params)){
            $this->error($validate->getError());
        }
        $where = [
            'dd.number' => $params['device_code'],
        ];
        if (!empty($params['start_time']) && !empty($params['end_time'])){

            $where['dd.createtime'] = ['between',[$params['start_time'], $params['end_time']]];

        }elseif (!empty($params['start_time']) && empty($params['end_time'])){

            $where['dd.createtime'] = ['egt', $params['start_time']];

        }elseif (empty($params['start_time']) && !empty($params['end_time'])){

            $where['dd.createtime'] = ['elt', $params['end_time']];

        }
        $order = [
            'dd.createtime' => 'ASC'
        ];
        if (!empty($params['sort'])){
            $order['dd.createtime'] = $params['sort'];
        }
        $field = 'dd.horizontal as horizontal_x,dd.horizontalY as horizontal_y,dd.vertical as vertical_z,dd.reporttime as report_time';
        $tableName = 'reservoir_dam_displacement';
        $total = Db::name($tableName)
            ->alias('dd')
            ->field($field)
            ->where($where)
            ->count();
        if ($total > 0){
            $list = Db::name($tableName)
                ->alias('dd')
                ->field($field)
                ->where($where)
                ->order($order)
                ->page($params['page'], $params['limit'])
                ->select();
        }
        $result = [
            'total' => $total,
            'list' => $list,
        ];
        $this->success('操作成功', $result);
    }

    /**
     * 添加位移计数据
     */
    public function add(){
        $params = $this->request->param();
        //参数验证
        $validate = Loader::validate($this->validateClass);
        if(!$validate->scene('add')->check($params)){
            $this->error($validate->getError());
        }
        //查询水库是否存在
        $reservoir = ReservoirList::get($params['reservoir_id']);
        if (empty($reservoir)){
            $this->error('水库不存在');
        }
        //查询设备是否存在
        $device = (new Equipment())->where(['deviceId' => $params['number']])->find();
        if (empty($device)){
            $this->error('设备不存在');
        }
        $params['createtime'] = $params['reporttime'] / 1000;
        $model = new \app\admin\model\reservoir\dam\Displacement();
        $res = $model->allowField(true)->insertGetId($params);
        if ($res){
            $this->success('操作成功');
        }
        $this->error('操作失败');
    }

    /**
     * 添加位移计设备
     */
    public function device(){
        $params = $this->request->param();
        if (!isset($params['company_type']) || !in_array($params['company_type'], [1,2,3,4,5])){
            $this->error('设备商参数错误');
        }
        $scene = 'device' . $params['company_type'];
        $params['deviceId'] = empty($params['device_code']) ? '' : $params['device_code'];
        //参数验证
        $validate = Loader::validate($this->validateClass);
        if(!$validate->scene($scene)->check($params)){
            $this->error($validate->getError());
        }
        $params['type'] = 4;
        $params['status'] = '1';
        $params['createtime'] = time();
        $params['report_province_office'] = 0;
        $deviceModel = new ReservoirEquipment();
        $res = $deviceModel->allowField(true)->insertGetId($params);
        if ($res){
            $this->success('操作成功');
        }
        $this->error('操作失败');
    }
}