2023-11-02 13:54:47 +08:00
< ? php
namespace app\adminapi\controller\code ;
use app\adminapi\controller\BaseAdminController ;
use think\facade\Db ;
use think\response\Json ;
class CodeController extends BaseAdminController
{
public function lists () : Json
{
//type=>1-种植户 2-家禽养殖户 3-家畜养殖户 4-水产养殖户
$params = $this -> request -> get ([ 'type' , 'page_no' , 'page_size' ]);
if ( empty ( $params [ 'type' ]) || ! in_array ( $params [ 'type' ],[ 1 , 2 , 3 , 4 ])){
return $this -> fail ( '参数错误' );
}
//设置分页条件
$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' ];
switch ( $params [ 'type' ]) {
case 1 :
$data = Db :: name ( 'farmer_land_crop' ) -> field ( 'id,user_id,source_code as code,crop_variety as kind,crop_brand as breed,ripe_time,seed_time as create_time' )
-> where ( 'flag' , 1 ) -> page ( $pageNo , $pageSize ) -> order ( 'seed_time desc' ) -> select () -> each ( function ( $item ){
if ( ! empty ( $item [ 'ripe_time' ])){
$item [ 'status' ] = '已成熟' ;
} else {
$item [ 'status' ] = '生长中' ;
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
unset ( $item [ 'ripe_time' ]);
return $item ;
}) -> toArray ();
$count = Db :: name ( 'farmer_land_crop' ) -> field ( 'id,' ) -> where ( 'flag' , 1 ) -> count ();
break ;
case 2 :
$data = Db :: name ( 'farmer_poultry_breed' ) -> field ( 'id,user_id,code,kind,breed,status,create_time' )
-> page ( $pageNo , $pageSize ) -> order ( 'create_time desc' ) -> select () -> each ( function ( $item ){
//状态 1-健康 2-产蛋期 3-生病隔离 4-可出栏 5-已出栏
switch ( $item [ 'status' ]) {
case 1 :
$item [ 'status' ] = '健康' ;
break ;
case 2 :
$item [ 'status' ] = '产蛋期' ;
break ;
case 3 :
$item [ 'status' ] = '生病隔离' ;
break ;
case 4 :
$item [ 'status' ] = '可出栏' ;
break ;
case 5 :
$item [ 'status' ] = '已出栏' ;
break ;
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
$count = Db :: name ( 'farmer_poultry_breed' ) -> field ( 'id,' ) -> count ();
break ;
case 3 :
$data = Db :: name ( 'farmer_animal_breed' ) -> field ( 'id,user_id,animal_code as code,animal_kind as kind,animal_breed as breed,animal_status as status,create_time' )
-> page ( $pageNo , $pageSize ) -> order ( 'create_time desc' ) -> select () -> each ( function ( $item ){
//养殖动物状态 1-健康 2-怀孕中 3-生病隔离中 4-可出栏 5-已出栏
switch ( $item [ 'status' ]) {
case 1 :
$item [ 'status' ] = '健康' ;
break ;
case 2 :
$item [ 'status' ] = '怀孕中' ;
break ;
case 3 :
$item [ 'status' ] = '生病隔离' ;
break ;
case 4 :
$item [ 'status' ] = '可出栏' ;
break ;
case 5 :
$item [ 'status' ] = '已出栏' ;
break ;
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
$count = Db :: name ( 'farmer_animal_breed' ) -> field ( 'id,' ) -> count ();
break ;
case 4 :
$data = Db :: name ( 'farmer_pond_breed' ) -> field ( 'id,user_id,source_code as code,kind,breed,create_time' )
-> page ( $pageNo , $pageSize ) -> order ( 'create_time desc' ) -> select () -> each ( function ( $item ){
$item [ 'status' ] = '生长中' ;
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
$count = Db :: name ( 'farmer_pond_breed' ) -> field ( 'id,' ) -> count ();
break ;
default :
$data = [];
$count = 0 ;
}
$url = env ( 'project.worker_domain' ) . '/api/information/farmerInfo' ;
foreach ( $data as $k => $v ) {
$farmer = curl_post ( $url ,[],[ 'user_id' => $v [ 'user_id' ]]);
if ( ! empty ( $farmer ) && $farmer [ 'code' ] == 1 ){
$data [ $k ][ 'address' ] = $farmer [ 'data' ][ 'area_name' ] . $farmer [ 'data' ][ 'street_name' ] . $farmer [ 'data' ][ 'village_name' ] . $farmer [ 'data' ][ 'brigade_name' ] . $farmer [ 'data' ][ 'address' ];
$data [ $k ][ 'captain_name' ] = $farmer [ 'data' ][ 'captain_name' ];
$data [ $k ][ 'group_name' ] = $farmer [ 'data' ][ 'group_name' ];
$data [ $k ][ 'farmer_name' ] = $farmer [ 'data' ][ 'name' ];
}
$data [ $k ][ 'type' ] = $params [ 'type' ];
}
$result = [
'count' => $count ,
'page_no' => $pageNo ,
'page_size' => $pageSize ,
'lists' => $data
];
return $this -> success ( '请求成功' , $result );
}
2023-11-02 16:07:59 +08:00
public function detail () : Json
{
2023-11-02 13:54:47 +08:00
//type=>1-种植户 2-家禽养殖户 3-家畜养殖户 4-水产养殖户
$params = $this -> request -> get ([ 'id' , 'type' ]);
if ( empty ( $params [ 'id' ]) || empty ( $params [ 'type' ]) || ! in_array ( $params [ 'type' ],[ 1 , 2 , 3 , 4 ])){
return $this -> fail ( '参数错误' );
}
2023-11-02 16:07:59 +08:00
//获取数据
switch ( $params [ 'type' ]) {
case 1 :
$data = Db :: name ( 'farmer_land_crop' ) -> field ( 'id,user_id,land_id,source_code as code,crop_variety as kind,crop_brand as breed,ripe_time,seed_time as create_time' ) -> where ( 'id' , $params [ 'id' ]) -> findOrEmpty ();
if ( ! empty ( $data )){
$data [ 'status' ] = ! empty ( $data [ 'ripe_time' ]) ? '已成熟' : '生长中' ;
$data [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'create_time' ]);
unset ( $data [ 'ripe_time' ]);
//获取生长记录
$data [ 'action_lists' ] = Db :: name ( 'farmer_land_crop_record' ) -> field ( 'action_id,action_content,create_time' )
-> where ( 'crop_id' , $data [ 'id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
$action = Db :: name ( 'farmer_action' ) -> where ( 'id' , $item [ 'action_id' ]) -> findOrEmpty ();
if ( ! empty ( $action )){
$item [ 'action_name' ] = $action [ 'name' ];
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
//获取监管记录
$data [ 'check_list' ] = Db :: name ( 'farmer_land_check' ) -> field ( 'check_status,pic,create_time' )
-> where ( 'land_id' , $data [ 'land_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
//1-正常 2-未及时更新生产状况 3-生产状况与实际不符
$item [ 'status' ] = $item [ 'check_status' ] == 1 ? '正常' : ( $item [ 'check_status' ] == 2 ? '未及时更新生产状况' : '生产状况与实际不符' );
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
unset ( $item [ 'check_status' ]);
return $item ;
}) -> toArray ();
unset ( $data [ 'land_id' ]);
}
break ;
case 2 :
$data = Db :: name ( 'farmer_poultry_breed' ) -> field ( 'id,user_id,code,kind,breed,status,create_time' ) -> where ( 'id' , $params [ 'id' ]) -> findOrEmpty ();
if ( ! empty ( $data )){
switch ( $data [ 'status' ]) {
case 1 :
$data [ 'status' ] = '健康' ;
break ;
case 2 :
$data [ 'status' ] = '产蛋期' ;
break ;
case 3 :
$data [ 'status' ] = '生病隔离' ;
break ;
case 4 :
$data [ 'status' ] = '可出栏' ;
break ;
case 5 :
$data [ 'status' ] = '已出栏' ;
break ;
}
$data [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'create_time' ]);
//获取生长记录
$data [ 'action_lists' ] = Db :: name ( 'farmer_poultry_record' ) -> field ( 'action_id,action_content,create_time' )
-> where ( 'user_id' , $data [ 'user_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
$action = Db :: name ( 'farmer_action' ) -> where ( 'id' , $item [ 'action_id' ]) -> findOrEmpty ();
if ( ! empty ( $action )){
$item [ 'action_name' ] = $action [ 'name' ];
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
//获取监管记录
$data [ 'check_list' ] = Db :: name ( 'farmer_poultry_check' ) -> field ( 'check_status,pic,create_time' )
-> where ( 'user_id' , $data [ 'user_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
//1-正常 2-未及时更新生产状况 3-生产状况与实际不符
$item [ 'status' ] = $item [ 'check_status' ] == 1 ? '正常' : ( $item [ 'check_status' ] == 2 ? '未及时更新生产状况' : '生产状况与实际不符' );
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
unset ( $item [ 'check_status' ]);
return $item ;
}) -> toArray ();
}
break ;
case 3 :
$data = Db :: name ( 'farmer_animal_breed' ) -> field ( 'id,user_id,animal_code as code,animal_kind as kind,animal_breed as breed,animal_status as status,create_time' ) -> where ( 'id' , $params [ 'id' ]) -> findOrEmpty ();
if ( ! empty ( $data )){
switch ( $data [ 'status' ]) {
case 1 :
$data [ 'status' ] = '健康' ;
break ;
case 2 :
$data [ 'status' ] = '怀孕中' ;
break ;
case 3 :
$data [ 'status' ] = '生病隔离' ;
break ;
case 4 :
$data [ 'status' ] = '可出栏' ;
break ;
case 5 :
$data [ 'status' ] = '已出栏' ;
break ;
}
$data [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'create_time' ]);
//获取生长记录
$data [ 'action_lists' ] = Db :: name ( 'farmer_animal_record' ) -> field ( 'action_id,action_content,create_time' )
-> where ( 'user_id' , $data [ 'user_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
$action = Db :: name ( 'farmer_action' ) -> where ( 'id' , $item [ 'action_id' ]) -> findOrEmpty ();
if ( ! empty ( $action )){
$item [ 'action_name' ] = $action [ 'name' ];
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
//获取监管记录
$data [ 'check_list' ] = Db :: name ( 'farmer_animal_check' ) -> field ( 'check_status,pic,create_time' )
-> where ( 'user_id' , $data [ 'user_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
//1-正常 2-未及时更新生产状况 3-生产状况与实际不符
$item [ 'status' ] = $item [ 'check_status' ] == 1 ? '正常' : ( $item [ 'check_status' ] == 2 ? '未及时更新生产状况' : '生产状况与实际不符' );
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
unset ( $item [ 'check_status' ]);
return $item ;
}) -> toArray ();
}
break ;
case 4 :
$data = Db :: name ( 'farmer_pond_breed' ) -> field ( 'id,user_id,pond_id,source_code as code,kind,breed,create_time' ) -> where ( 'id' , $params [ 'id' ]) -> findOrEmpty ();
if ( ! empty ( $data )){
$data [ 'status' ] = '生长中' ;
$data [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $data [ 'create_time' ]);
//获取生长记录
$data [ 'action_lists' ] = Db :: name ( 'farmer_pond_record' ) -> field ( 'action_id,action_content,create_time' )
-> where ( 'pond_id' , $data [ 'pond_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
$action = Db :: name ( 'farmer_action' ) -> where ( 'id' , $item [ 'action_id' ]) -> findOrEmpty ();
if ( ! empty ( $action )){
$item [ 'action_name' ] = $action [ 'name' ];
}
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
return $item ;
}) -> toArray ();
//获取监管记录
$data [ 'check_list' ] = Db :: name ( 'farmer_pond_check' ) -> field ( 'check_status,pic,create_time' )
-> where ( 'pond_id' , $data [ 'pond_id' ]) -> order ( 'create_time desc' ) -> limit ( 10 ) -> select () -> each ( function ( $item ){
//1-正常 2-未及时更新生产状况 3-生产状况与实际不符
$item [ 'status' ] = $item [ 'check_status' ] == 1 ? '正常' : ( $item [ 'check_status' ] == 2 ? '未及时更新生产状况' : '生产状况与实际不符' );
$item [ 'create_time' ] = date ( 'Y-m-d H:i:s' , $item [ 'create_time' ]);
unset ( $item [ 'check_status' ]);
return $item ;
}) -> toArray ();
unset ( $data [ 'pond_id' ]);
}
break ;
default :
$data = [];
}
if ( ! empty ( $data )){
$url = env ( 'project.worker_domain' ) . '/api/information/farmerInfo' ;
$farmer = curl_post ( $url ,[],[ 'user_id' => $data [ 'user_id' ]]);
if ( ! empty ( $farmer ) && $farmer [ 'code' ] == 1 ){
$data [ 'address' ] = $farmer [ 'data' ][ 'area_name' ] . $farmer [ 'data' ][ 'street_name' ] . $farmer [ 'data' ][ 'village_name' ] . $farmer [ 'data' ][ 'brigade_name' ] . $farmer [ 'data' ][ 'address' ];
$data [ 'captain_name' ] = $farmer [ 'data' ][ 'captain_name' ];
$data [ 'group_name' ] = $farmer [ 'data' ][ 'group_name' ];
$data [ 'farmer_name' ] = $farmer [ 'data' ][ 'name' ];
}
}
return $this -> success ( '请求成功' , $data );
}
public function landEnv () : Json
{
$params = $this -> request -> get ([ 'user_id' , 'start_time' , 'end_time' ]);
if ( empty ( $params [ 'user_id' ]) || empty ( $params [ 'start_time' ]) || empty ( $params [ 'end_time' ])){
return $this -> fail ( '参数错误' );
}
//获取数据
$data = Db :: name ( 'farmer_land_env_data' ) -> where ( 'user_id' , $params [ '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 = [
2023-11-03 10:46:45 +08:00
[ 'title' => '土地温度' , 'categories' => array_column ( $data , 'create_time' ), 'series' => [[ 'name' => '土地温度' , 'data' => array_column ( $data , 'soil_temp' )]], 'max' => max ( array_column ( $data , 'soil_temp' ))],
[ 'title' => '土地湿度' , 'categories' => array_column ( $data , 'create_time' ), 'series' => [[ 'name' => '土地湿度' , 'data' => array_column ( $data , 'soil_mois' )]], 'max' => max ( array_column ( $data , 'soil_mois' ))],
[ 'title' => '土壤磷含量' , 'categories' => array_column ( $data , 'create_time' ), 'series' => [[ 'name' => '土壤磷含量' , 'data' => array_column ( $data , 'p_content' )]], 'max' => max ( array_column ( $data , 'p_content' ))],
[ 'title' => '土壤氮含量' , 'categories' => array_column ( $data , 'create_time' ), 'series' => [[ 'name' => '土壤氮含量' , 'data' => array_column ( $data , 'n_content' )]], 'max' => max ( array_column ( $data , 'n_content' ))],
[ 'title' => '土壤钾含量' , 'categories' => array_column ( $data , 'create_time' ), 'series' => [[ 'name' => '土壤钾含量' , 'data' => array_column ( $data , 'k_content' )]], 'max' => max ( array_column ( $data , 'k_content' ))],
2023-11-02 16:07:59 +08:00
];
return $this -> success ( '请求成功' , $result );
2023-11-02 13:54:47 +08:00
}
}