|
|
@@ -18,6 +18,7 @@ namespace app\adminapi\lists\master_worker;
|
|
|
use app\adminapi\lists\BaseAdminDataLists;
|
|
|
use app\common\model\master_worker\MasterWorker;
|
|
|
use app\common\lists\ListsSearchInterface;
|
|
|
+use think\db\Query;
|
|
|
|
|
|
/**
|
|
|
* MasterWorker列表
|
|
|
@@ -51,8 +52,23 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
|
|
|
if (isset($this->params['worker_exp_type']) && !empty($this->params['worker_exp_type'])) {
|
|
|
$where[] = ['mwr.maintain_exp_type', '=', $this->params['worker_exp_type']];
|
|
|
}
|
|
|
+
|
|
|
return $where;
|
|
|
}
|
|
|
+ public function queryHaving()
|
|
|
+ {
|
|
|
+ $having = '';
|
|
|
+ if(isset($this->params['min_work_number']) && is_numeric($this->params['min_work_number'])){
|
|
|
+ $having .= 'work_total >= '.$this->params['min_work_number'];
|
|
|
+ }
|
|
|
+ if(isset($this->params['max_work_number']) && is_numeric($this->params['max_work_number'])){
|
|
|
+ if(!empty($having)){
|
|
|
+ $having .= ' and ';
|
|
|
+ }
|
|
|
+ $having .= 'work_total <= '.$this->params['max_work_number'];
|
|
|
+ }
|
|
|
+ return $having;
|
|
|
+ }
|
|
|
/**
|
|
|
* @notes 获取列表
|
|
|
* @return array
|
|
|
@@ -78,6 +94,7 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
|
|
|
->limit($this->limitOffset, $this->limitLength)
|
|
|
->order(['mw.id' => 'desc'])
|
|
|
->group(['sw.master_worker_id'])
|
|
|
+ ->having($this->queryHaving())
|
|
|
->select()
|
|
|
->toArray();
|
|
|
}
|
|
|
@@ -94,7 +111,13 @@ class MasterWorkerLists extends BaseAdminDataLists implements ListsSearchInterfa
|
|
|
return MasterWorker::alias('mw')
|
|
|
->join('master_worker_register mwr', 'mwr.master_worker_id = mw.id')
|
|
|
->leftJoin('service_work sw','sw.master_worker_id = mw.id and sw.service_status !=4')
|
|
|
- ->where($this->searchWhere)->where($this->queryWhere()) ->group(['sw.master_worker_id'])->count();
|
|
|
+ ->field([
|
|
|
+ 'mw.*',
|
|
|
+ 'SUM(CASE WHEN sw.work_status NOT IN (7,8) THEN 1 ELSE 0 END) work_total'])
|
|
|
+ ->where($this->searchWhere)->where($this->queryWhere())
|
|
|
+ ->group(['sw.master_worker_id'])
|
|
|
+ ->having($this->queryHaving())
|
|
|
+ ->count();
|
|
|
}
|
|
|
|
|
|
}
|