|
|
@@ -16,9 +16,11 @@ namespace app\adminapi\lists\sale;
|
|
|
|
|
|
|
|
|
use app\adminapi\lists\BaseAdminDataLists;
|
|
|
+use app\common\model\master_worker\MasterWorker;
|
|
|
use app\common\model\master_worker_register\MasterWorkerRegister;
|
|
|
use app\common\lists\ListsSearchInterface;
|
|
|
use app\common\model\sale\Sale;
|
|
|
+use app\workerapi\logic\MasterWorkerLogic;
|
|
|
use think\facade\Db;
|
|
|
|
|
|
|
|
|
@@ -89,7 +91,7 @@ class SaleMasterWorkerLists extends BaseAdminDataLists implements ListsSearchInt
|
|
|
*/
|
|
|
public function lists(): array
|
|
|
{
|
|
|
- return MasterWorkerRegister::with(['sale'])
|
|
|
+ $list = MasterWorkerRegister::with(['sale'])
|
|
|
->where('sale_id','>',0)
|
|
|
->where($this->searchWhere)
|
|
|
->where($this->queryWhere())
|
|
|
@@ -103,6 +105,25 @@ class SaleMasterWorkerLists extends BaseAdminDataLists implements ListsSearchInt
|
|
|
->group('sale_id')
|
|
|
->limit($this->limitOffset, $this->limitLength)
|
|
|
->select()->toArray();
|
|
|
+
|
|
|
+ // tmp - 统计已完成所有必须任务工程师数
|
|
|
+ $sale_ids = array_column($list,'sale_id');
|
|
|
+ $worker_ids = MasterWorkerRegister::where('sale_id','>',0)->where('worker_id','>',0)
|
|
|
+ ->where('sale_id','in',$sale_ids)
|
|
|
+ ->where($this->searchWhere)
|
|
|
+ ->where($this->queryWhere())
|
|
|
+ ->where($this->queryDataWhere())
|
|
|
+ ->column('worker_id','sale_id');
|
|
|
+ $passes_counts = [];
|
|
|
+ foreach ($worker_ids as $sale_id => $worker_id) {
|
|
|
+ !isset($passes_counts[$sale_id]) && $passes_counts[$sale_id] = 0;
|
|
|
+ $passes_counts[$sale_id] += $this->requiredMasterWorker($worker_id)?1:0;
|
|
|
+ }
|
|
|
+ //dd($passes_counts);
|
|
|
+ foreach ($list as &$item) {
|
|
|
+ $item['passes_count'] = $passes_counts[$item['sale_id']];
|
|
|
+ }
|
|
|
+ return $list;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -141,6 +162,17 @@ class SaleMasterWorkerLists extends BaseAdminDataLists implements ListsSearchInt
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+ public function requiredMasterWorker($master_worker_id): bool
|
|
|
+ {
|
|
|
+ $masterWorker = MasterWorker::where('id',$master_worker_id)->findOrEmpty();
|
|
|
+ if(!$masterWorker->isEmpty()){
|
|
|
+ // 该工程师所有必须任务是否完成
|
|
|
+ $taskRequired = MasterWorkerLogic::taskRequired($master_worker_id,$masterWorker->identity_source);
|
|
|
+ if($masterWorker->audit_state == 1 && $taskRequired){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
}
|