Isotonic.php
6.0 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
<?php
/**
* Created by PhpStorm.
* User: yrf
* Date: 2022/4/3
* Time: 9:24
* ResvRaninDate
* 水库安全运行监测大屏接口
*
*/
namespace app\api\controller\safeoperation;
use app\common\controller\Api;
use fast\Tree;
use think\Db;
use think\Request;
/**
* 渗压
*/
class Isotonic extends Api
{
protected $id;
protected $noNeedLogin = ['*'];
protected $noNeedRight = ['*'];
protected $model = null;
public function _initialize()
{
$this->id = $this->request->param('id');
if (!$this->id) {
$this->error("id不能为空");
}
parent::_initialize();
}
/**
* 1. 渗压分析
*/
public function analyse()
{
$isotonic_max = Db::name("reservoir_dam_isotonic")->where("reservoir_id", $this->id)->whereTime("createtime", "today")->max("value");
$isotonic_min = Db::name("reservoir_dam_isotonic")->where("reservoir_id", $this->id)->whereTime("createtime", "today")->min("value");
$data = [
"max" => ["name" => "渗压最大值", "value" => $isotonic_max],
"min" => ["name" => "渗压最小值", "value" => $isotonic_min]
];
$this->success('请求成功', $data);
}
/**
* 2. 渗压报告
*/
public function report()
{
$return_data = [
"head" => ["水库名称", "设备名称", "渗压(k/pa)", "采集时间"],
"list" => []
];
$where = [];
$where = [
"i.reservoir_id" => $this->id,
];
$data = Db::name("reservoir_dam_isotonic")->alias("i")
->join("reservoir_list l", "l.id=i.reservoir_id", "LEFT")
->join("reservoir_equipment e", "e.deviceId=i.equipment_id", "LEFT")
->where($where)
->field('l.name as reservoir_name,e.name as equipment_name,i.value,from_unixtime(i.createtime,"%m-%d %H:%i") as createtime')
->order("i.id desc")
->limit(30)
->select();
if (!empty($data)) {
foreach ($data as $k => $v) {
$eptname = explode($v['reservoir_name'], $v['equipment_name']);
$v['equipment_name'] = $v['equipment_name'];//$eptname[1];
$return_data["list"][$k] = array_values($v);
}
}
$this->success("", $return_data);
}
/**
* 3. 当前渗压监测
* reservoir_list 水库表
* reservoir_equipment 硬件表
* reservoir_dam_isotonic 渗压表
*/
public function current_data()
{
$where = [];
$where = [
"r.id" => $this->id,//水库id
"e.type" => 3 //硬件类型:1=水位计,2=渗流计,3=渗压计,4=GNSS,5=雨量计,6=位移检测,7=其他
];
//水库硬件设备
$data = Db::name("reservoir_list")->alias("r")
->join("reservoir_equipment e", "e.reservoir_id = r.id", "LEFT")
->where($where)
->field("e.status,e.deviceId,e.name as equip_name")
->order("e.id desc")
->select();
if (!empty($data)) {
foreach ($data as $k => $v) {
$reservoir_threshold=Db::name("reservoir_threshold")->where("deviceId",$data[$k]['deviceId'])->find();
$threshold_data=json_decode($reservoir_threshold['config'],true);
$threshold_array=explode(",",$threshold_data['value']);
$data[$k]['threshold']=$threshold_array[0];
//在线不在线
$data[$k]["status_text"] = $v['status'] == 1 ? "在线" : "离线";
unset($data[$k]['status']);
//最新一条渗压数据
$data[$k]["current_value"] = Db::name("reservoir_dam_isotonic")->where(["equipment_id" => $v['deviceId'], "reservoir_id" => $this->id])->order("createtime desc")->value("water_elevation");
//最近七天最后一条数据
$date = [];
$date_value = [];
for ($i = 0; $i < 7; $i++) {
$beginTime = mktime(00, 00, 00, date('m'), date('d') - $i, date('Y'));
$endTime = mktime(23, 59, 59, date("m"), date("d") - $i, date("Y"));
array_push($date, date("m-d", $beginTime));
$rr = "";
$wh["reservoir_id"] = ["eq", $this->id];
$wh["equipment_id"] = ["eq", $v['deviceId']];
$wh["createtime"] = ["between", [$beginTime, $endTime]];
$rr = Db::name("reservoir_dam_isotonic")->where($wh)->order("createtime desc")->value("water_elevation");
array_push($date_value, $rr);
}
$data[$k]['date'] = $date;
$data[$k]['date_value'] = $date_value;
}
}
$this->success("数据获取成功", $data);
}
/**
* 4. 渗流报告
*/
public function shenliu_report()
{
$return_data = [
"head" => ["设备名称", "渗流(L/s)", "采集时间"],
"list" => []
];
$where = [];
$where = [
"i.reservoir_id" => $this->id,
];
$data = Db::name("reservoir_dam_seepage")->alias("i")
->join("reservoir_list l", "l.id=i.reservoir_id", "LEFT")
->join("reservoir_equipment e", "e.deviceId=i.equipment_id", "LEFT")
->where($where)
->field('l.name as reservoir_name,e.name as equipment_name,i.value,from_unixtime(i.createtime,"%m-%d %H:%i") as createtime')
->order("i.id desc, i.createtime desc")
->limit(30)
->select();
if (!empty($data)) {
foreach ($data as $k => $v) {
$eptname = explode($v['reservoir_name'], $v['equipment_name']);
$v['equipment_name'] = $v['equipment_name'];//$eptname[1];
unset($v["reservoir_name"]);
$return_data["list"][$k] = array_values($v);
}
}
$this->success("", $return_data);
}
}