Explorar el Código

封装的报表类方法

gogs hace 1 mes
padre
commit
eb6fb9dcd7
Se han modificado 1 ficheros con 25 adiciones y 12 borrados
  1. 25 12
      app/Service/StatisticService.php

+ 25 - 12
app/Service/StatisticService.php

@@ -529,8 +529,9 @@ class StatisticService extends StatisticCommonService
                 $item_key_list[$key][$rootId]['entrust1_amount'] += $item['amount']*100;
             } elseif ($item['entrust_type'] == 2) {
                 $item_key_list[$key][$rootId]['entrust2_amount'] += $item['amount']*100;
+            }else{
+                $item_key_list[$key][$rootId]['total_amount'] += $item['amount']*100;
             }
-            $item_key_list[$key][$rootId]['total_amount'] += $item['amount']*100;
             //这边需要拿到头部所有的一级费用类型
             if (!isset($type_list[$rootId])) {
                 $type_list[$rootId] = [
@@ -969,23 +970,35 @@ class StatisticService extends StatisticCommonService
         if(! empty($data['state'])) $model->where('state', $data['state']);
 
         $list = $model->get()->toArray();
-        $list = $this->fillEnterpriseRdStatistic($list, $data, $user);
+        if(empty($list)) return [true,[]];
+        $datetime = $list[0]['start_time'];
+        $list = $this->fillEnterpriseRdStatistic($list, $data, $user,$datetime);
 
         return [true, $list];
     }
 
-    private function fillEnterpriseRdStatistic($list, $data, $user){
+    private function fillEnterpriseRdStatistic($list, $data, $user,$time){
         //项目实际支出 项目费用单
-        $expense = ExpenseClaimsDetails::Clear($user, $data);
-        $expense_map = $expense->where('del_time', 0)
-            ->whereIn('item_id', array_unique(array_column($list,'id')))
-            ->selectRaw('item_id, SUM(amount) as total_amount')
-            ->groupBy('item_id')
-            ->pluck('total_amount', 'item_id') // 这一步直接生成 item_id => total_amount 结构
-            ->toArray();
-
+//        $expense = ExpenseClaimsDetails::Clear($user, $data);
+//        $expense_map = $expense->where('del_time', 0)
+//            ->whereIn('item_id', array_unique(array_column($list,'id')))
+//            ->selectRaw('item_id, SUM(amount) as total_amount')
+//            ->groupBy('item_id')
+//            ->pluck('total_amount', 'item_id') // 这一步直接生成 item_id => total_amount 结构
+//            ->toArray();
+        $attendance = $this->employeeAttendanceMonthStatistic(["year"=>date("Y-m-d",$time), "s" => "/api/employeeAttendanceMonthStatistic"],$user);
+        $attendance_key_list = [];
+        foreach ($attendance[1]['list'] as $v){
+            $attendance_key_list[$v['code']] = $v['employee_salary']*100+$v['device_depreciation']*100;
+            foreach ($v['fee_list'] as $vv){
+                $attendance_key_list[$v['code']] += $vv['total_amount']*100;
+                $attendance_key_list[$v['code']] += $vv['entrust1_amount']*100;
+                $attendance_key_list[$v['code']] += $vv['entrust2_amount']*100;
+            }
+        }
+//        dd($attendance_key_list);
         foreach ($list as $key => $value){
-            $list[$key]['actual_expenditure'] = $expense_map[$value['id']] ?? 0;
+            $list[$key]['actual_expenditure'] = round($attendance_key_list[$value['code']]/100,2) ?? 0;
             $start_time = $value['start_time'] ? date('Y-m-d', $value['start_time']) : '';
             $end_time = $value['end_time'] ? date('Y-m-d', $value['end_time']) : '';
             $list[$key]['time_range'] = $start_time . ' ' . $end_time;