新增农户环境监测设备模块接口

This commit is contained in:
weiz 2023-11-02 17:40:56 +08:00
parent 474affde25
commit ea642ce971
1 changed files with 139 additions and 1 deletions

View File

@ -1,10 +1,148 @@
<?php
namespace app\adminapi\controller\device;
use app\adminapi\controller\BaseAdminController;
use think\facade\Db;
use think\response\Json;
class DeviceController extends BaseAdminController
{
public function add(): Json
{
//设备类型 1-土地监测 2-环境监测 3-水质监测
$params = $this->request->post(['device_no','device_type','farmer_phone']);
if(empty($params['device_no']) || empty($params['device_type']) || !in_array($params['device_type'],[1,2,3]) || empty($params['farmer_phone'])){
return $this->fail('参数错误');
}
//获取农户信息
$url = env('project.worker_domain').'/api/information/farmerInfoByPhone';
$farmer = curl_post($url,[],['phone'=>$params['farmer_phone']]);
if(empty($farmer) || $farmer['code'] == 0){
return $this->fail('未找到农户');
}
$result = Db::name('farmer_device')->insert([
'user_id' => $farmer['data']['id'],
'user_name' => $farmer['data']['name'],
'user_phone' => $farmer['data']['phone'],
'user_address' => $farmer['data']['area_name'].$farmer['data']['street_name'].$farmer['data']['village_name'].$farmer['data']['brigade_name'].$farmer['data']['address'],
'code' => $params['device_no'],
'type' => $params['device_type'],
'status' => 1,
'create_time' => time()
]);
return $result ? $this->success('添加成功',[],1,1) : $this->fail('添加失败',[],1,1);
}
public function lists(): Json
{
$params = $this->request->get(['device_no','farmer_name','farmer_phone','page_no','page_size']);
//设置分页条件
$pageNo = empty($params['page_no']) || $params['page_no'] < 0 ? 1 : $params['page_no'];
$pageSize = empty($params['page_size']) || $params['page_size'] < 0 ? 10 : $params['page_size'];
//设置搜索条件
$search = [];
if(!empty($params['device_no'])){
$search[] = ['code','like','%'.$params['device_no'].'%'];
}
if(!empty($params['farmer_name'])){
$search[] = ['user_name','like','%'.$params['farmer_name'].'%'];
}
if(!empty($params['farmer_phone'])){
$search[] = ['user_phone','like','%'.$params['farmer_phone'].'%'];
}
$data = Db::name('farmer_device')->where($search)->page($pageNo,$pageSize)->order('create_time desc')->select()->each(function($item){
$item['create_time'] = date('Y-m-d H:i:s',$item['create_time']);
return $item;
})->toArray();
$count = Db::name('farmer_device')->where($search)->count();
$result = [
'count' => $count,
'page_no' => $pageNo,
'page_size' => $pageSize,
'lists' => $data
];
return $this->success('请求成功',$result);
}
public function detail(): Json
{
$params = $this->request->get(['id']);
if(empty($params['id'])){
return $this->fail('参数错误');
}
$data = Db::name('farmer_device')->where('id',$params['id'])->findOrEmpty();
if(!empty($data)){
$data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
}
return $this->success('请求成功',$data);
}
public function deviceEnvData(): Json
{
$params = $this->request->get(['id','start_time','end_time']);
if(empty($params['id']) || empty($params['start_time']) || empty($params['end_time'])){
return $this->fail('参数错误');
}
$device = $data = Db::name('farmer_device')->where('id',$params['id'])->findOrEmpty();
if(empty($device)){
return $this->fail('未找到相关设备');
}
switch ($device['type']) {
case 1:
//获取数据
$data = Db::name('farmer_land_env_data')->where('user_id',$device['user_id'])->whereBetweenTime('create_time', $params['start_time'], $params['end_time'])->order('id asc')->select()->each(function($item){
$item['create_time'] = date('m-d',$item['create_time']);
return $item;
})->toArray();
if(empty($data)){
return $this->fail('暂无数据');
}
$result = [
['soil_temp' => '土地温度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'soil_temp')],'max'=>max(array_column($data,'soil_temp'))],
['soil_mois' => '土地湿度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'soil_mois')],'max'=>max(array_column($data,'soil_mois'))],
['p_content' => '土壤磷含量','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'p_content')],'max'=>max(array_column($data,'p_content'))],
['n_content' => '土壤氮含量','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'n_content')],'max'=>max(array_column($data,'n_content'))],
['k_content' => '土壤钾含量','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'k_content')],'max'=>max(array_column($data,'k_content'))],
];
break;
case 2:
//获取数据
$data = Db::name('farmer_animal_env_data')->where('user_id',$device['user_id'])->whereBetweenTime('create_time', $params['start_time'], $params['end_time'])->order('id asc')->select()->each(function($item){
$item['create_time'] = date('m-d',$item['create_time']);
return $item;
})->toArray();
if(empty($data)){
return $this->fail('暂无数据');
}
$result = [
['hj_temp' => '环境温度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'hj_temp')],'max'=>max(array_column($data,'hj_temp'))],
['hj_humi' => '环境湿度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'hj_humi')],'max'=>max(array_column($data,'hj_humi'))],
['o_content' => '氧气浓度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'o_content')],'max'=>max(array_column($data,'o_content'))],
['c_content' => '二氧化碳浓度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'c_content')],'max'=>max(array_column($data,'c_content'))],
['light' => '光照强调','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'light')],'max'=>max(array_column($data,'light'))],
['dqy' => '大气压强','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'dqy')],'max'=>max(array_column($data,'dqy'))],
];
break;
case 3:
//获取数据
$data = Db::name('farmer_pond_env_data')->where('user_id',$device['user_id'])->whereBetweenTime('create_time', $params['start_time'], $params['end_time'])->order('id asc')->select()->each(function($item){
$item['create_time'] = date('m-d',$item['create_time']);
return $item;
})->toArray();
if(empty($data)){
return $this->fail('暂无数据');
}
$result = [
['water_temp' => '水温','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'water_temp')],'max'=>max(array_column($data,'water_temp'))],
['ph_content' => '酸碱度','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'ph_content')],'max'=>max(array_column($data,'ph_content'))],
['dissolved_oxygen' => '溶解氧','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'dissolved_oxygen')],'max'=>max(array_column($data,'dissolved_oxygen'))],
['electric_conductivity' => '电导率','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'electric_conductivity')],'max'=>max(array_column($data,'electric_conductivity'))],
['tds' => 'TDS','categories' => array_column($data,'create_time'),'series'=>['name'=>'目标值','data'=>array_column($data,'tds')],'max'=>max(array_column($data,'tds'))],
];
break;
default:
$result = [];
}
return $this->success('请求成功',$result);
}
}