瀏覽代碼

增加工单数量条件

林海涛 1 年之前
父節點
當前提交
fb7d444e59
共有 1 個文件被更改,包括 24 次插入1 次删除
  1. 24 1
      app/adminapi/lists/master_worker/MasterWorkerLists.php

+ 24 - 1
app/adminapi/lists/master_worker/MasterWorkerLists.php

@@ -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();
     }
 
 }