nk-lihaink-cn/app/api/controller/Statistics.php
2023-01-19 02:36:01 +00:00

472 lines
18 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\controller;
use app\common\controller\Api;
use think\Exception;
use think\facade\Cache;
use think\facade\Db;
use think\exception\ValidateException;
use app\common\model\User;
use app\common\model\PersonalNews;
use app\common\model\PersonalComment;
use app\common\model\UserAddress;
use app\admin\model\InformationUsermsg;
use app\admin\model\Article;
//use think\middleware\Throttle;
/**
* 数据大屏接口.
*/
class Statistics extends Api
{
//如果$noNeedLogin为空表示所有接口都需要登录才能请求
//如果$noNeedRight为空表示所有接口都需要验证权限才能请求
//如果接口已经设置无需登录,那也就无需鉴权了
//
// 无需登录的接口,*表示全部
protected $noNeedLogin = ['*'];
// 无需鉴权的接口,*表示全部
protected $noNeedRight = ['*'];
// protected $middleware = [
// Throttle::class
// ];
//人口构成80岁以上、61-80岁、36-60岁、18-35岁、0-17岁
public function get_people($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 80岁以上
$num1 = InformationUsermsg::where($where)->whereAge('>', 80)->count();
//61-80岁
$num2 = InformationUsermsg::where($where)->whereAge('<=', 80)->whereAge('>', 60)->count();
//36-60岁
$num3 = InformationUsermsg::where($where)->whereAge('<=', 60)->whereAge('>=', 36)->count();
//18-35岁
$num4 = InformationUsermsg::where($where)->whereAge('<', 36)->whereAge('>', 17)->count();
//0-17岁
$num5 = InformationUsermsg::where($where)->whereAge('<', 18)->count();
$return = [
['value'=>$num1,'name'=>'80岁以上'],
['value'=>$num2,'name'=>'61-80岁'],
['value'=>$num3,'name'=>'36-60岁'],
['value'=>$num4,'name'=>'18-35岁'],
['value'=>$num5,'name'=>'0-17岁']
];
$this->success('获取成功',$return);
}
//人群关爱(特困人员、高龄老人、低保人员、空巢老人、残疾人员、留守儿童)
public function get_people2($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 特困人员
$num1 = InformationUsermsg::where($where)->whereAge('>', 80)->count();
//高龄老人
$num2 = InformationUsermsg::where($where)->whereAge('>', 80)->count();
//空巢老人
$num4 = InformationUsermsg::where($where)->whereAge('<=', 80)->whereAge('>', 60)->count();
//留守儿童
$num6 = InformationUsermsg::where($where)->whereAge('<', 18)->count();
foreach ($where as $key =>$value){
$where[$key][0] = 'm.'.$value[0];
}
//低保人员
$num3 = Db::name('szxc_information_usermsg')
->alias('m')
->where($where)
->join('szxc_information_insurance i','m.user_id=i.user_id and i.insurance_type!=219')->count();
//残疾人员
$num5 = Db::name('szxc_information_usermsg')
->alias('m')
->where($where)
->join('szxc_information_insurance i','m.user_id=i.user_id and i.whether_disabled!=112')->count();
$return = [
['value'=>$num1,'name'=>'特困人员'],
['value'=>$num2,'name'=>'高龄老人'],
['value'=>$num3,'name'=>'空巢老人'],
['value'=>$num4,'name'=>'留守儿童'],
['value'=>$num5,'name'=>'低保人员'],
['value'=>$num6,'name'=>'残疾人员']
];
$this->success('获取成功',$return);
}
//事项办理(待办事项、延期待办、总计办理、办理结率)
public function get_num($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['county', '=', $area_id];
}
if ($street_id){
$where[] = ['township', '=', $street_id];
}
if ($village_id){
$where[] = ['village', '=', $village_id];
}
$model = new Article();
// 待办事项
$shuqiu = $model->where('is_solve', 0)->where($where)->where('category_id', 'in',[165,150,149,148,147])->whereTime('end_time','>', date('Y-m-d h:i:s'))->count();
// 延期待办
$time = $model->where('is_solve', 0)->where($where)->where('category_id', 'in',[165,150,149,148,147])->whereTime('end_time','<=', date('Y-m-d h:i:s'))->count();
// 总计办理
$is_solve = $model->where('is_solve', 1)->where($where)->count();
if($is_solve){
// 办理结率
$num4 = ($is_solve-$shuqiu-$time)/$is_solve;
}else{
$num4 = 0;
}
$num4 = round($num4*100,2).'%';
$return = [
['value'=>$shuqiu,'name'=>'待办事项'],
['value'=>$time,'name'=>'延期待办'],
['value'=>$is_solve,'name'=>'总计办理'],
['value'=>$num4,'name'=>'办理结率']
];
$this->success('获取成功',$return);
}
//资产情况(总耕地面积、人均耕地面积、退林还耕面积、种植物种类、养殖物种类)
public function get_num2($area_id=0,$street_id=0,$village_id=0){
$where = $map = [];
if ($area_id){
$where[] = ['b.area_id', '=', $area_id];
$map[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['b.street_id', '=', $street_id];
$map[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['b.village_id', '=', $village_id];
$map[] = ['village_id', '=', $village_id];
}
// 总耕地面积
$num1 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where($where)->sum('land_area');
//人均耕地面积
$all = InformationUsermsg::where($map)->whereStatus('=', 1)->count();
if($all){
$num2 = $num1/$all;
}else{
$num2 = 0;
}
//退林还耕面积
$num3 = $num1*0.3;
//种植物种类
$num4 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where($where)->column('crops_msg');
$a = 0;
foreach ($num4 as $k=>$v){
$v = json_decode($v,true);
$v = array_filter(array_column($v,'name'));
$v = array_filter($v);
$a = $a + count($v);
}
$num4 = $a;
//养殖物种类
$num5 = 12;
$return = [
['value'=>$num1,'name'=>'总耕地面积'],
['value'=>$num2,'name'=>'人均耕地面积'],
['value'=>$num3,'name'=>'退林还耕面积'],
['value'=>$num4,'name'=>'种植物种类'],
['value'=>$num5,'name'=>'养殖物种类']
];
$this->success('获取成功',$return);
}
//消费数据(农资消费总计、食品消费总计、衣着消费总计、居住消费总计、生活用品及服务总计、交通通信总计、教育文化娱乐总计、医疗服务总计)
public function get_num3($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 农资消费总计
$num1 = 3687;
// 食品消费总计
$num2 = 42222;
// 衣着消费总计
$num3 = 25841;
// 居住消费总计
$num4 = 84511;
// 生活用品及服务总计
$num5 = 4254;
// 交通通信总计
$num6 = 12631;
// 教育文化娱乐总计
$num7 = 8571;
//医疗服务总计
$num8 = 63541;
$return = [
['value'=>$num1,'name'=>'农资消费总计'],
['value'=>$num2,'name'=>'食品消费总计'],
['value'=>$num3,'name'=>'衣着消费总计'],
['value'=>$num4,'name'=>'居住消费总计'],
['value'=>$num5,'name'=>'生活用品及服务总计'],
['value'=>$num6,'name'=>'交通通信总计'],
['value'=>$num7,'name'=>'教育文化娱乐总计'],
['value'=>$num8,'name'=>'医疗服务总计']
];
$this->success('获取成功',$return);
}
//收入构成(工资性收入、生产经营性收入、财产性收入、保险性收入)
public function get_num4($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 工资性收入
$num1 = 12;
// 生产经营性收入
$num2 = 123;
// 财产性收入
$num3 = 124;
// 保险性收入
$num4 = 125;
$return = [
['value'=>$num1,'name'=>'工资性收入'],
['value'=>$num2,'name'=>'生产经营性收入'],
['value'=>$num3,'name'=>'财产性收入'],
['value'=>$num4,'name'=>'保险性收入']
];
$this->success('获取成功',$return);
}
//土地性质(园地
//耕地
//林地
//牧草地
//养殖
//坑塘
//农田水利设施用地)
public function get_num5($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['b.area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['b.street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['b.village_id', '=', $village_id];
}
// 总耕地面积
$num1 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',70)->where($where)->sum('land_area');
//园地
$num2 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',69)->where($where)->sum('land_area');
//林地
$num3 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',214)->where($where)->sum('land_area');
//牧草地
$num4 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',215)->where($where)->sum('land_area');
//养殖
$num5 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',216)->where($where)->sum('land_area');
//坑塘
$num6 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',217)->where($where)->sum('land_area');
//农田水利设施用地
$num7 = Db::name('szxc_information_planting')->alias('a')->join('szxc_information_usermsg b','a.user_id = b.user_id')->where('nature_of_land',218)->where($where)->sum('land_area');
$return = [
['value'=>$num1,'name'=>'耕地面积'],
['value'=>$num2,'name'=>'园地'],
['value'=>$num3,'name'=>'林地'],
['value'=>$num4,'name'=>'牧草地'],
['value'=>$num5,'name'=>'养殖'],
['value'=>$num6,'name'=>'坑塘'],
['value'=>$num7,'name'=>'农田水利设施用地']
];
$this->success('获取成功',$return);
}
//文化程度(
//文盲及半文盲
//小学
//初中
//高中/技校/中专
//大学专科及以上
//不详)
public function get_num6($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 文盲及半文盲
$num1 = Db::name('szxc_information_usermsg')->where('education',71)->where($where)->count();
//小学
$num2 = Db::name('szxc_information_usermsg')->where('education',72)->where($where)->count();
//初中
$num3 = Db::name('szxc_information_usermsg')->where('education',73)->where($where)->count();
//高中/技校/中专
$num4 = Db::name('szxc_information_usermsg')->where('education',74)->where($where)->count();
//大学专科及以上
$num5 = Db::name('szxc_information_usermsg')->where('education',75)->where($where)->count();
//不详
$num6 = Db::name('szxc_information_usermsg')->where('education',76)->where($where)->count();
$return = [
['value'=>$num1,'name'=>'文盲及半文盲'],
['value'=>$num2,'name'=>'小学'],
['value'=>$num3,'name'=>'初中'],
['value'=>$num4,'name'=>'高中/技校/中专'],
['value'=>$num5,'name'=>'大学专科及以上'],
['value'=>$num6,'name'=>'不详'],
];
$this->success('获取成功',$return);
}
//政治面貌(
//群众
//团员
//党员
//预备役)
public function get_num7($area_id=0,$street_id=0,$village_id=0){
$where = [];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 群众
$num1 = Db::name('szxc_information_usermsg')->where('political_outlook',2)->where($where)->count();
//团员
$num2 = Db::name('szxc_information_usermsg')->where('political_outlook',3)->where($where)->count();
//党员
$num3 = Db::name('szxc_information_usermsg')->where('political_outlook',4)->where($where)->count();
//预备役
$num4 = Db::name('szxc_information_usermsg')->where('political_outlook',177)->where($where)->count();
$return = [
['value'=>$num1,'name'=>'群众'],
['value'=>$num2,'name'=>'团员'],
['value'=>$num3,'name'=>'党员'],
['value'=>$num4,'name'=>'预备役'],
];
$this->success('获取成功',$return);
}
//优秀村民
public function get_num8($area_id=0,$street_id=0,$village_id=0){
$where[] = ['user_id','in','1,3,5'];
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
// 群众
$return = Db::name('szxc_information_usermsg')
->field('name,age,address_name as address,gender')
->where($where)
->withAttr('gender', function ($value, $data) {
if($value == 1){
return '男';
}elseif($value == 2){
return '女';
}else{
return '暂无';
}
})
->select();
$this->success('获取成功',$return);
}
//是否参保
public function get_num9($area_id=0,$street_id=0,$village_id=0){
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
$return = [
['yi'=>346],
['wei'=>30],
['type' => [['value'=>30,'name'=>'未参保'],
['value'=>60,'name'=>'低保'],
['value'=>45,'name'=>'城乡居民基本医保'],
['value'=>77,'name'=>'新农合'],
['value'=>82,'name'=>'城镇居民医保'],
['value'=>62,'name'=>'职工医保'],
['value'=>20,'name'=>'其他']]
]
];
$this->success('获取成功',$return);
}
//农业结构
public function get_num10($area_id=0,$street_id=0,$village_id=0){
if ($area_id){
$where[] = ['area_id', '=', $area_id];
}
if ($street_id){
$where[] = ['street_id', '=', $street_id];
}
if ($village_id){
$where[] = ['village_id', '=', $village_id];
}
$return = [
['value'=>135,'name'=>'萝卜'],
['value'=>24,'name'=>'白菜'],
['value'=>87,'name'=>'芋头'],
['value'=>51,'name'=>'地瓜'],
['value'=>102,'name'=>'土豆'],
['value'=>24,'name'=>'山药'],
];
$this->success('获取成功',$return);
}
}