Prechádzať zdrojové kódy

add - 统计工程师任务全通过

liugc 11 mesiacov pred
rodič
commit
e4b1a7c705

+ 17 - 0
app/adminapi/controller/master_worker/MasterWorkerServiceOrderController.php

@@ -82,4 +82,21 @@ class MasterWorkerServiceOrderController extends BaseAdminController
     }
 
 
+
+    /**
+     * @notes 删除
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/09/28 15:31
+     */
+    public function behalfVerifiedelete()
+    {
+        $params = request()->post();
+        MasterWorkerServiceOrderLogic::behalfVerifiedelete($params);
+        return $this->success('删除成功', [], 1, 1);
+    }
+
+
+
+
 }

+ 34 - 2
app/adminapi/lists/sale/SaleMasterWorkerLists.php

@@ -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;
+    }
 
 }

+ 20 - 1
app/adminapi/logic/master_worker/MasterWorkerServiceOrderLogic.php

@@ -30,5 +30,24 @@ class MasterWorkerServiceOrderLogic extends BaseLogic
             return false;
         }
     }
-
+    /**
+     * @notes 删除
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2024/09/28 15:31
+     */
+    public static function behalfVerifiedelete(array $params): bool
+    {
+        Db::startTrans();
+        try {
+            MasterWorkerBehalf::where('master_worker_id',$params['master_worker_id'])->delete();
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
 }