cqp 3 ヶ月 前
コミット
b77529feda
1 ファイル変更39 行追加10 行削除
  1. 39 10
      app/Service/ReportFormsService.php

+ 39 - 10
app/Service/ReportFormsService.php

@@ -47,10 +47,14 @@ class ReportFormsService extends Service
         $list = [];
         foreach ($orderList as $value){
             if(! isset($list[$value['production_no']])){
+                $value['out_order_no'] = [$value['out_order_no']];
+                $value['id'] = [$value['id']];
                 $list[$value['production_no']] = $value;
             }else{
                 $list[$value['production_no']]['order_quantity'] += $value['order_quantity'];
                 $list[$value['production_no']]['production_quantity'] += $value['production_quantity'];
+                if(! in_array($value['out_order_no'], $list[$value['production_no']]['out_order_no'])) $list[$value['production_no']]['out_order_no'][] = $value['out_order_no'];
+                if(! in_array($value['id'], $list[$value['production_no']]['id'])) $list[$value['production_no']]['id'][] = $value['id'];
             }
         }unset($orderList);
 
@@ -70,21 +74,46 @@ class ReportFormsService extends Service
             }
         }
 
+        $process = [];
+        foreach ($list as $key => $value) {
+            foreach ($detail as $key_son => $value_son) {
+                $process_key = implode('|',$value['id']);
+                foreach ($value['id'] as $item) {
+                    $detail_key = $item . "|";
+                    if (strpos($key_son, $detail_key) !== false) {
+                        $tmp = explode('|', $key_son);
+                        $order_product_id = $tmp[0];
+                        $p_id = $tmp[1];
+
+                        $process_key .= $p_id;
+                        if(isset($process[$process_key])){
+                            $dispatch_count = bcadd($value_son['dispatch_count'], $process[$process_key]['dispatch_count'],3);
+                            $finish_count = bcadd($value_son['finish_count'], $process[$process_key]['finish_count'],3);
+                            $process[$process_key]['dispatch_count'] = $dispatch_count;
+                            $process[$process_key]['finish_count'] = $finish_count;
+                        }else{
+                            $process[$process_key] = [
+                                'dispatch_count' => $value_son['dispatch_count'],
+                                'finish_count' => $value_son['finish_count'],
+                                'process_id' => $p_id
+                            ];
+                        }
+                    }
+                }
+            }
+        }
+
         //返回统计数据
         foreach ($list as $key => $value) {
+            $list[$key]['out_order_no'] = implode(',',$value['out_order_no']);
             $list[$key]['production_time'] = $value['production_time'] ? date('Y-m-d',$value['production_time']) : '';
             $list[$key]['out_order_no_time'] = $value['out_order_no_time'] ? date('Y-m-d',$value['out_order_no_time']) : '';
+            $process_key = implode('|',$value['id']);
 
-            $detail_key = $value['id'] . "|";
-            foreach ($detail as $key_son => $value_son) {
-                if (strpos($key_son, $detail_key) !== false) {
-                    $value_son['production_no'] = $value['production_no'];
-                    $dispatch_count = $value_son['dispatch_count'];
-                    $finish_count = $value_son['finish_count'];
-                    $value_son['dispatch_count'] = $dispatch_count;
-                    $value_son['finish_count'] = $finish_count;
-                    $value_son['rate'] = number_format($value_son['finish_count'] / $value['order_quantity'] * 100, 2);
-                    $list[$key]['process'][] = $value_son;
+            foreach ($process as $k => $v){
+                if (strpos($k,$process_key) !== false) {
+                    $v['rate'] = bcdiv($v['dispatch_count'], $v['finish_count'],2) * 100;
+                    $list[$key]['process'][] = $v;
                 }
             }