You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wkcrm/application/bi/controller/Examine.php

175 lines
6.2 KiB

<?php
// +----------------------------------------------------------------------
// | Description: 商业智能-审核统计
// +----------------------------------------------------------------------
// | Author: zhi | zhijunfu@5kcrm.com
// +----------------------------------------------------------------------
namespace app\bi\controller;
use app\admin\controller\ApiCommon;
use think\Hook;
use think\Request;
use think\Db;
class Examine extends ApiCommon
{
/**
* 用于判断权限
* @permission 无限制
* @allow 登录用户可访问
* @other 其他根据系统设置
**/
public function _initialize()
{
$action = [
'permission'=>[''],
'allow'=>['statistics','index','excelexport']
];
Hook::listen('check_auth',$action);
$request = Request::instance();
$a = strtolower($request->action());
if (!in_array($a, $action['permission'])) {
parent::_initialize();
}
if (!checkPerByAction('bi', 'oa', 'read')) {
header('Content-Type:application/json; charset=utf-8');
exit(json_encode(['code'=>102,'error'=>'无权操作']));
}
}
/**
* 审核统计列表
*
* @return \think\response\Json
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function statistics()
{
$param = $this->param;
if ($param['type']) {
$timeArr = getTimeByType($param['type']);
$param['start_time'] = $timeArr[0];
$param['end_time'] = $timeArr[1];
} else {
if (!empty($param['start_time'])) $param['start_time'] = strtotime($param['start_time'] . ' 00:00:00');
if (!empty($param['end_time'])) $param['end_time'] = strtotime($param['end_time'] . ' 23:59:59');
}
$examineModel = new \app\bi\model\Examine();
$list = $examineModel->getStatistics($param) ? : [];
return resultArray(['data'=>$list]);
}
/**
* 审核统计详情列表
* @return
*/
public function index()
{
$examineModel = new \app\oa\model\Examine();
$param = $this->param;
$user_id = $param['user_id'];
$category_id = $param['category_id'];
$type = $param['type'];
if (!$user_id || !$category_id) {
return resultArray(['error'=>'参数错误']);
}
//时间
if ($type) {
$timeArr = getTimeByType($type);
$start_time = $timeArr[0];
$end_time = $timeArr[1];
} else {
$start_time = $param['start_time'] ? : strtotime(date('Y-m-d',time()));
$end_time = $param['end_time'] ? : strtotime(date('Y-m-d',time()))+86399;
}
$create_time = array('between',array($start_time,$end_time));
$where = [];
$where['create_user_id'] = $user_id;
$where['check_status'] = ['neq',4];
$where['create_time'] = $create_time;
$where['category_id'] = $category_id;
$sumData = 0;
$categoryName = '普通审批';
switch ($category_id) {
case '2' :
$sumData = db('oa_examine')->where($where)->sum('duration');
$categoryName = '请假审批';
break;
case '3' :
$sumData = db('oa_examine')->where($where)->sum('duration');
$categoryName = '出差审批';
break;
case '4' :
$sumData = db('oa_examine')->where($where)->sum('duration');
$categoryName = '加班审批';
break;
case '5' :
$sumData = db('oa_examine')->where($where)->sum('money');
$categoryName = '差旅报销';
break;
case '6' :
$sumData = db('oa_examine')->where($where)->sum('money');
$categoryName = '借款申请';
break;
default :
$categoryName = db('oa_examine_category')->where(['category_id' => $category_id])->value('title');
break;
}
unset($where['create_time']);
unset($where['create_user_id']);
unset($where['create_user_id']);
$where['check_status'] = 'all';
$where['page'] = $param['page'];
$where['limit'] = $param['limit'];
$where['user_id'] = $user_id;
$where['bi_types'] = 'bi';
$where['between_time'] = array($start_time,$end_time);
$list = $examineModel->getDataList($where);
$data = [];
$data['list'] = $list ? : [];
$data['sumData'] = $sumData;
$data['categoryName'] = $categoryName;
return resultArray(['data'=>$data]);
}
/**
* 统计导出
* @author Michael_xu
* @param
* @return
*/
public function excelExport()
{
$param = $this->param;
$excelModel = new \app\admin\model\Excel();
// 导出的字段列表
$category_list = db('oa_examine_category')->where(['status' => 1,'is_deleted' => ['neq',1]])->field('title,category_id')->select();
$field_list = [];
$field_list[0]['name'] = '员工';
$field_list[0]['field'] = 'realname';
$i = 1;
foreach ($category_list as $k=>$v) {
$field_list[$i]['name'] = strstr($v['title'],'审批') ? str_replace('审批','次数',$v['title']) : $v['title'].'次数';
$field_list[$i]['field'] = 'count_'.$v['category_id'];
$i++;
}
// 文件名
$file_name = '5kcrm_examine_'.date('Ymd');
$excelModel->dataExportCsv($file_name, $field_list, function($list) use ($param){
$examineModel = new \app\bi\model\Examine();
if ($param['type']) {
$timeArr = getTimeByType($param['type']);
$param['start_time'] = $timeArr[0];
$param['end_time'] = $timeArr[1];
}
$list = $examineModel->getStatistics($param);
return $list['userList'];
});
}
}