suyuan/app/adminapi/controller/code/CodeController.php

308 lines
14 KiB
PHP

<?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);
}
public function detail(): Json
{
//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('参数错误');
}
//获取数据
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 = [
['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'))],
];
return $this->success('请求成功',$result);
}
}