params['property_name']) && !empty($this->params['property_name']) && $where[] = ['c.property_name', 'LIKE', '%'.$this->params['property_name'].'%']; isset($this->params['village_name']) && !empty($this->params['village_name']) && $where[] = ['c.village_name', 'LIKE', '%'.$this->params['village_name'].'%']; isset($this->params['head_name']) && !empty($this->params['head_name']) && $where[] = ['c.head_name', 'LIKE', '%'.$this->params['head_name'].'%']; isset($this->params['head_mobile']) && !empty($this->params['head_mobile']) && $where[] = ['c.head_mobile', '=', $this->params['head_mobile']]; if(isset($this->params['start_month']) && $this->params['start_month']){ $startDateTime = strtotime($this->params['start_month']); $endDateTime = strtotime('+1 month', $startDateTime)-1; $where[] = ['b.finished_time','BETWEEN',[$startDateTime,$endDateTime]]; } return $where; } /** * 获取数据权限 * $this->adminInfo['data_rules'] * province city admin_id sale_group_id sale_id property_head_id */ public function queryDataWhere(){ $where = []; $data_rules = $this->adminInfo['data_rules']; if (isset($data_rules['province']) && !empty($data_rules['province'])) { $where[] = ['province','in' ,$data_rules['province']]; } if (isset($data_rules['city']) && !empty($data_rules['city'])) { $where[] = ['city','in' ,$data_rules['city']]; } if(!empty($where)){ $head_ids = PropertyHead::where($where)->column('id')??[0]; $where = [['a.property_head_id','in' ,$head_ids]]; } return $where; } /** * @notes 获取列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author likeadmin * @date 2024/09/19 14:48 */ public function lists(): array { $res = Db::name('property_order')->alias('a') ->field(['c.id','c.head_name','c.property_name','c.village_name', Db::raw('DATE_FORMAT(FROM_UNIXTIME(b.finished_time), "%Y-%m") AS month_format,COUNT(b.id) as month_num, SUM(b.work_amount) as month_amount') ]) ->leftJoin('service_work b', 'a.work_id = b.id') ->leftJoin('property_head c', 'a.property_head_id = c.id') ->where([['b.service_status','=',3],['b.approval','=',1]]) ->where('b.finished_time','>',0) ->where($this->queryWhere()) ->where($this->queryDataWhere()) ->group('a.property_head_id,month_format') ->limit($this->limitOffset, $this->limitLength) ->select()->toArray(); return $res; } /** * @notes 获取数量 * @return int * @author likeadmin * @date 2024/09/19 14:48 */ public function count(): int { return ServiceWork::where([['work_pay_status','=',2],['approval','=',1]]) ->where('finished_time','>',0) ->where('user_id','>',0) ->where($this->queryWhere()) ->count(); } }