StatisticsService.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\Service;
  3. use App\Model\Reminder;
  4. use App\Model\ReminderRecord;
  5. use Illuminate\Support\Facades\DB;
  6. class StatisticsService extends Service
  7. {
  8. public function valueStatisticsCommon($data,$user, $field = []){
  9. $alias_name = 'a';
  10. if(empty($field)) $field = Reminder::$a_field;
  11. $model = Reminder::Clear($user,$data, $alias_name);
  12. $model = $model->from("reminder as {$alias_name}")
  13. ->join('reminder_record as b', function ($join) use ($alias_name) {
  14. $join->on('b.reminder_id', '=', "{$alias_name}.id")
  15. ->where('b.del_time', 0);
  16. })
  17. ->join('reminder_record_details as c', function ($join) {
  18. $join->on('c.reminder_record_id', '=', 'b.id')
  19. ->where('c.del_time', 0);
  20. })
  21. ->where($alias_name . '.del_time',0)
  22. ->select($field)
  23. ->orderby($alias_name . '.id', 'desc');
  24. $alias = 'a.';
  25. if(! empty($data['order_number'])) $model->where($alias . 'order_number', 'LIKE', '%'.$data['order_number'].'%');
  26. if(! empty($data['order_no'])) $model->where($alias . 'order_no', 'LIKE', '%'.$data['order_no'].'%');
  27. if(! empty($data['product_title'])) $model->where($alias . 'product_title', 'LIKE', '%'.$data['product_title'].'%');
  28. if(! empty($data['product_code'])) $model->where($alias . 'product_code', 'LIKE', '%'.$data['product_code'].'%');
  29. if(! empty($data['id'])) $model->whereIn('b.id', $data['id']);
  30. if(isset($data['status'])) $model->where($alias . 'status', $data['status']);
  31. return $model;
  32. }
  33. public function valueStatistics($data,$user){
  34. $model = $this->valueStatisticsCommon($data, $user);
  35. $list = $this->limit($model,'',$data);
  36. $list = $this->valueStatisticsFillData($list);
  37. return [true, $list];
  38. }
  39. public function valueStatisticsFillData($data){
  40. if(empty($data['data'])) return $data;
  41. $emp_2 = (new CustomerSupplyService())->getEmployeeMap(array_unique(array_column($data['data'],'supply_id')),'detail');
  42. foreach ($data['data'] as $key => $value){
  43. $e = $emp_2[$value['supply_id']] ?? [];
  44. $data['data'][$key]['organization_title'] = $e['organization_title'] ?? "";
  45. $data['data'][$key]['supply_title'] = $e[$value['supply_id']] ?? '';
  46. $data['data'][$key]['tl_ways_title'] = ReminderRecord::$tl_way_name[$value['tl_ways']] ?? "";
  47. $data['data'][$key]['tl_result_title'] = ReminderRecord::$tl_result_name[$value['tl_result']] ?? "";
  48. $data['data'][$key]['status_title'] = Reminder::$status_name[$value['status']] ?? "";
  49. $data['data'][$key]['tl_arrived_time'] = $value['tl_arrived_time'] ? date("Y-m-d",$value['tl_arrived_time']): '';
  50. $data['data'][$key]['tl_time'] = $value['tl_time'] ? date("Y-m-d",$value['tl_time']): '';
  51. $data['data'][$key]['days'] = floor(abs($value['tl_time'] - $value['tl_arrived_time']) / 86400);
  52. }
  53. return $data;
  54. }
  55. }