Browse Source

[智价云] 导出更新

tangyuanwang 1 ngày trước cách đây
mục cha
commit
9e53b05b3e

+ 38 - 9
app/Jobs/Manager/Other/ExportLowPriceGoodsJobs.php

@@ -261,12 +261,26 @@ class ExportLowPriceGoodsJobs implements ShouldQueue
             });
         }
         $snapshot_status = $CompanyModel->where(['id' => $low_price_goods_where['company_id']])->value('snapshot_status');
-        $query->chunkById($limit, function ($rows) use ($key_name) {
+        
+        //去重获取所有员工信息
+        $LowPriceGoodsMemberModel = new LowPriceGoodsMemberModel();
+        $subQuery = $query->select('id');
+        $member_list_data = $LowPriceGoodsMemberModel->whereIn('lowprice_product_logid', function ($query1) use ($subQuery) {
+            $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+        })->select(['employee_id','employee_name'])->get()->toArray();
+        $member_list =[];
+        if(!empty($member_list_data)){
+            foreach ($member_list_data as $key => $value) {
+                $member_list[$value['employee_id']] = $value['employee_name'];
+            }
+        }
+
+        $query->chunkById($limit, function ($rows) use ($key_name,$member_list) {
             $result_data = $rows->toArray();
             if (empty($result_data)) {
                 return true;
             }
-            $list_data = $this->processing_responsible_person($result_data);
+            $list_data = $this->processing_responsible_person($result_data,$member_list);
             $list_data_info = Cache::get($key_name) ?: [];
             $list_new_data = !empty($list_data_info) ? array_merge($list_data_info, $list_data) : $list_data;
             Cache::put($key_name, $list_new_data, 60 * 60 * 24);
@@ -288,22 +302,37 @@ class ExportLowPriceGoodsJobs implements ShouldQueue
      * @version 1.0
      * @date 2025-12-17
      */
-    public function processing_responsible_person($result)
+    public function processing_responsible_person($result, $member_list)
     {
-        $LowPriceGoodsMemberModel = new LowPriceGoodsMemberModel();
         if (isset($result) && count($result) > 0) {
             foreach ($result as $key => $value) {
                 //查询第一责任人名称
                 $first_responsible_person = explode(',', $value['first_responsible_person']);
-                $first_responsible_person_name = $LowPriceGoodsMemberModel->where('lowprice_product_logid', $value['id'])->whereIn('employee_id', $first_responsible_person)->pluck('employee_name')->toarray();
-                $result[$key]['first_responsible_person_name'] = $first_responsible_person_name;
+                $first_responsible_person_name = [];
+                foreach ($first_responsible_person as $k => $v) {
+                    if (isset($member_list[$v])) {
+                        $first_responsible_person_name[] = $member_list[$v];
+                    }
+                }
+                $result[$key]['first_responsible_person_name'] = !empty($first_responsible_person_name) ? implode(',', $first_responsible_person_name) : '';
                 //查询责任人名称
                 $responsible_person = explode(',', $value['responsible_person']);
-                $responsible_person_name = $LowPriceGoodsMemberModel->where('lowprice_product_logid', $value['id'])->whereIn('employee_id', $responsible_person)->pluck('employee_name')->toarray();
-                $result[$key]['responsible_person_name'] = $responsible_person_name;
+                $responsible_person_name = [];
+                foreach ($responsible_person as $k => $v) {
+                    if (isset($member_list[$v])) {
+                        $responsible_person_name[] = $member_list[$v];
+                    }
+                }
+                $result[$key]['responsible_person_name'] = !empty($responsible_person_name) ? implode(',', $responsible_person_name) : '';
                 //查询来源责任人名称
                 $source_responsible_person = explode(',', $value['source_responsible_person']);
-                $source_responsible_person_name = $LowPriceGoodsMemberModel->where('lowprice_product_logid', $value['id'])->whereIn('employee_id', $source_responsible_person)->pluck('employee_name')->toarray();
+                $source_responsible_person_name = [];
+                foreach ($source_responsible_person as $k => $v) {
+                    if (isset($member_list[$v])) {
+                        $source_responsible_person_name[] = $member_list[$v];
+                    }
+                }
+                $source_responsible_person_name = !empty($source_responsible_person_name) ? implode(',', $source_responsible_person_name) : '';
                 $result[$key]['source_responsible_person_name'] = $source_responsible_person_name;
             }
         }

+ 37 - 9
app/Jobs/Manager/Other/ExportViolationProductJobs.php

@@ -253,14 +253,27 @@ class ExportViolationProductJobs implements ShouldQueue
                     ->orWhere('source_responsible_person', 'like', "%,$user_id,%");
             });
         }
+        //去重获取所有员工信息
+        $ViolationProductMemberModel = new ViolationProductMemberModel();
+        $subQuery = $query->select('id');
+        $member_list_data = $ViolationProductMemberModel->whereIn('lowprice_product_logid', function ($query1) use ($subQuery) {
+            $query1->select('lowprice_product_logid')->fromSub($subQuery, 'sub1');
+        })->select(['employee_id','employee_name'])->get()->toArray();
+        $member_list =[];
+        if(!empty($member_list_data)){
+            foreach ($member_list_data as $key => $value) {
+                $member_list[$value['employee_id']] = $value['employee_name'];
+            }
+        }
+
         $snapshot_status = $CompanyModel->where(['id'=> $violation_product_where['company_id']])->value('snapshot_status');
-        $query->chunkById($limit, function ($rows) use ($key_name) {
+        $query->chunkById($limit, function ($rows) use ($key_name,$member_list) {
                 $result_data = $rows->toArray();
                 if (empty($result_data)) {
                     return true;
                 }
 
-                $list_data = $this->processing_responsible_person($result_data);
+                $list_data = $this->processing_responsible_person($result_data,$member_list);
                 $list_data_info = Cache::get($key_name) ?: [];
                 $list_new_data = !empty($list_data_info) ? array_merge($list_data_info, $list_data) : $list_data;
                 Cache::put($key_name, $list_new_data, 60 * 60 * 24);
@@ -282,22 +295,37 @@ class ExportViolationProductJobs implements ShouldQueue
      * @version 1.0
      * @date 2025-12-17
      */
-    public function processing_responsible_person($result)
+    public function processing_responsible_person($result, $member_list)
     {
-        $ViolationProductMemberModel = new ViolationProductMemberModel();
         if (isset($result) && count($result) > 0) {
             foreach ($result as $key => $value) {
                 //查询第一责任人名称
                 $first_responsible_person = explode(',', $value['first_responsible_person']);
-                $first_responsible_person_name = $ViolationProductMemberModel->where('violation_product_logid',$value['id'])->whereIn('employee_id', $first_responsible_person)->pluck('employee_name')->toarray();
-                $result[$key]['first_responsible_person_name'] = $first_responsible_person_name;
+                $first_responsible_person_name = [];
+                foreach ($first_responsible_person as $k => $v) {
+                    if (isset($member_list[$v])) {
+                        $first_responsible_person_name[] = $member_list[$v];
+                    }
+                }
+                $result[$key]['first_responsible_person_name'] = !empty($first_responsible_person_name) ? implode(',', $first_responsible_person_name) : '';
                 //查询责任人名称
                 $responsible_person = explode(',', $value['responsible_person']);
-                $responsible_person_name = $ViolationProductMemberModel->where('violation_product_logid',$value['id'])->whereIn('employee_id', $responsible_person)->pluck('employee_name')->toarray();
-                $result[$key]['responsible_person_name'] = $responsible_person_name;
+                $responsible_person_name = [];
+                foreach ($responsible_person as $k => $v) {
+                    if (isset($member_list[$v])) {
+                        $responsible_person_name[] = $member_list[$v];
+                    }
+                }
+                $result[$key]['responsible_person_name'] = !empty($responsible_person_name) ? implode(',', $responsible_person_name) : '';
                 //查询来源责任人名称
                 $source_responsible_person = explode(',', $value['source_responsible_person']);
-                $source_responsible_person_name = $ViolationProductMemberModel->where('violation_product_logid',$value['id'])->whereIn('employee_id', $source_responsible_person)->pluck('employee_name')->toarray();
+                $source_responsible_person_name = [];
+                foreach ($source_responsible_person as $k => $v) {
+                    if (isset($member_list[$v])) {
+                        $source_responsible_person_name[] = $member_list[$v];
+                    }
+                }
+                $source_responsible_person_name = !empty($source_responsible_person_name) ? implode(',', $source_responsible_person_name) : '';
                 $result[$key]['source_responsible_person_name'] = $source_responsible_person_name;
             }
         }