Rehearsal.php 21.1 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418
<?php

namespace app\api\controller\v7\screen;

use app\admin\model\inspection\Plan;
use app\admin\model\inspection\Project;
use app\admin\model\inspection\Staff;
use app\admin\model\inspection\Warning;
use app\admin\model\inspection\Warningreply;
use app\admin\model\inspection\Workorder;
use app\admin\model\inspection\Workorderdeal;
use app\admin\model\pipes\Line;
use app\admin\model\pipes\Route;
use app\admin\model\pipes\Waterhead;
use app\admin\model\pipes\Well;
use app\common\controller\Api;
use think\Cache;
use think\Db;
use Qiniu\Auth as QAuth;
use Qiniu\Storage\UploadManager;
//允许所有的跨域请求
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: *");
header('Access-Control-Allow-Methods: POST,GET,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
date_default_timezone_set('PRC');

/**
 * 一河五库预演
 * Class Rehearsal
 * @package app\api\controller\v7\screen\Rehearsal
 */
class Rehearsal extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * 1、获取管线所有点位+放水口+泵机的信息
     */
    public function point_list()
    {

        $route_list = Cache::get("screen_route_list");
        if (!$route_list) {
            $route_list = Db::name("pipes_route")->where("deletetime", null)->field("id,route_name")->order("id asc")->select();
            if (!empty($route_list)) {
                foreach ($route_list as $k => $v) {
                    $w = [];
                    $w2 = [];
                    $w3 = [];
                    $w4 = [];
                    $w5 = [];
                    $w6 = [];
                    $point_arr = [];
                    $w["route_id"] = ["=", $v['id']];
                    $line_list = Db::name("pipes_line")->where($w)->where("deletetime", null)->field(
                        "id,line_code,line_material,line_diameter_out,
                    line_thickness,line_diameter_in,line_mileage,line_start_height,
                    line_end_height,line_start_lng,line_start_lat,line_end_lng,line_end_lat")->select();
                    if (!empty($line_list)) {
                        $count_line = count($line_list);
                        $line_mileage = 0;
                        foreach ($line_list as $k2 => $v2) {
                            $point_arr[] = [
                                "code" => $v2["line_code"],
                                "type" => 1,
                                "lng" => $v2['line_start_lng'],
                                "lat" => $v2['line_start_lat'],
                                "height" => $v2['line_start_height'],
                                "line_mileage" => $k2 == 0 ? 0 : $line_mileage,
                                "line_material" => $v2['line_material'],
                                "line_diameter_out" => $v2['line_diameter_out'],
                                "line_thickness" => $v2['line_thickness'],
                                "line_diameter_in" => $v2['line_diameter_in'],
                            ];
                            $line_mileage = $v2['line_mileage'];
                            //查询放水口信息
                            $w2 = [];
                            $w2["well_lng"] = ["=", $v2['line_start_lng']];
                            $w2["well_lat"] = ["=", $v2['line_start_lat']];
                            $well = Db::name("pipes_well")->where($w2)->where("deletetime", null)->field("id,well_code,well_bottom_height,well_lng,well_lat")->order("id desc")->find();
                            if ($well) {
                                $point_arr[] = [
                                    "code" => $well["well_code"],
                                    "type" => 2,
                                    "lng" => $well['well_lng'],
                                    "lat" => $well['well_lat'],
                                    "height" => $well['well_bottom_height'],
                                    "line_mileage" => 0,
                                    "line_material" => "",
                                    "line_diameter_out" => "",
                                    "line_thickness" => "",
                                    "line_diameter_in" => "",
                                ];
                            }

                            //查询泵机信息
                            $w3 = [];
                            $w3["pump_lng"] = ["=", $v2['line_start_lng']];
                            $w3["pump_lat"] = ["=", $v2['line_start_lat']];
                            $pump = Db::name("pipes_pump")->where($w3)->where("deletetime", null)->field("id,pump_code,pump_height,pump_lng,pump_lat")->order("id desc")->find();
                            if ($pump) {
                                $point_arr[] = [
                                    "code" => $pump["pump_code"],
                                    "type" => 3,
                                    "lng" => $pump['pump_lng'],
                                    "lat" => $pump['pump_lat'],
                                    "height" => $pump['pump_height'],
                                    "line_mileage" => 0,
                                    "line_material" => "",
                                    "line_diameter_out" => "",
                                    "line_thickness" => "",
                                    "line_diameter_in" => "",
                                ];
                            }

                            //查询取水坝
                            $w4 = [];
                            $w4["waterhead_type"] = ["=", 3];
                            $w4["waterhead_lng"] = ["=", $v2['line_start_lng']];
                            $w4["waterhead_lat"] = ["=", $v2['line_start_lat']];
                            $intake_dam = Db::name("pipes_waterhead")->where($w4)->where("deletetime", null)->field("id,waterhead_code,water_height,waterhead_lng,waterhead_lat")->order("id desc")->find();
                            if ($intake_dam) {
                                $point_arr[] = [
                                    "code" => $intake_dam["waterhead_code"],
                                    "type" => 4,
                                    "lng" => $intake_dam['waterhead_lng'],
                                    "lat" => $intake_dam['waterhead_lat'],
                                    "height" => $intake_dam['water_height'],
                                    "line_mileage" => 0,
                                    "line_material" => "",
                                    "line_diameter_out" => "",
                                    "line_thickness" => "",
                                    "line_diameter_in" => "",
                                ];
                            }

                            //查询水池
                            $w5 = [];
                            $w5["waterhead_type"] = ["=", 2];
                            $w5["waterhead_lng"] = ["=", $v2['line_start_lng']];
                            $w5["waterhead_lat"] = ["=", $v2['line_start_lat']];
                            $pool = Db::name("pipes_waterhead")->where($w5)->where("deletetime", null)->field("id,waterhead_code,water_height,waterhead_lng,waterhead_lat")->order("id desc")->find();
                            if ($pool) {
                                $point_arr[] = [
                                    "code" => $pool["waterhead_code"],
                                    "type" => 5,
                                    "lng" => $pool['waterhead_lng'],
                                    "lat" => $pool['waterhead_lat'],
                                    "height" => $pool['water_height'],
                                    "line_mileage" => 0,
                                    "line_material" => "",
                                    "line_diameter_out" => "",
                                    "line_thickness" => "",
                                    "line_diameter_in" => "",
                                ];
                            }

                            //查询阀门
                            $w6 = [];
                            $w6["valve_lng"] = ["=", $v2['line_start_lng']];
                            $w6["valve_lat"] = ["=", $v2['line_start_lat']];
                            $valve = Db::name("pipes_valve")->where($w6)->where("deletetime", null)->field("id,valve_code,valve_height,valve_lng,valve_lat")->order("id desc")->find();
                            if ($valve) {
                                $point_arr[] = [
                                    "code" => $valve["valve_code"],
                                    "type" => 6,
                                    "lng" => $valve['valve_lng'],
                                    "lat" => $valve['valve_lat'],
                                    "height" => $valve['valve_height'],
                                    "line_mileage" => 0,
                                    "line_material" => "",
                                    "line_diameter_out" => "",
                                    "line_thickness" => "",
                                    "line_diameter_in" => "",
                                ];
                            }

                            if ($k2 == $count_line - 1) {
                                //最后一个节点
                                $point_arr[] = [
                                    "code" => $v2["line_code"] . "_2",
                                    "type" => 1,
                                    "lng" => $v2['line_end_lng'],
                                    "lat" => $v2['line_end_lat'],
                                    "height" => $v2['line_start_height'],
                                    "line_mileage" => $v2['line_mileage'],
                                    "line_material" => $v2['line_material'],
                                    "line_diameter_out" => $v2['line_diameter_out'],
                                    "line_thickness" => $v2['line_thickness'],
                                    "line_diameter_in" => $v2['line_diameter_in'],
                                ];
                                //查询放水口信息
                                $w2 = [];
                                $w2["well_lng"] = ["=", $v2['line_end_lng']];
                                $w2["well_lat"] = ["=", $v2['line_end_lat']];
                                $well = Db::name("pipes_well")->where($w2)->where("deletetime", null)->field("id,well_code,well_bottom_height,well_lng,well_lat")->order("id desc")->find();
                                if ($well) {
                                    $point_arr[] = [
                                        "code" => $well["well_code"],
                                        "type" => 2,
                                        "lng" => $well['well_lng'],
                                        "lat" => $well['well_lat'],
                                        "height" => $well['well_bottom_height'],
                                        "line_mileage" => 0,
                                        "line_material" => "",
                                        "line_diameter_out" => "",
                                        "line_thickness" => "",
                                        "line_diameter_in" => "",
                                    ];
                                }

                                //查询泵机信息
                                $w3 = [];
                                $w3["pump_lng"] = ["=", $v2['line_end_lng']];
                                $w3["pump_lat"] = ["=", $v2['line_end_lat']];
                                $pump = Db::name("pipes_pump")->where($w3)->where("deletetime", null)->field("id,pump_code,pump_height,pump_lng,pump_lat")->order("id desc")->find();
                                if ($pump) {
                                    $point_arr[] = [
                                        "code" => $pump["pump_code"],
                                        "type" => 3,
                                        "lng" => $pump['pump_lng'],
                                        "lat" => $pump['pump_lat'],
                                        "height" => $pump['pump_height'],
                                        "line_mileage" => 0,
                                        "line_material" => "",
                                        "line_diameter_out" => "",
                                        "line_thickness" => "",
                                        "line_diameter_in" => "",
                                    ];
                                }

                                //查询取水坝
                                $w4 = [];
                                $w4["waterhead_type"] = ["=", 3];
                                $w4["waterhead_lng"] = ["=", $v2['line_end_lng']];
                                $w4["waterhead_lat"] = ["=", $v2['line_end_lat']];
                                $intake_dam = Db::name("pipes_waterhead")->where($w4)->where("deletetime", null)->field("id,waterhead_code,water_height,waterhead_lng,waterhead_lat")->order("id desc")->find();
                                if ($intake_dam) {
                                    $point_arr[] = [
                                        "code" => $intake_dam["waterhead_code"],
                                        "type" => 4,
                                        "lng" => $intake_dam['waterhead_lng'],
                                        "lat" => $intake_dam['waterhead_lat'],
                                        "height" => $intake_dam['water_height'],
                                        "line_mileage" => 0,
                                        "line_material" => "",
                                        "line_diameter_out" => "",
                                        "line_thickness" => "",
                                        "line_diameter_in" => "",
                                    ];
                                }

                                //查询水池
                                $w5 = [];
                                $w5["waterhead_type"] = ["=", 2];
                                $w5["waterhead_lng"] = ["=", $v2['line_end_lng']];
                                $w5["waterhead_lat"] = ["=", $v2['line_end_lat']];
                                $pool = Db::name("pipes_waterhead")->where($w5)->where("deletetime", null)->field("id,waterhead_code,water_height,waterhead_lng,waterhead_lat")->order("id desc")->find();
                                if ($pool) {
                                    $point_arr[] = [
                                        "code" => $pool["waterhead_code"],
                                        "type" => 5,
                                        "lng" => $pool['waterhead_lng'],
                                        "lat" => $pool['waterhead_lat'],
                                        "height" => $pool['water_height'],
                                        "line_mileage" => 0,
                                        "line_material" => "",
                                        "line_diameter_out" => "",
                                        "line_thickness" => "",
                                        "line_diameter_in" => "",
                                    ];
                                }

                                //查询阀门
                                $w6 = [];
                                $w6["valve_lng"] = ["=", $v2['line_end_lng']];
                                $w6["valve_lat"] = ["=", $v2['line_end_lat']];
                                $valve = Db::name("pipes_valve")->where($w6)->where("deletetime", null)->field("id,valve_code,valve_height,valve_lng,valve_lat")->order("id desc")->find();
                                if ($valve) {
                                    $point_arr[] = [
                                        "code" => $valve["valve_code"],
                                        "type" => 6,
                                        "lng" => $valve['valve_lng'],
                                        "lat" => $valve['valve_lat'],
                                        "height" => $valve['valve_height'],
                                        "line_mileage" => 0,
                                        "line_material" => "",
                                        "line_diameter_out" => "",
                                        "line_thickness" => "",
                                        "line_diameter_in" => "",
                                    ];
                                }

                            }

                        }
                    }
                    $route_list[$k]["point_arr"] = $point_arr;
                }
            }
            Cache::set("screen_route_list",$route_list,24*3600);
        }
        $this->success("点位数据获取成功", $route_list);
    }

    /**
     * 2、模型.inp文件上传
     *
     */
    public function fileUpload()
    {
//        file_put_contents("test_upload.log","00:".date("Ymd H:i:s").PHP_EOL,FILE_APPEND);

        if ($this->request->isPost()) {
            $file = request()->file('file');
            $data['oldname'] = request()->post('fileName');
//            file_put_contents("test_upload.log","一:".date("Ymd H:i:s").json_encode($file).PHP_EOL,FILE_APPEND);
//            file_put_contents("test_upload.log","二:".date("Ymd H:i:s").json_encode($data).PHP_EOL,FILE_APPEND);

            if (empty($file)) {
                $this->error('请选择上传文件');
            }

            //移动到框架应用根目录/public/uploads/目录下
            $info = $file->validate(['ext' => 'jpeg,jpg,png,bmp,doc,docx,pdf,ppt,pptx,xls,xlsx,zip,rar,7z,mp3,mp4,mov,inp'])->move(ROOT_PATH . 'public' . DS . 'uploads');
//            file_put_contents("test_upload.log","三:".date("Ymd H:i:s").json_encode($data).PHP_EOL,FILE_APPEND);


            $domain = 'https://qiniu.ynzhsk.cn/';
            $bucket = 'shuiku';
            $auth = new QAuth('Eb_QX9JpdaILVbUx0ChfMfo0AFK-12J-eD0uVy25', 'VeqduMD6UzUvxkAiXc6e2N6w51N_KwppZXT3Kaix');
            // 生成上传Token
            $token = $auth->uploadToken($bucket);

            // 构建 UploadManager 对象
            $uploadMgr = new UploadManager();

            if ($info) {
                $date = date('Ymd', time());
                $filepath = ROOT_PATH . 'public/uploads/' . $date . '/' . $info->getFilename();
                $fname = 'uploads/' . $date . '/' . $info->getFilename();
                list($ret, $err) = $uploadMgr->putFile($token, $fname, $filepath);
                $data['filepath'] = $domain . $ret['key'];
                $data['fileurl'] = '/' . $ret['key'];
                $path = '../public' . $data['fileurl'];
                is_file($path) && unlink($path);//删除服务器上文件

                $this->success('文件上传成功', $data);
            } else {
                //上传失败获取错误信息
//                file_put_contents("test_upload.log","四:".$file->getError().PHP_EOL,FILE_APPEND);

                $this->error($file->getError());
            }
        }
    }


    /**
     * 3、添加模型表单
     */
    public function model_upload()
    {
        ini_set("memory_limit","256M");
        set_time_limit(0);
        $param = $this->request->param();
        if (empty($param['model_name'])) {
            $this->error("模型名称不能为空");
        }
        if (empty($param['model_file'])) {
            $this->error("模型地址不能为空");
        }

        $insert_data = [
            "model_name" => $param['model_name'],
            "intake_dam_num" => $param['intake_dam_num'] ? $param['intake_dam_num'] : 0,
            "pump_num" => $param['pump_num'] ? $param['pump_num'] : 0,
            "pool_num" => $param['pool_num'] ? $param['pool_num'] : 0,
            "valve_num" => $param['valve_num'] ? $param['valve_num'] : 0,
            "line_num" => $param['line_num'] ? $param['line_num'] : 0,
            "point_num" => $param['point_num'] ? $param['point_num'] : 0,
            "model_file" => $param["model_file"],
            "createtime" => time(),
        ];
        $insert_id = Db::name("pipes_rehearsalmodel")->insertGetId($insert_data);
        if (!empty($insert_id)) {
            Db::name("pipes_rehearsalmodeldata")->insertGetId(["model_id" => $insert_id, "sdata" => json_encode($param['sdata'],JSON_UNESCAPED_UNICODE)]);
            $this->success("模型数据录入成功");
        } else {
            $this->error("模型数据录入失败");
        }
    }

    /**
     * 4、获取模型列表
     */
    public function model_list(){
        $list = Db::name('pipes_rehearsalmodel')->order("id desc")->select();
        if(!empty($list)){
            foreach ($list as $k=>$v){
                $list[$k]['model_file'] = full_image_kevin($v['model_file']);
                $list[$k]['data_file'] = full_image_kevin($v['data_file']);
                $list[$k]['mode_pic'] = full_image_kevin($v['mode_pic']);

                $list[$k]["createtime"] = date("Y-m-d H:i:s");
            }
        }
        $this->success("数据获取成功",$list);
    }
}